2.2. 了解配置故障转移
以下流程介绍了创建运行服务的一个 Pacemaker 集群,当节点上的服务变为不可用时,将其从一个节点切换到另一个节点上。通过这个步骤,您可以了解如何在双节点集群中创建服务,并可以查看在运行该服务的节点出现问题时会出现什么情况。
这个示例步骤配置一个运行 Apache HTTP 服务器的双节点 Pacemaker 集群。然后,您可以停止一个节点上的 Apache 服务来查看该服务仍然可用。
在本例中:
- 
						节点为 z1.example.com和z2.example.com。
- 浮动 IP 地址为 192.168.122.120。
先决条件
- 两个可以相互通讯的、运行 RHEL 9 的节点
- 一个浮动的 IP 地址,它与一个节点静态分配的 IP 地址处于同一个网络。
- 
						运行的节点的名称位于 /etc/hosts文件中
步骤
- 在这两个节点中,通过 High Availability 频道安装 Red Hat High Availability Add-On 软件包,并启动并启用 - pcsd服务。- dnf install pcs pacemaker fence-agents-all systemctl start pcsd.service systemctl enable pcsd.service - # dnf install pcs pacemaker fence-agents-all ... # systemctl start pcsd.service # systemctl enable pcsd.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 如果您正在运行 - firewalld守护进程,在两个节点上启用红帽高可用性附加组件所需的端口。- firewall-cmd --permanent --add-service=high-availability firewall-cmd --reload - # firewall-cmd --permanent --add-service=high-availability # firewall-cmd --reload- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在集群的两个节点上为用户 - hacluster设置密码。- passwd hacluster - # passwd hacluster- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在要运行 - pcs命令的节点上,为集群中的每个节点验证用户- hacluster。- pcs host auth z1.example.com z2.example.com - # pcs host auth z1.example.com z2.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建名为 - my_cluster的集群,两个节点都作为集群成员。这个命令会创建并启动集群。因为- pcs配置命令对整个集群的影响,您只需要从集群的一个节点上运行。- 在集群的一个节点中运行以下命令。 - pcs cluster setup my_cluster --start z1.example.com z2.example.com - # pcs cluster setup my_cluster --start z1.example.com z2.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 红帽高可用性集群要求为集群配置隔离功能。在红帽知识库解决方案 Red Hat High Availability Cluster 中的隔离 中描述了此要求的原因。但是,对于此介绍,仅显示了在这个配置中故障转移是如何工作的,通过将 - stonith-enabled集群选项设置为- false来禁用隔离。警告- 对生产集群而言,不要使用 - stonith-enabled=false。它通知集群,假设出现故障的节点已被安全隔离。- pcs property set stonith-enabled=false - # pcs property set stonith-enabled=false- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建集群并禁用隔离后,检查集群的状态。 注意- 运行 - pcs cluster status命令时,可能会显示与系统组件启动时稍有不同示例的输出。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在这两个节点中,配置网页浏览器并创建一个网页来显示简单的文本信息。如果您正在运行 - firewalld守护进程,启用- httpd所需的端口。注意- 不要使用 - systemctl enable启用任何由集群管理的服务在系统引导时启动。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 要让 Apache 资源代理获得 Apache 状态,集群中的每个节点都会在现有配置之外创建一个新的配置来启用状态服务器 URL。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 创建 - IPaddr2和- apache资源,供集群管理。- IPaddr2资源是一个浮动 IP 地址,它不能是已经与物理节点关联的浮动 IP 地址。如果没有指定- IPaddr2资源的 NIC 设备,浮动 IP 必须位于与静态分配的 IP 地址相同的网络中。- 您可以使用 - pcs resource list命令显示所有可用资源类型的列表。您可以使用- pcs resource describe resourcetype命令显示您可以为指定资源类型设置的参数。例如,以下命令显示您可以为类型- apache的资源设置的参数:- pcs resource describe apache - # pcs resource describe apache ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 在这个示例中,IP 地址资源和 apache 资源都配置为名为 - apachegroup的组的一部分,这样可确保这些资源在同一节点中运行。- 在集群中的一个节点中运行以下命令: - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 请注意,在这个实例中, - apachegroup服务在节点 z1.example.com 中运行。
- 访问您创建的网站,在运行该服务的节点上停止运行该服务,查看该服务如何切换到第二个节点。 - 将浏览器指向使用您配置的浮动 IP 地址创建的网站。这会显示您定义的文本信息,显示运行网站的节点名称。
- 停止 apache web 服务。使用 - killall -9模拟应用程序级别的崩溃。- killall -9 httpd - # killall -9 httpd- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 检查集群状态。您应该可以看到,停止 web 服务会导致操作失败,但集群软件在运行该服务的节点中重启该服务,所以您应该仍然可以访问网页浏览器。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 在服务启动并再次运行后,清除失败状态。 - pcs resource cleanup WebSite - # pcs resource cleanup WebSite- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 将运行该服务的节点设置为待机模式。请注意,由于禁用了隔离功能,因此我们无法有效地模拟节点级别的故障(比如拔掉电源电缆)。需要隔离功能集群才可以在出现这类问题时被恢复。 - pcs node standby z1.example.com - # pcs node standby z1.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 检查集群的状态并记录该服务正在运行的位置。 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 访问网站。服务应该仍然可用,显示信息应该指示服务正在运行的节点。
 
- 要将集群服务恢复到第一个节点,让节点离开待机模式。这不一定将该服务转换到第一个节点。 - pcs node unstandby z1.example.com - # pcs node unstandby z1.example.com- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 最后,进行清理,停止两个节点上的集群服务。 - pcs cluster stop --all - # pcs cluster stop --all- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow