硬件要求
- 至少 2 台服务器,并命名为
server1
server2
- 每台服务器至少 2 块硬盘,1 块安装操作系统,另外一块提供 GlusterFS 服务
- 建议使用 2C、2G、1GBps 以上配置的服务器
- 建议使用 2 个网卡,将存储和管理网络分开
软件要求
- 设置 DNS 和 NTP,保证各节点的时间相同,且使用主机名能找到响应的服务器
- 保证在 BIOS 中关闭节电模式
- 保证将将网卡安装并设置在最快速的 PCI-E 总线上
服务器信息
- 系统:RHEL 7
服务器:
- k8s-work1
- k8s-work2
- k8s-work3
Gluster 安装
安装 yum 源
To Use the RPMs from Storage SIG, you need to install the centos-release-gluster RPM as it will provide the required YUM repository files. This RPM is available from CentOS Extras.
Example (for CentOS 7 / x86_64):
yum install centos-release-gluster
格式化并挂载 bricks
在每台服务器上执行以下操作:
分区
注意:分区前请确保该磁盘上的重要数据已经被备份。
fdisk /dev/sdb
使用 d
命令删除所有已存在分区,直到输入 p
命令时不显示任何分区。
使用 n
命令创建一个分区,以下为创建过程:
命令(输入 m 获取帮助):n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): 直接回车
分区号 (1-4,默认 1):直接回车
起始 扇区 (2048-67108863,默认为 2048):直接回车
将使用默认值 2048
Last 扇区, +扇区 or +size{K,M,G} (2048-67108863,默认为 67108863):
将使用默认值 67108863
分区 1 已设置为 Linux 类型,大小设为 32 GiB
使用 t
命令,然后输入 83
设置分区类型为 “Linux”。
使用 w
命令,保存分区表并退出。
格式化
格式化为 xfs 格式。
mkfs.xfs -i size=512 /dev/sdb1
创建挂载点并挂载:
mkdir -p /bricks/brick1
vi /etc/fstab
将以下内容添加到打开的文件结尾:
/dev/sdb1 /bricks/brick1 xfs defaults 1 2
保存并退出。
mount -a && mount
现在应该可以看到 sdb1
被挂载到 /bricks/brick1
。
Note: 在 CentOS 6 系统中, 你需要安装
xfsprogs
才能使用 XFS 文件系统。# yum install xfsprogs
安装 GlusterFS
yum install glusterfs-server -y
启动 GlusterFS 管理服务:
systemctl enable glusterd
systemctl start glusterd
查看状态:
# 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 五 2020-10-23 14:59:22 CST; 12s ago
Docs: man:glusterd(8)
Process: 21116 ExecStart=/usr/sbin/glusterd -p /var/run/glusterd.pid --log-level $LOG_LEVEL $GLUSTERD_OPTIONS (code=exited, status=0/SUCCESS)
Main PID: 21117 (glusterd)
Tasks: 9
Memory: 3.1M
CGroup: /system.slice/glusterd.service
└─21117 /usr/sbin/glusterd -p /var/run/glusterd.pid --log-level INFO
配置防火墙
需要放行相关节点 IP 地址:
iptables -I INPUT -p all -s x.x.x.x -j ACCEPT
配置 trusted pool (可信池?)
在 k8s-work1 上执行:
# gluster peer probe k8s-work2
# gluster peer probe k8s-work3
Note: Once this pool has been established, only trusted members may probe new servers into the pool. A new server cannot probe the pool, it must be probed from the pool.
配置 GlusterFS volume
创建卷
在所有服务器上执行:
mkdir /bricks/brick1/gv0
在任意一台服务器上执行,创建 Arbiter volume(仲裁卷?):
# gluster volume create gv0 replica 3 arbiter 1 k8s-work1:/bricks/brick1/gv0 k8s-work2:/bricks/brick1/gv0 k8s-work3:/bricks/brick1/gv0
volume create: gv0: success: please start the volume to access data
您也可以创建 3 副本的卷 (与上面的命令只能执行 1 个):
# gluster volume create gv0 replica 3 k8s-work1:/bricks/brick1/gv0 k8s-work2:/bricks/brick1/gv0 k8s-work3:/bricks/brick1/gv0
3 副本卷
是指数据各储存 1 份到 3 个节点,Arbiter volume 方式则将数据各储存 1 份到 2 个节点,另一个节点储存 metadata (元数据)。3 副本卷
方式提供了更高的可用性,仲裁卷能占用较小空间,请根据使用环境自行取舍。
启动卷
在任意一台服务器上执行:
# gluster volume start gv0
volume start: gv0: success
确认是否启动成功 Status: Started
:
# gluster volume info
Volume Name: gv0
Type: Replicate
Volume ID: b2fbb4d2-933e-483b-bad7-73c4de5f2b31
Status: Started
Snapshot Count: 0
Number of Bricks: 1 x (2 + 1) = 3
Transport-type: tcp
Bricks:
Brick1: k8s-work1:/bricks/brick1/gv0
Brick2: k8s-work2:/bricks/brick1/gv0
Brick3: k8s-work3:/bricks/brick1/gv0 (arbiter)
Options Reconfigured:
transport.address-family: inet
storage.fips-mode-rchecksum: on
nfs.disable: on
performance.client-io-threads: off
测试 GlusterFS volume
在这一步中,我们使用了其中一台服务器来挂载卷。通常情况下,你需要使用其他的设备做为客户端。使用此方式,你需要在客户端设备上安装额外的软件包,我们这里将使用其中一台服务器来做为客户端测试。
# mount -t glusterfs k8s-work1:/gv0 /mnt
# for i in `seq -w 1 100`; do cp -rp /var/log/messages /mnt/copy-test-$i; done
第一步,检查挂载点:
# ls -lA /mnt | wc -l
你将发现有 100 个文件被创建了,然后检查所有服务器 GlusterFS 的挂载点。
# ls -lA /bricks/brick1/gv0
使用我们在这里列出的方法,您应该看到每台服务器有 100 个文件。如果没有复制,在仅分发卷(这里没有详细说明)中,每个卷应该有大约50个副本。
这篇文章还没有人留言,快来抢沙发吧。