部署GlusterFS及Heketi


一、前言及環境

  在實踐kubernetes的StateFulSet及各種需要持久存儲的組件和功能時,通常會用到pv的動態供給,這就需要用到支持此類功能的存儲系統了。在各類支持pv動態供給的存儲系統中,GlusterFS的設定比較簡單,且數據安全性比較有保障,相較於ceph和NFS。

環境(gluster-server之間互信):

二、部署GlusterFS

1.分別在三個節點上安裝glusterfs-server程序包,並啟動服務
[root@gluster-server01 ~]# yum clean all && yum makecache fast
[root@gluster-server01 ~]# yum install centos-release-gluster -y
[root@gluster-server01 ~]# yum --enablerepo=centos-gluster*-test install glusterfs-server -y
[root@gluster-server01 ~]# systemctl enable glusterd && systemctl start glusterd
[root@gluster-server01 ~]# systemctl status glusterd #確保服務器啟動成功

#其他兩個節點相同操作

2.在任意一節點發現其他節點,組成GlusterFS集群
[root@gluster-server01 ~]# gluster peer probe gluster-server02 peer probe: success. [root@gluster-server01 ~]# gluster peer probe gluster-server03 peer probe: success. [root@gluster-server01 ~]# gluster peer status Number of Peers: 2 Hostname: gluster-server02 Uuid: 82a98899-550b-466c-80f3-c56b85059e9a State: Peer in Cluster (Connected) Hostname: gluster-server03 Uuid: 9fdb08a3-b5ca-4e93-9701-d49e737f92e8 State: Peer in Cluster (Connected)

三、部署Heketi(gluster-server01上)

Heketi提供了一個RESTful管理界面,可以用來管理GlusterFS卷的生命周期。 通過Heketi,就可以像使用OpenStack Manila,Kubernetes和OpenShift一樣申請可以動態配置GlusterFS卷。Heketi會動態在集群內選擇bricks構建所需的volumes,這樣以確保數據的副本會分散到集群不同的故障域內。同時Heketi還支持任意數量的ClusterFS集群,以保證接入的雲服務器不局限於單個GlusterFS集群。
1.安裝Heketi服務
[root@gluster-server01 ~]# yum install heketi heketi-client  -y
2.配置heketi用戶能夠基於SSH秘鑰認證的方式連接至GlusterFS集群各節點
[root@gluster-server01 ~]# ssh-keygen -f /etc/heketi/heketi_key -t rsa -N '' [root@gluster-server01 ~]# chown heketi:heketi  /etc/heketi/heketi* [root@gluster-server01 ~]# for host in {01..03};do ssh-copy-id -i /etc/heketi/heketi_key.pub root@gluster-server${host}  done
3.heketi的主配置文件/etc/heketi/heketi.json,定義服務監聽的端口、認證及連接Gluster存儲集群的方式
[root@gluster-server01 ~]# cp /etc/heketi/heketi.json /etc/heketi/heketi.json-bak [root@gluster-server01 ~]# cat /etc/heketi/heketi.json { "port": "8080", "use_auth": false, #若要啟動連接Heketi的認證,則需要將user_auth改為true,並在jwt{}段為各用戶設置相應的密碼,用戶名和密碼都可以自定義 "jwt": { "admin": { "key": "My Secret" }, "user": { "key": "My Secret" } }, "glusterfs": { "executor": "ssh", "sshexec": { "keyfile": "/etc/heketi/heketi_key", "user": "root", "port": "22", "fstab": "/etc/fstab" }, "db": "/var/lib/heketi/heketi.db", "loglevel" : "debug" } }
4.啟動heketi服務
[root@gluster-server01 ~]# systemctl enable heketi && systemctl start heketi [root@gluster-server01 ~]# systemctl status heketi
5.向heketi發起測試請求
[root@gluster-server01 ~]# curl http://gluster-server01:8080/hello
Hello from Heketi

四、設置Heketi系統拓撲

拓撲信息用於讓Heketi確認可以使用的節點、磁盤和集群,管理員必須自行確定節點的故障域。故障域是賦予一組節點的整數值,這組節點共享相同的交換機、電源或其他任何會導致它們同時失效的組件。管理員必須確認哪些節點構成一個集群,Heketi使用這些信息來確保跨故障域中創建副本,從而提供數據冗余能力,Heketi支持多個Gluster存儲集群
1、使用客戶端加載預定義的集群拓撲(注意客戶端的版本要與服務端保持一致)

示例:根據當前Gluster集群的實際環境將gluster-server01、gluster-server02、gluster-server03三個節點定義在同一個集群中,並指明各節點用於提供存儲的設備

[root@gluster-server01 heketi]# cat topolgy_demo.json { "clusters": [ { "nodes": [ { "node": { "hostnames": { "manage": [ "192.168.1.107" ], "storage": [ "192.168.1.107" ] }, "zone": 1 }, "devices": [ "/dev/sdb" ] }, { "node": { "hostnames": { "manage": [ "192.168.1.108" ], "storage": [ "192.168.1.108" ] }, "zone": 1 }, "devices": [ "/dev/sdb" ] }, { "node": { "hostnames": { "manage": [ "192.168.1.109" ], "storage": [ "192.168.1.109" ] }, "zone": 1 }, "devices": [ "/dev/sdb" ] } ] } ] }

加載拓撲信息,並添加各節點生成的隨機ID號

[root@gluster-server01 heketi]# echo "export HEKETI_CLI_SERVER=http://gluster-server01:8080" > /etc/profile.d/heketi.sh [root@gluster-server01 heketi]# source /etc/profile.d/heketi.sh [root@gluster-server01 heketi]# echo $HEKETI_CLI_SERVER http://gluster-server01:8080
[root@gluster-server01 heketi]# heketi-cli topology load --json=topolgy_demo.json Creating cluster ... ID: 34be103e76c2254779d3c0dbd029acbd Allowing file volumes on cluster. Allowing block volumes on cluster. Creating node 192.168.1.107 ... ID: 389b66793f41ed74ab30109e8d1faf85 Adding device /dev/sdb ... OK Creating node 192.168.1.108 ... ID: d3bffc39419abfe1a04d2c235f9720f3 Adding device /dev/sdb ... OK Creating node 192.168.1.109 ... ID: 45b7db6cd1cb0405f07ac634a82b9fc9 Adding device /dev/sdb ... OK
2.根據生成的隨機Cluster ID號查看集群狀態信息
[root@gluster-server01 heketi]# heketi-cli cluster info 34be103e76c2254779d3c0dbd029acbd  #注意是第一行的cluster ID Cluster id: 34be103e76c2254779d3c0dbd029acbd Nodes: 389b66793f41ed74ab30109e8d1faf85 45b7db6cd1cb0405f07ac634a82b9fc9 d3bffc39419abfe1a04d2c235f9720f3 Volumes: Block: true File: true
3.創建一個測試使用的存儲卷
[root@gluster-server01 heketi]# heketi-cli volume create --size=5 Name: vol_9f2dde345a9b7566f8134c3952251d7a Size: 5 Volume Id: 9f2dde345a9b7566f8134c3952251d7a Cluster Id: 34be103e76c2254779d3c0dbd029acbd Mount: 192.168.1.107:vol_9f2dde345a9b7566f8134c3952251d7a  #客戶端掛載的地址 Mount Options: backup-volfile-servers=192.168.1.109,192.168.1.108 Block: false Free Size: 0 Reserved Size: 0 Block Hosting Restriction: (none) Block Volumes: [] Durability Type: replicate Distributed+Replica: 3
4.存儲客戶端安裝glusterfs客戶端程序並掛載測試存儲卷(如果有k8s集群,也可以使用k8s來測試)
[root@gluster-client01 ~]# yum clean all && yum makecache fast [root@gluster-client01 ~]# yum install centos-release-gluster -y [root@gluster-client01 ~]# yum --enablerepo=centos-gluster*-test install glusterfs glusterfs-fuse -y [root@gluster-client01 ~]# mount -t glusterfs 192.168.1.107:vol_9f2dde345a9b7566f8134c3952251d7a /mnt #創建volume信息中的Mount信息 [root@gluster-client01 ~]# df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/cl-root                                  17G  2.0G   15G   12% / devtmpfs 330M 0  330M    0% /dev tmpfs 341M 0  341M    0% /dev/shm tmpfs 341M 4.8M  336M    2% /run tmpfs 341M 0  341M    0% /sys/fs/cgroup /dev/sda1                                          1014M  139M  876M   14% /boot tmpfs 69M 0   69M    0% /run/user/0
192.168.1.107:vol_9f2dde345a9b7566f8134c3952251d7a  5.0G   84M  5.0G    2% /mnt
5.測試完成刪除存儲卷命令
[root@gluster-server01 heketi]# heketi-cli volume delete  9f2dde345a9b7566f8134c3952251d7a  #創建信息中的Volume Id

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM