在 RHEL 9/8 上设置高可用性 Apache 集群需要使用 Pacemaker 和 Corosync 集群管理工具。以下是详细的配置步骤:
在所有节点上安装所需软件包:
sudo dnf install -y pcs pacemaker fence-agents-all httpd
允许集群通信所需的端口:
sudo firewall-cmd --permanent --add-service=high-availability
sudo firewall-cmd --reload
在所有节点上设置 hacluster 用户密码:
sudo passwd hacluster
在所有节点上:
sudo systemctl enable --now pcsd
在一个节点上运行以下命令(将 node1 和 node2 替换为您的实际节点名称):
sudo pcs host auth node1 node2 -u hacluster -p your_password
sudo pcs cluster setup my_http_cluster node1 node2 --start --enable
sudo pcs property set stonith-enabled=false
sudo pcs property set no-quorum-policy=ignore
sudo systemctl disable --now httpd
sudo pcs resource create WebSite ocf:heartbeat:apache \
configfile=/etc/httpd/conf/httpd.conf \
statusurl="http://127.0.0.1/server-status" \
op monitor interval=1min
sudo pcs resource create Virtual_IP ocf:heartbeat:IPaddr2 \
ip=192.168.1.100 cidr_netmask=24 \
op monitor interval=30s
(将 192.168.1.100 替换为您要使用的虚拟 IP)
sudo pcs resource group add WebGroup Virtual_IP WebSite
sudo pcs status
sudo pcs resource move WebGroup node2
sudo pcs resource clear WebGroup
如果使用共享存储来存放网站内容,可以添加文件系统资源:
sudo pcs resource create WebData Filesystem \
device="/dev/shared/web" \
directory="/var/www/html" \
fstype="ext4" \
--group WebGroup
sudo pcs resource op defaults timeout=240s
sudo pcs resource op defaults interval=30s
sudo pcs resource meta WebGroup resource-stickiness=100
sudo pcs property set stonith-enabled=true
# 然后配置适当的 STONITH 设备
sudo pcs status
sudo pcs cluster status
sudo pcs resource show
如果资源无法启动,检查日志:
journalctl -xe
验证 Apache 配置:
apachectl configtest
检查集群通信:
sudo corosync-cfgtool -s
通过以上步骤,您已经在 RHEL 9/8 上成功设置了高可用性 Apache 集群。这个配置可以确保在一个节点故障时,Web 服务会自动切换到另一个节点,保证服务的持续可用性。