GlusterFS的客户端访问和NFS设置

GlusterFS(https://www.gluster.org/)是一个分布式存储系统,支持多种分布式存储卷类型。GlusterFS支持裸机集群部署和Kubernetes容器部署,客户端能够使用专用客户端驱动mount到主机文件系统,也支持NFS/samba等协议,能够经过网络访问,或者经过kubernetes的service进行访问。html

一、Gluster volume服务设置

首先,检查一下节点的状态,以下:git

supermap@podc01:~/openthings/kubernetes-tools/gluster/tools$ sudo gluster pool list
UUID					Hostname  	State
6dd32f80-4191-4b96-8021-53c241cefa66	10.1.1.204	Connected 
85112a7f-2c6b-4c57-8f6f-636c84232418	10.1.1.234	Connected 
dae26553-62f7-4b32-81c3-c35e527872a9	10.1.1.205	Connected 
7738c78a-ca52-413e-b609-7de9d3208314	10.1.1.202	Connected 
ee69bb6d-ca75-4c05-b423-525523f117f6	10.1.1.193	Connected 
fd4a83ea-0886-4d42-ab86-1aa9be6e154c	10.1.1.112	Connected 
bf976527-e48e-4c97-bfb6-7a4e47aaad31	10.1.1.203	Connected 
f629a751-ec21-4a24-976e-8ae9840628fe	localhost 	Connected

而后,建立volume:github

# Create simple volume: gvz00

gluster volume create gvz00 \
10.1.1.193:/zpool/gvz00 \
10.1.1.234:/zpool/gvz00 \
10.1.1.205:/zpool/gvz00 \
10.1.1.112:/zpool/gvz00 \
force

开启卷gvz00的nfs服务,以下:网络

gluster volume set gvz00 nfs.disable off

注意:分布式

  • 每一个卷的NFS服务须要单独设置。
  • 默认设置为nfs.disable为on,须要设为off。逻辑有点不走寻常路,呵呵。

查看存储卷的状态:工具

sudo gluster volume status

返回信息以下:性能

Status of volume: gvz00
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick 10.1.1.193:/zpool/gvz00               N/A       N/A        N       N/A  
Brick 10.1.1.234:/zpool/gvz00               49153     0          Y       31752
Brick 10.1.1.205:/zpool/gvz00               49153     0          Y       1121 
Brick 10.1.1.112:/zpool/gvz00               49153     0          Y       19786
NFS Server on localhost                     2049      0          Y       24770
NFS Server on 10.1.1.203                    2049      0          Y       89228
NFS Server on 10.1.1.205                    N/A       N/A        N       N/A  
NFS Server on 10.1.1.202                    2049      0          Y       7498 
NFS Server on 10.1.1.234                    2049      0          Y       27221
NFS Server on 10.1.1.204                    N/A       N/A        N       N/A  
NFS Server on 10.1.1.193                    2049      0          Y       24080
NFS Server on 10.1.1.112                    2049      0          Y       25981
 
Task Status of Volume gvz00
------------------------------------------------------------------------------
There are no active volume tasks

若是须要关闭NFS服务,执行以下命令:测试

gluster volume reset disp_vol nfs.disable

二、存储服务的访问

2.1 gluster-client直接访问

须要将Gluster Volume服务挂载为Linux系统存储卷,挂载方式包括:ui

  • 手动挂载,以下:
mkdir /home/supermap/gvz00
sudo mount -t glusterfs 10.1.1.201:/gvz00 /home/supermap/gvz00
  • 自動掛載,编辑/etc/fstab文件,加入:spa

10.1.1.201:/gvz00 /home/supermap/gvz00 glusterfs _netdev,rw,acl 0 0

請特別注意要加上 _netdev 選項。

使用 acl 選項能够在掛載目錄中啟用 POSIX ACL 的支援。

  • 挂载测试:
sudo mount -a
  • 查看卷:
df -h

2.2 挂载NFS Volume

使用 NFS 挂载以前,先肯定rpcbind 已启动:

sudo systemctl start rpcbind
sudo systemctl enable rpcbind
  • 手动挂载,以下:
mkdir /home/supermap/nfs-gvz00

sudo mount -t nfs 10.1.1.201:/gvz00 /home/supermap/nfs-gvz00
  • 自动挂载,编辑/etc/fstab,添加:

10.1.1.201:/gvz00 /home/supermap/nfs-gvz00 nfs _netdev,rw 0 0
  • 挂载测试:
sudo mount -a
  • 查看卷:
df -h

三、数据处理流程

数据写入

Client 使用 NFS 写入数据时,会先将数据传送到挂载的节点,再由该节点写入各个分布式节点的Brick。

数据读取

Client 使用 NFS 读数据时,会先由挂载节点取得数据再传送到Client。

节点漂移和性能

  • 综上所述,对于Kubernetes的Pod使用该存储卷,若是是客户端直接挂载方式不具备迁移性(每一个节点都须要设置挂载目录),NFS方式会存在单点故障和网络瓶颈问题。
  • 使用《Kubernetes中挂载GlusterFS的volume》的方法挂载,能够经过Kubernetes的Service机制将网络数据路由到多个节点,具备可迁移性、消除单点故障。不过,在使用Kubeflow和JupyterHub时,出现了写入故障,提示权限不容许访问(使用Nginx服务,root访问没有问题),须要进一步解决该问题。
  • 使用Heketi能够安装Gluster到kubernetes中托管和自动调度卷(参见《GlusterFS-动态卷快速应用》),不过目前版本发现有一些缺陷,而Gluster.org正在开发一个官方版的Kubernetes支持,在Gluster2中提供,目前还不成熟,须要进行较多的升级操做。

更多参考:

相关文章
相关标签/搜索