GlusterFS作爲分佈式共享文件系統也用了很多年了,簡單好用,但是一直沒有系統化記錄下來,很是零散。這次趁着Kubernets集成GlusterFS作爲共享存儲,儘量記錄些東西。
GlusterFS操作記錄(1) GlusterFS簡述
GlusterFS操作記錄(2) GlusterFS存儲卷類型介紹
GlusterFS操作記錄(3) GlusterFS架構介紹
GlusterFS操作記錄(4) GlusterFS快速安裝部署配置
GlusterFS操作記錄(5) GlusterFS+Heketi配置(獨立部署)
GlusterFS操作記錄(6) GlusterFS+Heketi在Kubernets上的集成配置
GlusterFS簡單配置
部署一個可用的GlusterFS集羣很簡單,產線使用可以根據應用場景進行調優。這裏記錄簡單的安裝過程進行體驗。之後可以閱讀研究Gluster的admin Guide文檔學習研究如果管理GlusterFS以及選擇適合應用場景的卷類型。
部署可以手動命令行一步一步的部署也可以使用其他集成工具或者腳本,例如ansible,可以參考文檔。這裏記錄逐步安裝的方式。 實驗根據官方文檔進行,文檔
1. 準備3個節點,並初始化
主機 | ip地址 | 角色 | 備註 |
---|---|---|---|
gluster-server-1 | 10.99.7.11 | gluster-server | |
gluster-server-2 | 10.99.7.12 | gluster-server | |
gluster-server-2 | 10.99.7.12 | gluster-server | |
gluster-client-1 | 10.99.7.10 | gluster-server | 掛載共享卷 |
初始化包括設置主機名稱,網絡,DNS等等,這裏直接省略了。
配置/etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.99.7.10 gluster-client-1
10.99.7.11 gluster-server-1
10.99.7.12 gluster-server-2
10.99.7.13 gluster-server-3
2. 格式化並掛載磁盤
每個虛擬機主備一塊或者多塊磁盤,並分別格式化,這裏舉例/sdb
parted /dev/sdb -s 'mkpart primary xfs 0% 100%'
mkfs.xfs -i size=512 /dev/sdb1
mkdir -p /data/brick1
# 產線掛載可以使用uuid,或者label,防止磁盤損壞導致磁盤掛載順序混亂
echo '/dev/sdb1 /data/brick1 xfs defaults 1 2' >> /etc/fstab
mount -a && mount
我測試服務器上沒有掛載額外的數據磁盤,直接創建一個目錄使用。
# 每個服務端主機上執行
mkdir -p /data/brick1 #可以創建多個,用於scale測試
3. 安裝glusterFS
gluster根據用戶有很多個組件,這裏簡單安裝有些組件就不配置了。
# 每個服務端主機上執行
yum install centos-release-gluster -y
# 我們選擇5.2版本
yum list glusterfs --showduplicates|sort -r
glusterfs.x86_64 5.2-1.el7 centos-gluster5
glusterfs.x86_64 5.1-1.el7 centos-gluster5
glusterfs.x86_64 5.0-1.el7 centos-gluster5
glusterfs.x86_64 3.12.2-18.el7 base
yum -y install glusterfs-server glusterfs-fuse
systemctl enable glusterd.service
systemctl start glusterd.service
systemctl status glusterd.service
4. 配置防火牆
這裏是簡單安裝測試,沒有深入配置防火牆。可以全部放行,或者直接關閉防火牆
# 直接關閉防火牆
systemctl stop firewalld.service
systemctl disable irewalld.service
5. 配置授信池(將節點加入到集羣)
# 在gluster-server-1上將 2,3加入進來
gluster peer probe gluster-server-2
gluster peer probe gluster-server-3
# 在gluster-server-2或者3上(新版本沒有必要了,之前版本需要時因爲主機名稱解析的問題)
gluster peer probe gluster-server-1
#任意節點
[root@gluster-server-1 ~]# gluster peer status
Number of Peers: 2
Hostname: gluster-server-2
Uuid: 6f32f6d4-9cd7-4b40-b7b6-100054b187f7
State: Peer in Cluster (Connected)
Hostname: gluster-server-3
Uuid: 5669dbef-3f71-4e3c-8fb1-9c6e11c0c434
State: Peer in Cluster (Connected)
以上使用的是主機名稱方式,需要配置hosts文件,也可以使用IP地址方式.後期可以修改文件/var/lib/glusterd/peers/{uuid},添加hostname2或者調換hostname1和2,重啓glusterd生效。
# cat /var/lib/glusterd/peers/5669dbef-3f71-4e3c-8fb1-9c6e11c0c434
uuid=5669dbef-3f71-4e3c-8fb1-9c6e11c0c434
state=3
hostname1=gluster-serever-3
hostname2=10.99.7.13
6. 創建一個存儲卷
gluster volume create volume0 replica 3 gluster-server-1:/data/brick1/volume0 gluster-server-2:/data/brick1/volume0 gluster-server-3:/data//brick1/volume0 force
#備註 這裏使用force參數是因爲我沒有使用掛載磁盤,而是使用的root分區下的一個目錄,不然會報錯
#volume create: volume0: failed: The brick gluster-server-1:/data/brick1/volume0 is being created in the root partition. It is recommended that you don't use the system's root partition for storage backend. Or use 'force' at the end of the command if you want t
gluster volume start volume0
#volume start: volume0: success
gluster volume info
Volume Name: volume0
Type: Replicate
Volume ID: 8936cef1-125b-4689-963c-b558725925bc
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x 3 = 3
Transport-type: tcp
Bricks:
Brick1: gluster-server-1:/data/brick1/volume0
Brick2: gluster-server-2:/data/brick1/volume0
Brick3: gluster-server-3:/data/brick1/volume0
Options Reconfigured:
transport.address-family: inet
nfs.disable: on
performance.client-io-threads: off
7. 配置客戶端,測試存儲卷
yum install centos-release-gluster -y
yum -y install glusterfs glusterfs-fuse
mkdir /volume0
mount -t glusterfs gluster-server-1:/volume0 /volume0
[root@gluster-client-1 glusterfs]# df -h
...
gluster-server-1:/volume0 100G 2.1G 98G 3% /volume0
[test]
for i in `seq -w 1 100`; do cp -rp /var/log/messages /volume0/copy-test-$i; done
ls -lA /volume0/copy* | wc -l
100
[任意server節點]
備註:因爲我們是3副本模式,只有3個brick,所有每個節點上都能看到全部100個文案
ls -lA /data/brick1/volume0/copy*
到這裏,glusterfs的服務端集羣安裝配置以及客戶端測試已經完成,默認配置的安裝還是很簡單的。