時間:2022-04-15來源:www.outletmksalestore.com作者:電腦系統城
CentOS 7 GlusterFS
3臺機器安裝 GlusterFS 組成一個集群。
使用 docker volume plugin GlusterFS
10.6.0.140
10.6.0.192
10.6.0.196
配置 hosts
10.6.0.140 swarm-manager
10.6.0.192 swarm-node-1
10.6.0.196 swarm-node-2
10.6.0.94 node-94
CentOS 安裝 glusterfs 非常的簡單
在三個節點都安裝glusterfs
1 2 |
yum install centos-release-gluster yum install -y glusterfs glusterfs-server glusterfs-fuseglusterfs-rdma |
啟動 glusterFS
1 2 |
systemctl start glusterd.service systemctl enable glusterd.service |
在 swarm-manager 節點上配置,將 節點 加入到 集群中。
1 2 3 4 5 6 7 8 |
[root@swarm-manager ~] #gluster peer probe swarm-manager peer probe: success. Probe on localhost not needed [root@swarm-manager ~] #gluster peer probe swarm-node-1 peer probe: success. [root@swarm-manager ~] #gluster peer probe swarm-node-2 peer probe: success. |
1 2 3 4 5 6 7 8 9 10 |
[root@swarm-manager ~] #gluster peer status Number of Peers: 2 Hostname: swarm-node-1 Uuid: 41573e8b-eb00-4802-84f0-f923a2c7be79 State: Peer in Cluster (Connected) Hostname: swarm-node-2 Uuid: da068e0b-eada-4a50-94ff-623f630986d7 State: Peer in Cluster (Connected) |
1 2 3 |
[root@swarm-manager ~] #mkdir -p /opt/gluster/data [root@swarm-node-1 ~] # mkdir -p /opt/gluster/data [root@swarm-node-2 ~] # mkdir -p /opt/gluster/data |
1 2 |
[root@swarm-manager ~] #gluster volume info No volumes present |
1 2 |
[root@swarm-manager ~] #gluster volume create models replica 3 swarm-manager:/opt/gluster/data swarm-node-1:/opt/gluster/data swarm-node-2:/opt/gluster/data force volume create: models: success: please start the volume to access data |
一、 默認模式,既DHT, 也叫 分布卷: 將文件已hash算法隨機分布到 一臺服務器節點中存儲。
gluster volume create test-volume server1:/exp1 server2:/exp2
二、 復制模式,既AFR, 創建volume 時帶 replica x 數量: 將文件復制到 replica x 個節點中。
gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2
三、 條帶模式,既Striped, 創建volume 時帶 stripe x 數量: 將文件切割成數據塊,分別存儲到 stripe x 個節點中 ( 類似raid 0 )。
gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2
四、 分布式條帶模式(組合型),最少需要4臺服務器才能創建。 創建volume 時 stripe 2 server = 4 個節點: 是DHT 與 Striped 的組合型。
gluster volume create test-volume stripe 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
五、 分布式復制模式(組合型), 最少需要4臺服務器才能創建。 創建volume 時 replica 2 server = 4 個節點:是DHT 與 AFR 的組合型。
gluster volume create test-volume replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
六、 條帶復制卷模式(組合型), 最少需要4臺服務器才能創建。 創建volume 時 stripe 2 replica 2 server = 4 個節點: 是 Striped 與 AFR 的組合型。
gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4
七、 三種模式混合, 至少需要8臺 服務器才能創建。 stripe 2 replica 2 , 每4個節點 組成一個 組。
gluster volume create test-volume stripe 2 replica 2 transport tcp server1:/exp1 server2:/exp2 server3:/exp3 server4:/exp4 server5:/exp5 server6:/exp6 server7:/exp7 server8:/exp8
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
[root@swarm-manager ~] #gluster volume info Volume Name: models Type: Replicate Volume ID: e539ff3b-2278-4f3f-a594-1f101eabbf1e Status: Created Number of Bricks: 1 x 3 = 3 Transport- type : tcp Bricks: Brick1: swarm-manager: /opt/gluster/data Brick2: swarm-node-1: /opt/gluster/data Brick3: swarm-node-2: /opt/gluster/data Options Reconfigured: performance.readdir-ahead: on |
啟動 models
1 2 |
[root@swarm-manager ~] #gluster volume start models volume start: models: success |
開啟 指定 volume 的配額: (models 為 volume 名稱)
gluster volume quota models enable
限制 models 中 / (既總目錄) 最大使用 80GB 空間
1 2 3 4 5 6 7 8 9 10 11 12 13 |
gluster volume quota models limit-usage / 80GB #設置 cache 4GB gluster volume set models performance.cache-size 4GB #開啟 異步 , 后臺操作 gluster volume set models performance.flush-behind on #設置 io 線程 32 gluster volume set models performance.io-thread-count 32 #設置 回寫 (寫數據時間,先寫入緩存內,再寫入硬盤) gluster volume set models performance.write-behind on |
部署GlusterFS客戶端并mount GlusterFS文件系統 (客戶端必須加入 glusterfs hosts 否則報錯。)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
[root@node-94 ~] #yum install -y glusterfs glusterfs-fuse [root@node-94 ~] #mkdir -p /opt/gfsmnt [root@node-94 ~] #mount -t glusterfs swarm-manager:models /opt/gfsmnt/ [root@node-94 ~] #df -h 文件系統 容量 已用 可用 已用% 掛載點 /dev/mapper/vg001-root 98G 1.2G 97G 2% / devtmpfs 32G 0 32G 0% /dev tmpfs 32G 0 32G 0% /dev/shm tmpfs 32G 130M 32G 1% /run tmpfs 32G 0 32G 0% /sys/fs/cgroup /dev/mapper/vg001-opt 441G 71G 370G 17% /opt /dev/sda2 497M 153M 344M 31% /boot tmpfs 6.3G 0 6.3G 0% /run/user/0 swarm-manager:models 441G 18G 424G 4% /opt/gfsmnt |
DHT 模式 客戶端 創建一個 1G 的文件
1 2 3 4 5 6 7 8 |
[root@node-94 ~] #time dd if=/dev/zero of=hello bs=1000M count=1 記錄了1+0 的讀入 記錄了1+0 的寫出 1048576000字節(1.0 GB)已復制,9.1093 秒,115 MB/秒 real 0m9.120s user 0m0.000s sys 0m1.134s |
AFR 模式 客戶端 創建一個 1G 的文件
1 2 3 4 5 6 7 8 |
[root@node-94 ~] #time dd if=/dev/zero of=hello.txt bs=1024M count=1 錄了1+0 的讀入 記錄了1+0 的寫出 1073741824字節(1.1 GB)已復制,27.4566 秒,39.1 MB/秒 real 0m27.469s user 0m0.000s sys 0m1.065s |
Striped 模式 客戶端 創建一個 1G 的文件
1 2 3 4 5 6 7 8 |
[root@node-94 ~] #time dd if=/dev/zero of=hello bs=1000M count=1 記錄了1+0 的讀入 記錄了1+0 的寫出 1048576000字節(1.0 GB)已復制,9.10669 秒,115 MB/秒 real 0m9.119s user 0m0.001s sys 0m0.953s |
條帶復制卷模式 (Number of Bricks: 1 x 2 x 2 = 4) 客戶端 創建一個 1G 的文件
1 2 3 4 5 6 7 8 |
[root@node-94 ~] #time dd if=/dev/zero of=hello bs=1000M count=1 記錄了1+0 的讀入 記錄了1+0 的寫出 1048576000字節(1.0 GB)已復制,17.965 秒,58.4 MB/秒 real 0m17.978s user 0m0.000s sys 0m0.970s |
分布式復制模式 (Number of Bricks: 2 x 2 = 4) 客戶端 創建一個 1G 的文件
1 2 3 4 5 6 7 8 |
[root@node-94 ~] #time dd if=/dev/zero of=haha bs=100M count=10 記錄了10+0 的讀入 記錄了10+0 的寫出 1048576000字節(1.0 GB)已復制,17.7697 秒,59.0 MB/秒 real 0m17.778s user 0m0.001s sys 0m0.886s |
針對 分布式復制模式還做了如下測試:
4K隨機寫 測試:
安裝 fio (yum -y install libaio-devel (否則運行fio 會報錯engine libaio not loadable, 已安裝需重新編譯,否則一樣報錯))
1 2 3 4 |
[root@node-94 ~] #fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randwrite -size=10G -filename=1.txt -name="EBS 4KB randwrite test" -iodepth=32 -runtime=60 write: io=352204KB, bw=5869.9KB /s , iops=1467, runt= 60002msec WRITE: io=352204KB, aggrb=5869KB /s , minb=5869KB /s , maxb=5869KB /s , mint=60002msec, maxt=60002msec |
4K隨機讀 測試:
1 2 3 4 |
fio -ioengine=libaio -bs=4k -direct=1 -thread -rw=randread -size=10G -filename=1.txt -name= "EBS 4KB randread test" -iodepth=8 -runtime=60 read : io=881524KB, bw=14692KB /s , iops=3672, runt= 60001msec READ: io=881524KB, aggrb=14691KB /s , minb=14691KB /s , maxb=14691KB /s , mint=60001msec, maxt=60001msec |
512K 順序寫 測試:
1 2 3 4 |
fio -ioengine=libaio -bs=512k -direct=1 -thread -rw=write -size=10G -filename=512.txt -name= "EBS 512KB seqwrite test" -iodepth=64 -runtime=60 write: io=3544.0MB, bw=60348KB /s , iops=117, runt= 60135msec WRITE: io=3544.0MB, aggrb=60348KB /s , minb=60348KB /s , maxb=60348KB /s , mint=60135msec, maxt=60135msec |
1. 查看GlusterFS中所有的volume:
1 | [root@swarm-manager ~] #gluster volume list |
2. 刪除GlusterFS磁盤:
1 2 |
[root@swarm-manager ~] #gluster volume stop models #停止名字為 models 的磁盤 [root@swarm-manager ~] #gluster volume delete models #刪除名字為 models 的磁盤 |
注: 刪除 磁盤 以后,必須刪除 磁盤( /opt/gluster/data ) 中的 ( .glusterfs/ .trashcan/ )目錄。
否則創建新 volume 相同的 磁盤 會出現文件 不分布,或者 類型 錯亂 的問題。
3. 卸載某個節點GlusterFS磁盤
1 | [root@swarm-manager ~] #gluster peer detach swarm-node-2 |
4. 設置訪問限制,按照每個volume 來限制
1 | [root@swarm-manager ~] #gluster volume set models auth.allow 10.6.0.*,10.7.0.* |
5. 添加GlusterFS節點:
1 2 |
[root@swarm-manager ~] #gluster peer probe swarm-node-3 [root@swarm-manager ~] #gluster volume add-brick models swarm-node-3:/opt/gluster/data |
注:如果是復制卷或者條帶卷,則每次添加的Brick數必須是replica或者stripe的整數倍
6. 配置卷
1 | [root@swarm-manager ~] # gluster volume set |
7. 縮容volume:
先將數據遷移到其它可用的Brick,遷移結束后才將該Brick移除:
1 | [root@swarm-manager ~] #gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data start |
在執行了start之后,可以使用status命令查看移除進度:
1 | [root@swarm-manager ~] #gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status |
不進行數據遷移,直接刪除該Brick:
1 | [root@swarm-manager ~] #gluster volume remove-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit |
注意,如果是復制卷或者條帶卷,則每次移除的Brick數必須是replica或者stripe的整數倍。
擴容:
gluster volume add-brick models swarm-node-2:/opt/gluster/data
8. 修復命令:
1 | [root@swarm-manager ~] #gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit -force |
9. 遷移volume:
1 2 3 4 5 6 7 8 9 |
[root@swarm-manager ~] #gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data start pause 為暫停遷移 [root@swarm-manager ~] #gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data pause abort 為終止遷移 [root@swarm-manager ~] #gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data abort status 查看遷移狀態 [root@swarm-manager ~] #gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data status 遷移結束后使用commit 來生效 [root@swarm-manager ~] #gluster volume replace-brick models swarm-node-2:/opt/gluster/data swarm-node-3:/opt/gluster/data commit |
10. 均衡volume:
1 2 3 4 5 |
[root@swarm-manager ~] #gluster volume models lay-outstart [root@swarm-manager ~] #gluster volume models start [root@swarm-manager ~] #gluster volume models startforce [root@swarm-manager ~] #gluster volume models status [root@swarm-manager ~] #gluster volume models stop |
到此這篇關于CentOS7安裝GlusterFS集群的文章就介紹到這了,更多相關CentOS7安裝GlusterFS內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!
您可能感興趣的文章:2022-04-19
CentOS8使用阿里云yum源異常問題及解決方法2022-04-15
服務器使用Nginx部署Vue項目教程圖解2022-04-15
idea配置tomcat過程指南圖文詳解. HTTP協議介紹 3. HTTP的消息結構 4. HTTP交互流程 5. 案例代碼: 搭建HTTP服務器 6. 最終運行的效果...
2022-04-15
proxy_pass 代理轉發 root 與 index root 與 alias location 執行過程 rewrite 重定向...
2022-04-15