在CentOS 8上設置GlusterFS分布式複製卷

在本教程中,我們將學習如何在CentOS 8上設置glusterfs分布式複製卷。 糊狀 是一個免費的開源可擴展網絡文件系統,使您可以創建大型的分布式存儲解決方案,以用於媒體流,數據分析以及其他數據和帶寬密集型任務。

在CentOS 8上設置GlusterFS分布式複製卷

先決條件

在繼續之前,請確保滿足以下條件;

  1. GlusterFS集群有6個節點。 在這種類型的體積中必須使用偶數塊磚
  2. 附加一個提取盤(不同於/分區),以用於提供Gluster存儲單元(brick
  3. 使用LVM對磁盤進行分區,並使用XFS文件系統對磁盤/磚進行格式化。
  4. 確保時間在集群筆記之間同步
  5. 在所有群集節點上的防火牆上打開所需的Gluster端口/服務。

在之前的教程中,我們介紹了如何在CentOS 8上安裝和設置GlusterFS存儲集群以及所有上述要求。請點擊以下鏈接進行檢查。

在CentOS 8上安裝和設置GlusterFS存儲群集

膠合劑卷的類型

GlusterFS支持提供各種功能的不同類型的卷。這些包括;

  • Distributed:文件分布在卷中的各個塊中。
  • Replicated:文件在卷中的各個塊之間複製。它確保了高存儲可用性和可靠性。
  • Distributed Replicated:文件分布在卷中的所有複製磚中。確保高可靠性,可擴展性和改進的讀取性能。
  • Arbitrated Replicated:文件在副本集中的兩個塊之間複製,並且僅元數據被複制到第三個塊。確保數據一致性。
  • Dispersed:文件分散在該卷的各個塊中。
  • Distributed Dispersed:數據分布在分散的子卷中。

在之前的文章中,我們介紹了如何設置複製的glusterfs存儲卷。

如何在CentOS 8上設置複製的Gluster卷

安裝程序GlusterFS分布式複製卷

在glusterfs分布式複製設置中,磚的數量必須是副本計數的倍數。同樣,從相鄰磚成為彼此副本的意義上來說,指定磚的順序至關重要。

集群節點

以下是我們的分布式複製Gluster卷節點的詳細信息

主機名IP地址
1個gfs01.kifarunix-demo.com192.168.56.111
2gfs02.kifarunix-demo.com192.168.56.112
3gfs03.kifarunix-demo.com192.168.57.1​​​​14
4gfs04.kifarunix-demo.com192.168.57.1​​​​13
5gfs05.kifarunix-demo.com192.168.57.1​​​​17
6gfs06.kifarunix-demo.com192.168.57.1​​​​18

在CentOS 8上安裝GlusterFS服務器

按照下面的鏈接在CentOS 8節點上安裝GlusterFS服務器軟件包;

如何在CentOS 8上安裝GlusterFS服務器軟件包

檢查GlusterFS服務器的狀態;

systemctl status glusterd
● glusterd.service - GlusterFS, a clustered file-system server
   Loaded: loaded (/usr/lib/systemd/system/glusterd.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2020-06-15 21:56:23 EAT; 11s ago
     Docs: man:glusterd(8)
 Main PID: 2368 (glusterd)
    Tasks: 9 (limit: 5027)
   Memory: 3.9M
   CGroup: /system.slice/glusterd.service
           └─2368 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO

Jun 15 21:56:22 gfs01.kifarunix-demo.com systemd[1]: Starting GlusterFS, a clustered file-system server...
Jun 15 21:56:23 gfs01.kifarunix-demo.com systemd[1]: Started GlusterFS, a clustered file-system server.

您可以在其他節點上執行相同的操作。

在防火牆上打開/允許GlusterFS服務/端口

在防火牆上打開GlusterFS端口或服務以使節點進行通信。

  • 24007-24008/TCP 用於節點之間的通信;
  • 24009-24108/TCP 與客戶溝通是必需的。

您可以簡單地使用該服務, glusterfs 而不是港口;

firewall-cmd --add-service=glusterfs --permanent;firewall-cmd --reload

驗證GlusterFS存儲群集磁盤

我們在節點上使用每個4GB的LVM磁盤。

lvs
  LV   VG    Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root cl    -wi-ao----  <6.20g                                                    
  swap cl    -wi-ao---- 820.00m                                                    
  gfs  drgfs -wi-ao----  <4.00g

磁盤有 XFS 文件系統並掛載在 /data/glusterfs/

df -hT
Filesystem            Type      Size  Used Avail Use% Mounted on
...
/dev/mapper/cl-root   xfs       6.2G  1.7G  4.6G  27% /
/dev/sda1             ext4      976M  260M  650M  29% /boot
tmpfs                 tmpfs      82M     0   82M   0% /run/user/0
/dev/mapper/drgfs-gfs xfs       4.0G   61M  4.0G   2% /data/glusterfs/

要在系統啟動時自動安裝驅動器,請在 /etc/fstab 配置文件;

echo "/dev/mapper/drgfs-gfs /data/glusterfs xfs defaults 1 2" >> /etc/fstab

創建Gluster TSP

創建一個gluster trusted storage pool (TSP) 用一個 gluster peer probe 命令。從一個節點中探測所有其他集群節點就足夠了;

for i in gfs{02..06}; do gluster peer probe $i; done

您應該按照探測的順序為每個節點獲得成功;

peer probe: success.
peer probe: success.
peer probe: success.
peer probe: success.
peer probe: success.

檢查Gluster對等方的狀態

在任何節點上,您都可以運行gluster peer status命令來顯示對等體的狀態。

gluster peer status
Number of Peers: 5

Hostname: gfs02
Uuid: 148dcf14-76c9-412c-9911-aac17cc5801f
State: Peer in Cluster (Connected)

Hostname: gfs03
Uuid: 22d2a6ea-e3a4-49fc-8df6-bd70a9545b30
State: Peer in Cluster (Connected)

Hostname: gfs04
Uuid: 89ddf393-8144-4529-81f6-98128a5f1b71
State: Peer in Cluster (Connected)

Hostname: gfs05
Uuid: 53b7b05a-28ac-4dfc-8598-651dee9d2431
State: Peer in Cluster (Connected)

Hostname: gfs06
Uuid: 29d2d128-5e59-4123-b265-d27ef08f024b
State: Peer in Cluster (Connected)

您可以從其他節點驗證對等狀態。

配置分布式複製存儲卷

gluster volume create 命令可用於創建Gluster分布式複製卷。 complete命令的語法為;

gluster volume create NEW-VOLNAME [replica COUNT] [transport [tcp | rdma | tcp,rdma]] NEW-BRICK...

注意

  • 創建分布式複製卷時,必須使用偶數個磚(我們有6個)。這意味着,塊數必須是副本數的倍數。
  • 指定塊的順序決定了如何相互複製。例如,如果您指定兩個副本,那麼這意味着指定的前兩個相鄰磚塊成為彼此的副本(鏡像),而序列中的下兩個磚塊則相互複製。
  • 不建議使用雙向分布式複製卷 腦裂 問題(數據或元數據不一致(權限,uid / gid,擴展屬性等)))因此,使用三向分布式複製卷。
  • 如果群集節點上有多個磚塊,請確保以相同順序列出每個服務器上的第一個磚塊,然後以相同的順序列出每個服務器上的第二個磚塊,以免將副本集成員放在同一節點上。

創建三向分布式複製卷

為了創建三向分布式複製卷,我們在演示中使用六個節點,每個副本具有3個副本。這意味着,前三個相鄰的Brick形成一個副本,與下三個副本相同。

在我們的設置中,我們將Brick數據目錄命名為 gfsbrick。如果該數據目錄不存在,則將創建它。 相應地替換名稱 在以下命令中。

gluster volume create dist-repl-gfs replica 3 transport tcp 
gfs01:/data/glusterfs/brick01 gfs02:/data/glusterfs/brick02 
gfs03:/data/glusterfs/brick03 gfs04:/data/glusterfs/brick04 
gfs05:/data/glusterfs/brick05 gfs06:/data/glusterfs/brick06

如果一切順利,則應該顯示一條消息,說明卷創建成功。

volume create: dist-repl-gfs: success: please start the volume to access data

啟動分布式複製GlusterFS卷

您可以使用gluster volume start命令啟動卷。更換 dist-repl-gfs 與您的卷的名稱。

gluster volume start dist-repl-gfs

然後你走了 volume start: dist-repl-gfs: success。您的音量調高了。

驗證GlusterFS卷

您可以使用以下命令驗證GlusterFS卷 gluster volume info 命令。

gluster volume info all
Volume Name: dist-repl-gfs
Type: Distributed-Replicate
Volume ID: 45f4416d-9842-4352-8802-b280a243036b
Status: Started
Snapshot Count: 0
Number of Bricks: 2 x 3 = 6
Transport-type: tcp
Bricks:
Brick1: gfs01:/data/glusterfs/brick01
Brick2: gfs02:/data/glusterfs/brick02
Brick3: gfs03:/data/glusterfs/brick03
Brick4: gfs04:/data/glusterfs/brick04
Brick5: gfs05:/data/glusterfs/brick05
Brick6: gfs06:/data/glusterfs/brick06
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
performance.client-io-threads: off

獲取卷的狀態;

gluster volume status dist-repl-gfs
Status of volume: dist-repl-gfs
Gluster process                             TCP Port  RDMA Port  Online  Pid
------------------------------------------------------------------------------
Brick gfs01:/data/glusterfs/brick01         49152     0          Y       4510 
Brick gfs02:/data/glusterfs/brick02         49152     0          Y       4194 
Brick gfs03:/data/glusterfs/brick03         49152     0          Y       4078 
Brick gfs04:/data/glusterfs/brick04         49152     0          Y       4080 
Brick gfs05:/data/glusterfs/brick05         49152     0          Y       5330 
Brick gfs06:/data/glusterfs/brick06         49152     0          Y       4077 
Self-heal Daemon on localhost               N/A       N/A        Y       4532 
Self-heal Daemon on gfs03                   N/A       N/A        Y       4099 
Self-heal Daemon on gfs02                   N/A       N/A        Y       4215 
Self-heal Daemon on gfs04                   N/A       N/A        Y       4101 
Self-heal Daemon on gfs05                   N/A       N/A        Y       5359 
Self-heal Daemon on gfs06                   N/A       N/A        Y       4098 
 
Task Status of Volume dist-repl-gfs
------------------------------------------------------------------------------
There are no active volume tasks

列出有關積木的其他信息;

gluster volume status dist-repl-gfs detail
Status of volume: dist-repl-gfs
------------------------------------------------------------------------------
Brick                : Brick gfs01:/data/glusterfs/brick01
TCP Port             : 49152               
RDMA Port            : 0                   
Online               : Y                   
Pid                  : 4510                
File System          : xfs                 
Device               : /dev/mapper/drgfs-gfs
Mount Options        : rw,seclabel,relatime,attr2,inode64,noquota
Inode Size           : 512                 
Disk Space Free      : 3.9GB               
Total Disk Space     : 4.0GB               
Inode Count          : 2095104             
Free Inodes          : 2095086             
------------------------------------------------------------------------------
Brick                : Brick gfs02:/data/glusterfs/brick02
TCP Port             : 49152
...

在客戶端上掛載GlusterFS存儲卷

一旦設置了分布式複製卷,就可以將它們安裝在客戶端上並開始將數據寫入其中。

為了演示如何掛載glusterfs卷,我們將使用CentOS 8客戶端。

有多種方法可以訪問Gluster存儲卷。這些包括使用;

  • 本機GlusterFS客戶端
  • 網絡文件系統(NFS)v3
  • 服務器消息塊(SMB)

在這種情況下,我們將使用Native GlusterFS客戶端方法。

在CentOS 8上安裝GlusterFS本機客戶端

dnf install glusterfs glusterfs-fuse

安裝完成後,創建一個Gluster Storage卷安裝點。我們用, /mnt/glusterfs 作為安裝點。

mkdir /mnt/glusterfs

在繼續安裝Gluster卷之前,請確保可從客戶端訪問所有節點。

可以使用 mount 命令並指定文件系統類型為 glusterfs 以及卷的節點和名稱。

mount -t glusterfs gfs01:/dist-repl-gfs /mnt/glusterfs

要在引導過程中自動掛載,請在/ etc / fstab上輸入以下行,替換特定的glusterfs存儲卷和掛載點。

gfs01:/dist-repl-gfs /mnt/glusterfs/ glusterfs defaults,_netdev 0 0

注意 您可以使用以下命令在客戶端中配置備份卷文件服務器 backup-volfile-servers 掛載選項。

  • backup-volfile-servers=::...:
  • 如果如上所示在安裝保險絲客戶端時指定了此選項,則當第一台volfile服務器發生故障時,將在 backup-volfile-servers 選項用作卷文件服務器來掛載客戶端,直到掛載成功為止。
mount -t glusterfs -o backup-volfile-servers=server2:server3:.... ..:serverN server1:/VOLUME-NAME MOUNT-POINT

這可能看起來像;

mount -t glusterfs -o backup-volfile-servers=gfs02:gfs03 gfs01:/dist-repl-gfs /mnt/glusterfs

確認安裝;

df -hT -P /mnt/glusterfs/

測試已安裝的卷

為了測試在客戶端上安裝的分布式複製gluster存儲卷上的數據分布和複製,我們將創建一些偽造的文件;

cd /mnt/glusterfs/

創建文件;

for i in {1..10};do echo hello > "File${i}.txt"; done

驗證存儲在每個節點的模塊上的文件。

前三個積木的數據(複製)相同;

[[email protected] ~]# ls /data/glusterfs/brick01/
File1.txt File3.txt File5.txt File6.txt File8.txt
[[email protected] ~]# ls /data/glusterfs/brick02/
File1.txt File3.txt File5.txt File6.txt File8.txt
[[email protected] ~]# ls /data/glusterfs/brick03/
File1.txt File3.txt File5.txt File6.txt File8.txt

接下來的三個磚塊上的數據相同(重複);

[[email protected] ~]# ls /data/glusterfs/brick04/
File10.txt File2.txt File4.txt File7.txt File9.txt
[[email protected] ~]# ls /data/glusterfs/brick05/
File10.txt File2.txt File4.txt File7.txt File9.txt
[[email protected] ~]# ls /data/glusterfs/brick06/
File10.txt File2.txt File4.txt File7.txt File9.txt

這就是在glusterfs分布式複製存儲卷上分配和複製數據的方式。

這標誌着我們指南的結尾,該指南關於如何在CentOS 8上設置glusterfs分布式複製卷。

參考

設置GlusterFS卷

創建分布式複製卷Red Hat Gluster存儲

Sidebar