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中提供,目前還不成熟,須要進行較多的升級操做。

更多參考:

相關文章
相關標籤/搜索