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.ymlCopy 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 || trueCopy 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 || trueCopy 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
HelloCopy 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.comCopy 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.comCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意从
待机模式中删除节点本身不会导致资源切换到该节点。这将依赖于资源的resource-stickiness值。有关resource-stickiness元属性的详情,请参考 配置资源以首选其当前节点。