在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