25.10. 使用 ha_cluster 系统角色在高可用性集群中配置 Apache HTTP 服务器
这个过程使用 ha_cluster
系统角色在双节点 Red Hat Enterprise Linux High Availability Add-On 集群中配置主动/被动 Apache HTTP 服务器。
先决条件
您已在要运行 playbook 的节点上安装了
ansible-core
。注意您不需要在集群成员节点上安装
ansible-core
。-
您已在要运行 playbook 的系统上安装了
rhel-system-roles
软件包。 - 作为集群成员运行的系统必须拥有对 RHEL 和 RHEL 高可用性附加组件的有效订阅。
- 您的系统包括 Apache 需要的一个公共虚拟 IP 地址。
- 您的系统包括集群中节点的共享存储,使用 iSCSI、光纤通道或其他共享网络块的设备。
- 您已配置了具有 XFS 文件系统的 LVM 逻辑卷,如在 在 Pacemaker 集群中配置具有 XFS 文件系统的 LVM 卷 中所述。
- 您已配置了 Apache HTTP 服务器,如 配置 Apache HTTP 服务器 中所述。
- 您的系统包含一个用于隔离群集节点的 APC 电源开关。
ha_cluster
系统角色替换指定节点上的任何现有集群配置。没有在角色中指定的任何设置都将丢失。
流程
- 创建一个指定集群中节点的清单文件,如在 为 ha_cluster 系统角色指定一个清单 中所述。
创建一个 playbook 文件,如
http-cluster.yml
。注意为生产环境创建 playbook 文件时,vault 会加密密码,如在 使用 Ansible Vault 加密内容 中所述。
以下示例 playbook 文件在运行
firewalld
和selinux
服务的主动/被动双节点 HA 集群中配置一个之前创建的 Apache HTTP 服务器。这个示例使用主机名为
zapc.example.com
的 APC 电源开关。如果集群不使用任何其他隔离代理,则您可以选择在定义ha_cluster_fence_agent_packages
变量时只列出集群所需的隔离代理。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 保存该文件。
运行 playbook,指定在第 1 步中创建的清单文件清单的路径。
ansible-playbook -i inventory http-cluster.yml
# ansible-playbook -i inventory http-cluster.yml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当您使用
apache
资源代理来管理 Apache 时,它不会使用systemd
。因此,您必须编辑 Apache 提供的logrotate
脚本,使其不使用systemctl
重新加载 Apache。在集群中的每个节点上删除
/etc/logrotate.d/httpd
文件中的以下行:/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
/bin/systemctl reload httpd.service > /dev/null 2>/dev/null || true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用以下三行替换您删除的行,将
/var/run/httpd-website.pid
指定为 PID 文件路径,其中 website 是 Apache 资源的名称。在本例中,Apache 资源名称是Website
。/usr/bin/test -f /var/run/httpd-Website.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /var/run/httpd-Website.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /var/run/httpd-Website.pid" -k graceful > /dev/null 2>/dev/null || true
/usr/bin/test -f /var/run/httpd-Website.pid >/dev/null 2>/dev/null && /usr/bin/ps -q $(/usr/bin/cat /var/run/httpd-Website.pid) >/dev/null 2>/dev/null && /usr/sbin/httpd -f /etc/httpd/conf/httpd.conf -c "PidFile /var/run/httpd-Website.pid" -k graceful > /dev/null 2>/dev/null || true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证步骤
从集群中的一个节点检查集群的状态。请注意,所有四个资源都运行在同一个节点上,
z1.example.com
。如果发现配置的资源没有运行,则您可以运行
pcs resource debug-start resource
命令来测试资源配置。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 集群启动并运行后,您可以将浏览器指向定义为
IPaddr2
资源的 IP 地址,来查看示例显示,包含简单的单词"Hello"。Hello
Hello
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要测试运行在
z1.example.com
上的资源组是否可以切换到节点z2.example.com
,请将节点z1.example.com
置于待机
模式,之后该节点将不能再托管资源。pcs node standby z1.example.com
[root@z1 ~]# pcs node standby z1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将节点
z1
置于待机
模式后,从集群中的某个节点检查集群状态。请注意,资源现在都应运行在z2
上。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 定义的 IP 地址的网页仍会显示,而不中断。
要从
待机
模式中删除z1
,请输入以下命令。pcs node unstandby z1.example.com
[root@z1 ~]# pcs node unstandby z1.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意从
待机
模式中删除节点本身不会导致资源切换到该节点。这将依赖于资源的resource-stickiness
值。有关resource-stickiness
元属性的详情,请参考 配置资源以首选其当前节点。