从零开始搭建高可用性 WordPress 网站(2026 版)!第四部分:Gluster 从零开始搭建高可用性 WordPress 网站(2026 版)!第四部分:Gluster

从零开始搭建高可用性 WordPress 网站(2026 版)!第四部分:Gluster

高可用性 WordPress在本系列教程中,我们将从零开始搭建一个高可用性的 WordPress 网站。

第一部分 – 引言、考虑因素和架构
第二部分 – 订购虚拟专用服务器
第三部分 – Ansible
第四部分——集群(本文)
第五部分 – WordPress 安装
第六部分 – MariaDB 多主数据库
第七部分 – 轮询 DNS、Let's Encrypt 和结论

我们目前已经取得了巨大进展。使用 Ansible 大大加快了服务器的搭建速度。现在让我们来配置 GlusterFS。

GlusterFS 是一个复制文件系统,它允许我们在每个节点上拥有完全相同的目录、文件和权限。我们将把网站文件托管在上面,这样,如果我们在一个节点上上传一些图片或其他文件,它们会立即复制到其他节点。我们还将利用它简化 Let's Encrypt 和 Nginx 的部署,并在设置 MariaDB 时将其用作数据库备份的便捷传输机制。

现在,我们先把它设置安装好。

由于需要来回切换,我将把部分内容标记为“在每个节点上”和“在节点1上”。建议对每个节点都建立SSH会话,以便来回切换。

在每个节点上

运行 dmesg 命令后,你应该会看到类似这样的输出:

 [ 1.714306] sd 0:0:0:1: [sdb] 20971520 个 512 字节逻辑块: (10.7 GB/10.0 GiB)

dmesg 通常会输出很多信息,所以请尝试一下。

 dmesg | grep sdb

这很可能是默认挂载的,所以请卸载它。

卸载 /dev/sdb

并从 /etc/fstab 文件中删除所有相关引用。在我的 node1 上,我删除了这一行:

 /dev/disk/by-id/scsi-0HC_Volume_100431844 /mnt/HC_Volume_100431844 xfs discard,nofail,defaults 0 0

现在让我们删除分区标签并创建一个新的分区,创建一个使用 100% 驱动器空间的新分区,并在其上创建一个 XFS 文件系统:

 root@node1:~# parted /dev/sdb --align opt mklabel gpt
警告:/dev/sdb 上现有的磁盘标签将被销毁,该磁盘上的所有数据都将丢失。
您想继续吗?
是/否?是 
提示:您可能需要更新 /etc/fstab 文件。
root@node1:~# parted /dev/sdb mkpart xfs 0% 100% 
提示:您可能需要更新 /etc/fstab 文件。
root@node1:~# mkfs.xfs -f -i size=512 /dev/sdb1
元数据=/dev/sdb1 大小=512 agcount=4,agsize=655232 块
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=1, sparse=1, rmapbt=0
= reflink=1 bigtime=1 inobtcount=1 nrext64=0
数据 = bsize=4096 块数=2620928,imaxpct=25
= sunit=0 swidth=0 块
命名=版本 2 bsize=4096 ascii-ci=0, ftype=1
日志=内部日志 bsize=4096 blocks=16384, version=2
= sectsz=512 sunit=0 blks,lazy-count=1
实时=无 extsz=4096 blocks=0, rtextents=0
丢弃方块……完成。

现在我们可以设置安装点并将其安装起来:

 root@node1:~# mkdir -p /data/brick1
root@node1:~# echo '/dev/sdb1 /data/brick1 xfs defaults 1 2' >> /etc/fstab
root@node1:~# systemctl daemon-reload
root@node1:~# mount -a
root@node1:~# mount | grep sdb1
/data/brick1 上的 /dev/sdb1 类型 xfs(rw、relatime、attr2、inode64、logbufs=8、logbsize=32k、无配额)
root@node1:~# df -h |grep sdb1
/dev/sdb1 10G 104M 9.9G 2% /data/brick1

现在涂抹泡沫,冲洗干净,对每个节点重复此步骤。

在每个节点上

现在应该启动 glusterd 服务了。

 systemctl enable glusterd.service
systemctl start glusterd.service

在节点1上

让我们来搭建 GlusterFS 集群。

 root@node1:~# gluster peer probe node2.lowend.party
同伴探测:成功
root@node1:~# gluster peer probe node3.lowend.party
同伴探究:成功

在节点2上

root@node2:~# gluster peer probe node1.lowend.party
同伴探测:成功
root@node2:~# gluster peer probe node3.lowend.party
对等体探测:主机 node3.lowend.party 端口 24007 已在对等体列表中

在节点3上

root@node3:~# gluster peer probe node1.lowend.party
对等体探测:主机 node1.lowend.party 端口 24007 已在对等体列表中
root@node3:~# gluster peer probe node2.lowend.party
对等体探测:主机 node2.lowend.party 端口 24007 已在对等体列表中

在节点1上

root@node1:~# gluster peer status
同伴数量:2

主机名:node2.lowend.party
UUID:4fdc500b-d0dc-4853-9eac-c30f31bf80d8
状态:集群中的对等节点(已连接)

主机名:node3.lowend.party
Uuid: 363cac9f-5cf2-485d-ac70-37afa25cd785
状态:集群中的对等节点(已连接)

如果在节点 2 和节点 3 上运行该命令,应该会看到类似的信息。GlusterFS 运行正常!现在让我们创建一个 brick 并添加它。

在每个节点上

mkdir -p /data/brick1/gv0

在节点1上

root@node1:~# gluster volume create gv0 replica 3 node1.lowend.party:/data/brick1/gv0 node2.lowend.party:/data/brick1/gv0 node3.lowend.party:/data/brick1/gv0
卷创建:gv0:成功:请启动卷以访问数据
root@node1:~# gluster volume start gv0
卷启动:gv0:成功
root@node3:~# gluster 卷信息

卷名称:gv0
类型:复制
卷 ID:7be70513-926d-441e-99d8-e339e59db30a
状态:已启动
快照数量:0
砖块数量:1 x 3 = 3
传输类型:TCP
砖块:
Brick1: node1.lowend.party:/data/brick1/gv0
Brick2:node2.lowend.party:/data/brick1/gv0
Brick3:node3.lowend.party:/data/brick1/gv0
选项已重新配置:
cluster.granular-entry-heal:开启
storage.fips-mode-rchecksum:开启
transport.address-family: inet
nfs.disable: 开启
performance.client-io-threads: 关闭

在每个节点上

mkdir /gluster

添加到 /etc/fstab:

 echo "localhost:/gv0 /gluster glusterfs defaults,_netdev,noauto,x-systemd.automount 0 0" >> /etc/fstab

进而:

systemctl daemon-reload

如果你不理解那条 fstab 条目,我建议你参考这篇博客文章,其中指出了一个问题:

运行 GlusterFS 集群时,您可能需要使用服务器本身上的卷。

在启动过程中,GlusterFS 需要一些时间才能启动。systemd systemd-mount会处理来自/etc/fstab挂载点,它会在glusterfs-server服务启动完成之前运行。

挂载将会失败,因此重启后您将丢失已挂载的卷。

那里提出了一种解决方案,但第一个评论中的解决方案更简单。

现在重启系统,确保 GlusterFS 已按预期启动并挂载。我的系统显示一切正常。

测试 Gluster

我们来试用一下 Gluster。在节点 1 上:

 echo "这是一个测试文件,用于检查 Gluster 是否正常工作。" > /gluster/testfile.txt

然后跳转到节点2:

 root@node3:~# cat /gluster/testfile.txt 
这是一个测试文件。你好。你好吗?

哇!

下一节我们将安装 WordPress,并利用 Gluster 来简化安装过程。