配置和管理高可用性集群
大约 206 分钟
配置和管理高可用性集群
来源:官方文档 原始多页入口:配置和管理高可用性集群 内容规模:约 181,077 字符,222 个章节标题,618 个命令/代码块,73 条提示框
阅读提要
- 副标题:使用红帽高可用性附加组件创建和维护 Pacemaker 集群
- 摘要:红帽高可用性附加组件配置使用 Pacemaker 集群资源管理器的高可用性集群。此标题提供了让您熟悉 Pacemaker 集群配置的流程,以及配置主动/被动集群的流程示例。
- 主要章节:使用红帽高可用性附加组件创建和维护 Pacemaker 集群;对红帽文档提供反馈;第 1 章 高可用性附加组件概述;第 2 章 RHEL web 控制台的 HA 集群管理附加组件入门;第 3 章 使用 Pacemaker 创建红帽高可用性集群;第 4 章 在红帽高可用性集群中配置主动/被动 Apache HTTP 服务器;第 5 章 在红帽高可用性集群中配置主动/被动模式的 NFS 服务器;第 6 章 将配置更改保存到工作文件中;第 7 章 显示集群状态;第 8 章 修改、显示和导出 corosync.conf 文件;第 9 章 在 Red Hat High Availability 集群中配置隔离功能;第 10 章 在高可用性集群中配置 SBD 隔离
- 推荐阅读顺序:先看“阅读提要”和目录,再按章节查看“关键点/命令/注意”;需要原文细节时点击来源链接。
章节笔记
概览
- 该章节主要为下一级主题的入口。
使用红帽高可用性附加组件创建和维护 Pacemaker 集群
- 要点:摘要
对红帽文档提供反馈
- 要点:我们致力于为您提供高质量的文档,您的反馈将对我们有很大帮助。为帮助我们改进,您可以通过 Red Hat Jira 跟踪系统提交建议或报告错误。
- 要点:流程
- 列表:登录到 Jira 网站。 如果您还没有帐户,请创建一个。
- 列表:单击顶部导航栏中的 Create。
- 列表:在 Summary 字段中输入描述性标题。
- 列表:在 Description 字段中输入您对改进的建议。包括文档相关部分的链接。
- 列表:点窗口底部的 Create。
第 1 章 高可用性附加组件概述
- 要点:高可用性附加组件是一个集群的系统,它为关键生产环境服务提供可靠性、可伸缩性以及高可用性。
- 要点:高可用性集群(有时称为故障转移集群)通过消除单点故障,以及在一个节点变得无法工作时从一个集群节点故障转移到另一个集群节点来提供高可用服务。通常,高可用性集群中的服务通过读写挂载的文件系统来读写数据。当一个集群节点从另一个集群节点接管服务的控制时,高可用性集群必须保持数据的完整性。对于集群外的客户端,高可用性集群中出现的节点故障是不可见的。High Availability Add-On 通过其高可用性服务管理组件 Pacemaker 提供高可用性集群。
1.1. Pacemaker 架构组件
- 要点:使用 Pacemaker 配置的集群由独立的组件守护进程组成,这些守护进程监控集群成员资格、管理服务的脚本以及监控不同资源的管理子系统。
- 要点:以下组件组成 Pacemaker 架构:
- 列表:管理仲裁规则并进行裁定。
- 列表:为在集群的多个成员间协调或操作的应用程序提供消息功能,因此必须在实例间进行有状态或其他信息通信。
- 列表:使用 kronosnet 库作为其网络传输,提供多个冗余链接和自动故障转移。
1.2. Pacemaker 配置和管理工具
- 要点:High Availability Add-On 提供三种用于集群部署、监控和管理的配置工具。
- 要点:pcs 命令行界面控制并配置 Pacemaker 和 corosync 心跳守护进程。基于命令行的程序 pcs 可以执行以下集群管理任务:
- 列表:创建并配置 Pacemaker 集群
- 列表:在集群运行时修改集群配置
- 列表:启动、停止和显示集群的状态信息
1.3. 集群和 Pacemaker 配置文件
- 要点:红帽高可用性附加组件的配置文件是 corosync.conf 和 cib.xml。
- 要点:其他资源
- 列表:corosync.conf 文件提供了 corosync 所使用的集群参数,corosync 是构建 Pacemaker 的集群管理器。通常,您不应该直接编辑 corosync.conf,而是使用 pcs 界面、HA Cluster Management RHEL web 控制台附加组件或 ha_cluster RHEL 系统角色。
- 列表:cib.xml 文件是一个 XML 文件,代表集群配置和集群中所有资源的当前状态。Pacemaker 的集群信息基础(Cluster Information Base,CIB)会使用这个文件。CIB 的内容会在整个集群中自动保持同步。不要直接编辑 cib.xml 文件;使用 pcs 界面、HA Cluster Management RHEL web 控制台附加组件或 ha_cluster RHEL 系统角色。
- 列表:红帽高可用性附加组件文档指南
- 列表:RHEL web 控制台的 HA 集群管理附加组件入门
- 列表:使用 RHEL 系统角色自动化系统管理
第 2 章 RHEL web 控制台的 HA 集群管理附加组件入门
- 要点:HA 集群管理 RHEL web 控制台附加组件是一个图形用户界面,用来创建和配置 Pacemaker 集群。当安装了 cockpit-ha-cluster 软件包时,可通过 RHEL web 控制台提供 HA Cluster Management RHEL web 控制台附加组件。
- 注意:注意 之前的 Red Hat Enterprise Linux 版本使用 pcsd Web UI 作为 HA 集群配置的独立图形用户界面。这个界面已被修改,来用作 RHEL web 控制台附加组件,不再作为独立接口运行。
2.1. 为 RHEL web 控制台安装并启用 HA 集群管理附加组件
- 要点:要使用 HA 集群管理附加组件来配置高可用性集群,请将 HA 集群管理应用程序添加到 RHEL web 控制台中,并在集群中的每个节点上安装并启用必要的 Red Hat High Availability Add-On 软件包和服务。
- 要点:先决条件
- 列表:您已安装了 RHEL 10 web 控制台。 具体步骤请参阅安装并启用 Web 控制台。
- 列表:从运行 RHEL web 控制台的系统登录到控制台,并安装 HA 集群管理附加组件应用程序。详情请参阅“在 RHEL web 控制台中管理系统”文档中的 RHEL web 控制台的附加应用程序。
- 列表:在每个集群节点上,从 High Availability 渠道安装 Red Hat High Availability 隔离代理。 # dnf install fence-agents-all 您只能使用以下命令安装所需的隔离代理。 # dnf install fence-agents-model
- 列表:在每个集群节点上,确保 pcsd 服务正在运行。 # systemctl status pcsd.service 如果 pcsd 服务没有在集群节点上运行,请输入以下命令启动 pcsd 服务,并在系统启动时启用它。 # systemctl enable --now pcsd.service
- 列表:确保您已登录到 RHEL web 控制台。要使用 RHEL web 控制台创建集群,用于登录到 web 控制台的用户帐户必须有 sudo 访问系统的权限。 注意 hacluster 用户帐户是 Pacemaker 服务帐户,您不能使用此帐户登录到 RHEL web 控制台。
- 列表:在 RHEL web 控制台中,切换到管理访问模式。有关管理访问模式的详情,请参考“在 RHEL web 控制台中管理系统“文档中的 web 控制台中的管理访问权限。 注意 只有具有 sudo 访问权限的用户可以创建集群,并将节点添加到现有集群中。创建集群后,haclient 组中的用户默认可以管理集群和更改权限。有关向需要它们的任何其他用户和组授予不同权限的详情,或修改默认的 haclient 权限,请参考 授予 HA 集群管理权限。
- 命令/配置摘录:
# dnf install fence-agents-all
# dnf install fence-agents-model- 注意:注意 hacluster 用户帐户是 Pacemaker 服务帐户,您不能使用此帐户登录到 RHEL web 控制台。
- 注意:注意 只有具有 sudo 访问权限的用户可以创建集群,并将节点添加到现有集群中。创建集群后,haclient 组中的用户默认可以管理集群和更改权限。有关向需要它们的任何其他用户和组授予不同权限的详情,或修改默认的 haclient 权限,请参考 授予 HA 集群管理权限。
2.2. 授予 HA 集群管理权限
- 要点:每个集群可以有一组用于其管理的不同的权限。具有管理权限或全部权限的用户可以为 HA 集群管理 Web 控制台附加组件的其他用户和组授予全部权限。
- 要点:下表总结了您可以为 HA 集群管理 web 控制台附加组件授予的集群管理权限。
- 列表:您已为 RHEL web 控制台安装并启用了 HA 集群管理附加组件,如 为 RHEL web 控制台安装和启用 HA 集群管理附加组件 中所述。
- 列表:您已创建了一个您要为其管理权限的集群,并已添加到 HA 集群管理附加组件中的集群列表中。
- 列表:使用具有 sudo 访问系统权限的帐户登录到 RHEL web 控制台,并确保您处于管理访问模式。有关管理访问模式的详情,请参考“在 RHEL web 控制台中的管理系统“文档中的 web 控制台中的管理访问权限。 或者,使用对您要管理的集群授予了权限的帐户登录到 RHEL web 控制台。帐户必须是 haclient 组的成员,才能在有限的访问模式中看到 HA 集群 Web 控制台附加组件。
- 列表:从集群列表中选择您要为其管理权限的集群。
- 列表:在集群详情中,单击页面顶部的 Permissions 选项卡,再选择 Create Permission。
- 列表:为用户或组添加、删除或编辑权限。
- 表格样本(共 5 行):
- 权限 | 允许的管理任务
- Read | 查看集群设置.
- Write | 修改除权限和 ACL 以外的所有集群设置。不允许添加节点和创建集群。
- Grant | 修改 ACL ,并授予 read、write 和 grant 权限。
第 3 章 使用 Pacemaker 创建红帽高可用性集群
- 要点:要创建红帽高可用性双节点集群,请使用 pcs 命令行界面。
3.1. 先决条件
- 列表:将被用来创建集群的 2 个 RHEL 节点。在本例中,所用的节点为 z1.example.com 和 z2.example.com。
- 列表:专用网络的网络交换机。我们推荐使用专用网络用于集群节点和其它集群硬件(比如网络电源交换机和光线通道交换机)的通信,当这不是必须的。
- 列表:集群中的每个节点上都有一个隔离设备。这个示例使用 APC 电源交换机的两个端口,主机名为 zapc.example.com。
3.2. 安装集群软件
- 要点:安装集群软件并配置您的系统以进行集群创建。
- 要点:流程
- 列表:在集群的每个节点中,启用与您的系统架构对应的高可用性存储库。例如,要为 x86_64 系统启用高可用性存储库,您可以输入以下 subscription-manager 命令: # subscription-manager repos --enable=rhel-10-for-x86_64-highavailability-rpms
- 列表:在集群的每个节点中,安装 Red Hat High Availability Add-On 软件包,以及 High Availability 性频道中的所有可用的隔离代理。 # dnf install pcs pacemaker fence-agents-all 另外,您可以使用以下命令安装 Red Hat High Availability Add-On 软件包,并只安装您需要的隔离代理。 # dnf install pcs pacemaker fence-agents-model 以下命令显示可用隔离代理列表。 # rpm -q -a | grep fence fence-agents-rhevm-4.0.2-3.el7.x8…
- 列表:如果您正在运行 firewalld 守护进程,请运行以下命令来启用红帽高可用性附加组件所需的端口。 注意 您可以使用 rpm -q firewalld 命令确定系统上是否安装了 firewalld 守护进程。如果已安装,您可以使用 firewall-cmd --state 命令确定它是否正在运行。 # firewall-cmd --permanent --add-service=high-availability # firewall-cmd --add-service=high-availability 注意 集群组件的理想防火墙配置取决于本地环境,您可能需要考虑节点是否有多个网络接口或主机外防火墙是否存在。在此示例中打开 Pa…
- 列表:要使用 pcs 配置集群并在节点间通信,您必须在每个节点中为用户 ID hacluster(即 pcs 管理帐户)设置密码。建议每个节点上的用户 hacluster 的密码都相同。 # passwd hacluster Changing password for user hacluster. New password: Retype new password: passwd: all authentication tokens updated successfully.
- 列表:在配置集群前,必须启动并启用 pcsd 守护进程,以便在每个节点上启动。此守护进程与 pcs 命令配合使用,以管理集群中跨节点的配置。 在集群的每个节点上,运行以下命令来启动 pcsd 服务并在系统启动时启用 pcsd。 # systemctl start pcsd.service # systemctl enable pcsd.service
- 命令/配置摘录:
# subscription-manager repos --enable=rhel-10-for-x86_64-highavailability-rpms
# dnf install pcs pacemaker fence-agents-all- 注意:警告 在安装 the Red Hat High Availability Add-On 软件包后,需要确定设置了软件更新首选项,以便不会自动安装任何软件。在正在运行的集群上安装可能会导致意外行为。如需更多信息,请参阅红帽知识库文章 将软件更新应用到 RHEL 高可用性或弹性存储集群的推荐的做法。
- 注意:注意 您可以使用 rpm -q firewalld 命令确定系统上是否安装了 firewalld 守护进程。如果已安装,您可以使用 firewall-cmd --state 命令确定它是否正在运行。
3.3. 安装 pcp-zeroconf 软件包(推荐)
- 要点:安装 pcp-zeroconf 软件包来配置 Performance Co-Pilot (PCP)。PCP 收集隔离、资源故障和集群中断所需的性能数据。
- 要点:流程
- 列表:要安装 pcp-zeroconf 软件包,请运行以下命令: # dnf install pcp-zeroconf 这个软件包启用了 pmcd,并以 10 秒的间隔配置数据捕获。
- 列表:为什么 RHEL 高可用性集群节点重新引导 - 如何防止它再次发生?
- 命令/配置摘录:
# dnf install pcp-zeroconf- 注意:注意 启用 PCP 的集群部署需要足够的空间可用于 PCP 捕获的文件系统上的数据,其中包含 /var/log/pcp/。PCP 空间使用量因部署而异,但在使用 pcp-zeroconf 默认设置时,10Gb 通常就足够了,有些环境的需要可能会更少。监控这个目录中的 14 天期间内的典型活动提供更准确的信息。
3.4. 创建高可用性集群
- 要点:您可以创建红帽高可用性附加组件集群。这个示例使用节点 z1.example.com 和 z2.example.com。
- 要点:先决条件
- 列表:您已创建了红帽帐户。 注意 要显示 pcs 命令的参数以及这些参数的描述,请使用 pcs 命令的 -h 选项。
- 列表:在要运行 pcs 的节点上,为集群中的每个节点验证 pcs 用户 hacluster。 [root@z1 ~]# pcs host auth z1.example.com z2.example.com Username: hacluster Password: z1.example.com: Authorized z2.example.com: Authorized 此命令为双节点集群中由 z1.example.com 和 z2.example.com 组成的两个节点验证 z1.example.com 上的用户 hacluster。
- 列表:从 z1.example.com 节点运行以下命令,以创建由 z1.example.com 和 z2.example.com 组成的双节点集群 my_cluster : [root@z1 ~]# pcs cluster setup my_cluster --start z1.example.com z2.example.com 这会将集群配置文件传播到集群中的两个节点。此命令包含 --start 选项,该选项将在集群的两个节点上启动群集服务。
- 列表:在节点引导时,启用集群服务在集群中的每个节点上运行: 注意 对于特定的环境,您可以通过禁用集群服务来跳过此步骤。如果启用且节点停机,在节点重新加入集群前,集群或资源中的任何问题都会被解决。如果您禁用了集群服务,请在重新引导节点时手动启动该服务,方法是在该节点上运行 pcs cluster start 命令。 [root@z1 ~]# pcs cluster enable --all
- 列表:显示您创建的集群的状态: [root@z1 ~]# pcs cluster status Cluster Status: Stack: corosync Current DC: z2.example.com (version 2.0.0-10.el8-b67d8d0de9) - partition with quorum Last updated: Thu Oct 11 16:11:18 2018 Last change: Thu Oct 11 16:11:00 2018 by hacluster via crmd on z2.example.com 2 Nodes configured 0 Resources con…
- 列表:如何为高可用性 Linux 设置 Pacemaker 集群
- 命令/配置摘录:
[root@z1 ~]# pcs host auth z1.example.com z2.example.com
Username: hacluster Password: z1.example.com: Authorized z2.example.com: Authorized- 注意:注意 要显示 pcs 命令的参数以及这些参数的描述,请使用 pcs 命令的 -h 选项。
- 注意:注意 对于特定的环境,您可以通过禁用集群服务来跳过此步骤。如果启用且节点停机,在节点重新加入集群前,集群或资源中的任何问题都会被解决。如果您禁用了集群服务,请在重新引导节点时手动启动该服务,方法是在该节点上运行 pcs cluster start 命令。
3.5. 创建使用多个链接的高可用性集群
- 要点:您可以使用 pcs cluster setup 命令,通过指定每个节点的所有链接,创建带有多个链接的红帽高可用性集群。
- 要点:创建具有两个链接的双节点集群的基本命令格式如下:
- 列表:addr=address 参数的顺序非常重要。节点名称后指定的第一个地址为 link0,第二个地址用于 link1,以此类推。
- 列表:默认情况下,如果没有为链接指定 link_priority,则链接的优先级等于链接号。然后,链接优先级为 0、1、2、3 等,以此类推,0 是最高链路优先级。
- 列表:默认链接模式是 passive,即使用具有最低编号链路优先级的活动链接。
- 列表:使用 link_mode 和 link_priority 的默认值,指定的第一个链接将用作最高优先级链接,如果该链接失败,则将使用指定的下一个链接。
- 列表:可以使用 knet 传输协议(即默认的传输协议)指定最多 8 个链接。
- 列表:所有节点必须具有相同数量的 addr= 参数。
- 命令/配置摘录:
# pcs cluster setup pass:quotes[cluster_name] pass:quotes[node1_name] addr=pass:quotes[node1_link0_address] addr=pass:quotes[node1_link1_address] pass:quotes[node2_name] addr=pass:quotes[node2_link0_address] addr=pass:quotes[node2_link1_address]
# pcs cluster setup my_twolink_cluster rh80-node1 addr=192.168.122.201 addr=192.168.123.201 rh80-node2 addr=192.168.122.202 addr=192.168.123.2023.6. 配置隔离
- 要点:您必须为集群中的每个节点配置保护设备。有关保护配置命令和选项的详情,请参考在红帽高可用性集群中配置隔离。
- 要点:有关隔离的一般信息及其在红帽高可用性集群中的重要性,请查看红帽知识库解决方案 红帽高可用性集群中的隔离。
- 列表:创建隔离设备。请注意,您可以在为节点指定主机名时使用 IP 地址。 [root@z1 ~]# pcs stonith create myapc fence_apc_snmp ipaddr="zapc.example.com" pcmk_host_map="z1.example.com:1;z2.example.com:2" login="apc" passwd="apc"
- 列表:显示您创建的隔离设备的参数。 [root@rh7-1 ~]# pcs stonith config myapc Resource: myapc (class=stonith type=fence_apc_snmp) Attributes: ipaddr=zapc.example.com pcmk_host_map=z1.example.com:1;z2.example.com:2 login=apc passwd=apc Operations: monitor interval=60s (myapc-monitor-interval-60s) 配置了隔离设备后,您应该测试该设备。有关测试隔离设备的详情,请参考 测试隔离设备。…
- 命令/配置摘录:
[root@z1 ~]# pcs stonith create myapc fence_apc_snmp ipaddr="zapc.example.com" pcmk_host_map="z1.example.com:1;z2.example.com:2" login="apc" passwd="apc"
[root@rh7-1 ~]# pcs stonith config myapc- 注意:注意 在配置隔离设备时,应该注意该设备是否与集群中的任何节点或者设备共享电源。如果某个节点及其隔离设备共享了电源,那么如果它的电源出现问题,集群可能就无法收到隔离功能的保护。这样的集群应该有冗余电源来保护设备和节点,或者具有没有和节点共享电源的额外的隔离设置。其他替代的隔离方法,比如 SBD 或存储隔离,也可以用来对电源问题提供冗余保护。
- 注意:注意 不要通过禁用网络接口来测试您的隔离设备,因为这不会正确测试隔离功能。
3.7. 备份和恢复集群配置
- 要点:您可以在 tar 归档中备份集群配置,并从备份中恢复所有节点上的集群配置文件。
- 要点:流程
- 列表:使用以下命令在 tar 归档中备份集群配置。如果没有指定文件名,会使用标准输出。 # pcs config backup filename 注意 pcs config backup 命令只备份 CIB 中配置的集群配置本身;资源守护进程的配置不在这个命令范围内。例如:如果您在集群中配置了 Apache 资源,则会备份资源设置(位于 CIB 中),而 Apache 守护进程设置(如'/etc/httpd' 中的设置)及其服务的文件不会被备份。同样,如果集群中配置了数据库资源,则不会备份数据库本身,而是备份数据库资源配置(CIB)。
- 列表:使用以下命令从备份中恢复所有集群节点上的集群配置文件。指定 --local 选项只恢复您在其上运行此命令的节点上的集群配置文件。如果没有指定文件名,将使用标准输入。 # pcs config restore [--local] [filename]
- 命令/配置摘录:
# pcs config backup filename
# pcs config restore [--local] [filename]- 注意:注意 pcs config backup 命令只备份 CIB 中配置的集群配置本身;资源守护进程的配置不在这个命令范围内。例如:如果您在集群中配置了 Apache 资源,则会备份资源设置(位于 CIB 中),而 Apache 守护进程设置(如'/etc/httpd' 中的设置)及其服务的文件不会被备份。同样,如果集群中配置了数据库资源,则不会备份数据库本身,而是备份数据库资源配置(CIB)。
3.8. 为高可用性附加组件启用端口
- 要点:集群组件的理想防火墙配置取决于本地环境,您需要考虑节点是否有多个网络接口或主机外防火墙是否存在。
- 要点:流程
- 列表:如果您正在运行 firewalld 守护进程,请运行以下命令启用红帽高可用性附加组件所需的端口: # firewall-cmd --permanent --add-service=high-availability # firewall-cmd --add-service=high-availability 您可能需要修改开放端口以适合本地条件。 注意 您可以使用 rpm -q firewalld 命令确定系统上是否安装了 firewalld 守护进程。如果安装了 firewalld 守护进程,您可以使用 firewall-cmd --state 命令确定它是否正在运行。 下表显示了要为红帽高可用性附加组件启用的端口,并解释了该端…
- 命令/配置摘录:
# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --add-service=high-availability- 注意:注意 您可以使用 rpm -q firewalld 命令确定系统上是否安装了 firewalld 守护进程。如果安装了 firewalld 守护进程,您可以使用 firewall-cmd --state 命令确定它是否正在运行。
- 表格样本(共 7 行):
- 端口 | 什么时候需要
- TCP 2224 | 节点到节点通信的所有节点上需要的默认 pcsd 端口。您可以使用 /etc/sysconfig/pcsd 文件中的 PCSD_PORT 参数来配置 pcsd 端口。 关键是要以这样一种方式开放端口 2224,即来自任何节点的 pcs 可以与集群中的所有节点(包括它自己)通信。当使用 Booth 集群票据管理器或仲裁设备时,您必须在所有相关主机上打开端口 2224,如 Booth 仲裁器或仲裁设备主机。
- TCP 3121 | 如果集群有 Pacemaker 远程节点,则所有节点都需要这个端口 整个集群节点上的 Pacemaker 的 pacemaker-based 守护进程将通过 Pacemaker 远程节点上的端口 3121 与 pacemaker_remoted 守护进程联系。如果使用一个单独的接口用于集群通信,则该端口只需要在那个接口上打开。至少应该在 Pacemaker 远程节点上完整集群节点打开这个端口。因为用户可以在完整节点和远程节点间转换主机,或使用主机网络在容器内运行远程节点,您可以为所有节点打开端口。不需要向节点以外的任何主机打开端口。
- TCP 5403 | 当使用对仲裁设备使用 corosync-qnetd 时,仲裁设备主机上需要。可以使用 corosync-qnetd 命令的 -p 选项更改默认值。
3.9. 使用 IBM z/VM 实例将红帽高可用性集群配置为集群成员
- 要点:红帽提供了几篇文章,在设计、配置和管理在 z/VM 虚拟机上运行的红帽高可用性集群时非常有用。
- 要点:一般情况下,您可能还会找到以下在设计红帽高可用性集群时有用的文章。
- 列表:RHEL 高可用性集群设计指南 - IBM z/VM 实例作为群集成员
- 列表:RHEL 高可用性集群的管理流程 - 为 RHEL 7 或 8 IBM z Systems 集群成员配置具有 fence_zvmip 的 z/VM SMAPI 隔离
- 列表:IBM z Systems 上的 RHEL High Availability 集群节点每晚午夜前后都会遇到 STONITH 设备超时(红帽知识库)
- 列表:RHEL 高可用性集群的管理程序 - 为 IBM z Systems 成员集群准备 dasd 存储设备
- 列表:RHEL 高可用性集群的支持政策
- 列表:探索 RHEL 高可用性集群的概念 - Fencing/STONITH
3.10. 其他资源
- 列表:RHEL 高可用性集群的支持政策
第 4 章 在红帽高可用性集群中配置主动/被动 Apache HTTP 服务器
- 要点:客户端通过浮动 IP 地址访问主动/被动 Apache HTTP 服务器。Web 服务器在两个集群节点上运行。如果活动节点出现问题,Web 服务器会在第二个节点上重新启动,且服务中断最小。
- 要点:以下示例显示集群的高级概述,其中集群是双节点红帽高可用性集群,该集群使用网络电源交换机以及共享存储配置。集群节点连接到公用网络,以便客户端通过虚拟 IP 访问 Apache HTTP 服务器。Apache 服务器在 Node 1 或 Node 2 中运行,每个节点都可访问保存 Apache 数据的存储。
- 列表:一个双节点 Red Hat High Availability 集群,为每个节点配置了电源隔离功能。您应使用专用网络。
- 列表:Apache 需要的公共虚拟 IP 地址。
- 列表:集群中节点的共享存储,使用 iSCSI、光纤或其他共享网络块设备。
- 列表:在逻辑卷 my_lv 上配置 XFS 文件系统。
- 列表:配置 web 服务器。
4.1. 在 Pacemaker 集群中使用 XFS 文件系统配置一个 LVM 卷
- 要点:您可以在集群节点之间共享的存储中创建 LVM 逻辑卷。
- 要点:下面的流程创建了一个 LVM 逻辑卷,然后在该卷上创建一个 XFS 文件系统,以便在 Pacemaker 集群中使用。在这个示例中,使用共享分区 /dev/sdb1 来存储创建 LVM 逻辑卷的 LVM 物理卷。
- 列表:在集群的两个节点中,执行以下步骤将 LVM 系统 ID 的值设置为系统的 uname 标识符值。LVM 系统 ID 将用于确保只有集群可以激活卷组。 将 /etc/lvm/lvm.conf 配置文件中的 system_id_source 配置选项设置为 uname。 # Configuration option global/system_id_source. system_id_source = "uname" 验证节点上的 LVM 系统 ID 是否与节点的 uname 匹配。 # lvm systemid system ID: z1.example.com # uname -n z1.example.com
- 列表:将 /etc/lvm/lvm.conf 配置文件中的 system_id_source 配置选项设置为 uname。 # Configuration option global/system_id_source. system_id_source = "uname"
- 列表:验证节点上的 LVM 系统 ID 是否与节点的 uname 匹配。 # lvm systemid system ID: z1.example.com # uname -n z1.example.com
- 列表:创建 LVM 卷并在该卷上创建一个 XFS 文件系统。由于 /dev/sdb1 分区是共享的存储,因此您只在一个节点中执行这个操作过程。 在分区 /dev/sdb1 上创建一个 LVM 物理卷。 [root@z1 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created 创建由物理卷 /dev/sdb1 组成的卷组 my_vg。 指定 --setautoactivation n 标志,以确保集群中 Pacemaker 管理的卷组在启动时不会自动激活。如果您要为要创建的 LVM 卷使用现有卷组,您可以使用 vgchange --setautoac…
- 列表:在分区 /dev/sdb1 上创建一个 LVM 物理卷。 [root@z1 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created
- 列表:创建由物理卷 /dev/sdb1 组成的卷组 my_vg。 指定 --setautoactivation n 标志,以确保集群中 Pacemaker 管理的卷组在启动时不会自动激活。如果您要为要创建的 LVM 卷使用现有卷组,您可以使用 vgchange --setautoactivation n 命令为卷组重置此标记。 [root@z1 ~]# vgcreate --setautoactivation n my_vg /dev/sdb1 Volume group "my_vg" successfully created 注意 如果您的 LVM 卷组包含一个或多个位于远程块存储上的物理卷,如 iSCSI 目标,红帽建议您确保服务…
- 命令/配置摘录:
# Configuration option global/system_id_source. system_id_source = "uname"
# lvm systemid- 注意:注意 LVM 卷以及集群节点使用的对应分区和设备必须只能连接到集群节点。
- 注意:注意 如果您的 LVM 卷组包含一个或多个位于远程块存储上的物理卷,如 iSCSI 目标,红帽建议您确保服务在 Pacemaker 启动前启动。有关为 Pacemaker 集群使用的远程物理卷配置启动顺序的详情,请参考 为不由 Pacemaker 管理的资源依赖项配置启动顺序。
4.2. 配置 Apache HTTP 服务器
- 要点:安装和配置 Apache HTTP 服务器以作为集群资源运行。您必须在所有节点上准备 Web 服务器,为资源代理配置服务器状态监控,并将 Web 内容放在共享文件系统中。
- 要点:流程
- 列表:确定在集群的每个节点中安装了 Apache HTTP Server。您还需要在集群中安装 wget 工具才能检查 Apache HTTP 服务器的状态。 在每个节点上运行以下命令。 # dnf install -y httpd wget 如果您在集群的每个节点上运行的 firewalld 守护进程启用了红帽高可用性附加组件所需的端口,并启用了运行 httpd 所需的端口。这个示例启用了 httpd 端口进行公共访问,但为 httpd 启用的特定端口可能会因生产用途而异。 # firewall-cmd --permanent --add-service=http # firewall-cmd --permanent --zone=p…
- 列表:要让 Apache 资源代理获得 Apache 状态,集群中的每个节点都会在现有配置之外创建一个新的配置来启用状态服务器 URL。 # cat <<-END > /etc/httpd/conf.d/status.conf <Location /server-status> SetHandler server-status Require local </Location> END
- 列表:为 Apache 创建网页供服务。 在集群的一个节点上,确保您 在 Pacemaker 集群中配置一个具有 XFS 文件系统的 LVM 卷 时创建的逻辑卷已被激活,挂载您在该逻辑卷上创建的文件系统,在该文件系统上创建文件 index.html,然后卸载文件系统。 # lvchange -ay my_vg/my_lv # mount /dev/my_vg/my_lv /var/www/ # mkdir /var/www/html # mkdir /var/www/cgi-bin # mkdir /var/www/error # restorecon -R /var/www # cat <<-END >/var/www/html/in…
- 命令/配置摘录:
# dnf install -y httpd wget
# firewall-cmd --permanent --add-service=http # firewall-cmd --permanent --zone=public --add-service=http # firewall-cmd --reload4.3. 创建资源和资源组
- 要点:您可以按照以下流程为集群创建资源。为确保这些资源在同一节点上运行,它们都配置为资源组 apachegroup 的一部分。
- 要点:该流程在集群中配置以下资源:
- 列表:名为 my_lvm 的 LVM-activate 资源使用在 Pacemaker 集群中配置具有 XFS 文件系统的 LVM 卷时创建的 LVM 卷组。
- 列表:名为 my_fs 的 Filesystem 资源,它使用在 Pacemaker 集群中配置具有 XFS 文件系统的 LVM 卷时创建的 /dev/my_vg/my_lv 文件系统 设备。
- 列表:IPaddr2 资源,它为 apachegroup 资源组提供浮动 IP 地址。IP 地址不得与物理节点关联。如果没有指定 IPaddr2 资源的 NIC 设备,浮动 IP 地址必须与节点静态分配的 IP 地址之一位于同一个网络中;否则,无法检测到 NIC 设备。
- 列表:名为 Website 的 apache 资源,它使用配置 Apache HTTP 服务器 中定义的 index.html 文件和 Apache 配置。
- 列表:以下命令创建 LVM-activate 资源 my_lvm。由于资源组 apachegroup 尚不存在,这个命令会创建资源组。 注意 不要配置多于一个的在主动/被动 HA 配置中使用相同 LVM 卷组的 LVM-activate 资源,因为这可能导致数据崩溃。另外,不要在主动/被动 HA 配置中将 LVM-activate 资源配置为克隆资源。 [root@z1 ~]# pcs resource create my_lvm ocf💓LVM-activate vgname=my_vg vg_access_mode=system_id --group apachegroup 当您创建资源时,会自动启动该资源。您可…
- 列表:以下命令为配置创建剩余的资源,将它们添加到现有资源组 apachegroup 中。 [root@z1 ~]# pcs resource create my_fs Filesystem device="/dev/my_vg/my_lv" directory="/var/www" fstype="xfs" --group apachegroup [root@z1 ~]# pcs resource create VirtualIP IPaddr2 ip=198.51.100.3 cidr_netmask=24 --group apachegroup [root@z1 ~]# pcs resource create Website apa…
- 命令/配置摘录:
[root@z1 ~]# pcs resource create my_lvm ocf:heartbeat:LVM-activate vgname=my_vg vg_access_mode=system_id --group apachegroup
# pcs resource status- 注意:注意 不要配置多于一个的在主动/被动 HA 配置中使用相同 LVM 卷组的 LVM-activate 资源,因为这可能导致数据崩溃。另外,不要在主动/被动 HA 配置中将 LVM-activate 资源配置为克隆资源。
4.4. 测试资源配置
- 要点:通过模拟手动故障切换来验证高可用性配置。通过将活跃节点设置为待机模式,您可以强制集群将资源迁移到备份节点,确认服务在节点中断期间仍然可用。
- 要点:在示例配置中,所有资源目前都在 z1.example.com 上处于活动状态。要测试故障转移逻辑,请将 z1 置于待机模式。这可以防止节点托管资源并触发集群,将资源组重新定位到 z2.example.com。
- 列表:以下命令将节点 z1.example.com 置于待机模式下。 [root@z1 ~]# pcs node standby z1.example.com
- 列表:将节点 z1 置于待机模式后,检查集群状态。请注意,这些资源现在都应在 z2 中运行。 [root@z1 ~]# pcs status Cluster name: my_cluster Last updated: Wed Jul 31 17:16:17 2013 Last change: Wed Jul 31 17:18:34 2013 via crm_attribute on z1.example.com Stack: corosync Current DC: z2.example.com (2) - partition with quorum Version: 1.1.10-5.el7-9abe687 2 Nodes conf…
- 列表:要从 待机 模式中删除 z1,请输入以下命令。 [root@z1 ~]# pcs node unstandby z1.example.com 注意 从 待机 模式中删除节点本身不会导致资源切换到该节点。这将依赖于资源的 resource-stickiness 值。有关 resource-stickiness 元属性的详情,请参考 配置资源以首选其当前节点。
- 命令/配置摘录:
[root@z1 ~]# pcs node standby z1.example.com
[root@z1 ~]# pcs status- 注意:注意 从 待机 模式中删除节点本身不会导致资源切换到该节点。这将依赖于资源的 resource-stickiness 值。有关 resource-stickiness 元属性的详情,请参考 配置资源以首选其当前节点。
第 5 章 在红帽高可用性集群中配置主动/被动模式的 NFS 服务器
- 要点:红帽高可用性附加组件支持使用共享存储的 RHEL 集群上的主动/被动 NFS。客户端通过浮动 IP 连接。如果活跃节点失败,则服务会切换到其他节点,这会减少中断。
- 要点:这个用例需要您的系统包括以下组件:
- 列表:一个双节点 Red Hat High Availability 集群,为每个节点配置了电源隔离功能。您应使用专用网络。
- 列表:NFS 服务器需要的一个公共虚拟 IP 地址。
- 列表:集群中节点的共享存储,使用 iSCSI、光纤或其他共享网络块设备。
- 列表:在共享存储的 LVM 逻辑卷中为集群中的节点配置文件系统。
- 列表:在 LVM 逻辑卷的共享存储中配置 NFS 共享。
- 列表:创建集群资源。
5.1. 在 Pacemaker 集群中使用 XFS 文件系统配置一个 LVM 卷
- 要点:您可以在集群节点之间共享的存储中创建 LVM 逻辑卷。
- 要点:下面的流程创建了一个 LVM 逻辑卷,然后在该卷上创建一个 XFS 文件系统,以便在 Pacemaker 集群中使用。在这个示例中,使用共享分区 /dev/sdb1 来存储创建 LVM 逻辑卷的 LVM 物理卷。
- 列表:在集群的两个节点中,执行以下步骤将 LVM 系统 ID 的值设置为系统的 uname 标识符值。LVM 系统 ID 将用于确保只有集群可以激活卷组。 将 /etc/lvm/lvm.conf 配置文件中的 system_id_source 配置选项设置为 uname。 # Configuration option global/system_id_source. system_id_source = "uname" 验证节点上的 LVM 系统 ID 是否与节点的 uname 匹配。 # lvm systemid system ID: z1.example.com # uname -n z1.example.com
- 列表:将 /etc/lvm/lvm.conf 配置文件中的 system_id_source 配置选项设置为 uname。 # Configuration option global/system_id_source. system_id_source = "uname"
- 列表:验证节点上的 LVM 系统 ID 是否与节点的 uname 匹配。 # lvm systemid system ID: z1.example.com # uname -n z1.example.com
- 列表:创建 LVM 卷并在该卷上创建一个 XFS 文件系统。由于 /dev/sdb1 分区是共享的存储,因此您只在一个节点中执行这个操作过程。 在分区 /dev/sdb1 上创建一个 LVM 物理卷。 [root@z1 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created 创建由物理卷 /dev/sdb1 组成的卷组 my_vg。 指定 --setautoactivation n 标志,以确保集群中 Pacemaker 管理的卷组在启动时不会自动激活。如果您要为要创建的 LVM 卷使用现有卷组,您可以使用 vgchange --setautoac…
- 列表:在分区 /dev/sdb1 上创建一个 LVM 物理卷。 [root@z1 ~]# pvcreate /dev/sdb1 Physical volume "/dev/sdb1" successfully created
- 列表:创建由物理卷 /dev/sdb1 组成的卷组 my_vg。 指定 --setautoactivation n 标志,以确保集群中 Pacemaker 管理的卷组在启动时不会自动激活。如果您要为要创建的 LVM 卷使用现有卷组,您可以使用 vgchange --setautoactivation n 命令为卷组重置此标记。 [root@z1 ~]# vgcreate --setautoactivation n my_vg /dev/sdb1 Volume group "my_vg" successfully created 注意 如果您的 LVM 卷组包含一个或多个位于远程块存储上的物理卷,如 iSCSI 目标,红帽建议您确保服务…
- 命令/配置摘录:
# Configuration option global/system_id_source. system_id_source = "uname"
# lvm systemid- 注意:注意 LVM 卷以及集群节点使用的对应分区和设备必须只能连接到集群节点。
- 注意:注意 如果您的 LVM 卷组包含一个或多个位于远程块存储上的物理卷,如 iSCSI 目标,红帽建议您确保服务在 Pacemaker 启动前启动。有关为 Pacemaker 集群使用的远程物理卷配置启动顺序的详情,请参考 为不由 Pacemaker 管理的资源依赖项配置启动顺序。
5.2. 配置一个 NFS 共享
- 要点:您可以配置 NFS 共享来支持 NFS 服务故障切换。
- 要点:流程
- 列表:在集群的两个节点上都创建 /nfsshare 目录。 # mkdir /nfsshare
- 列表:在集群的一个节点上执行以下步骤。 确保在 Pacemaker 集群中使用 XFS 文件系统配置 LVM 卷时创建的逻辑卷已 被激活,然后将您在逻辑卷上创建的文件系统挂载到 /nfsshare 目录。 [root@z1 ~]# lvchange -ay my_vg/my_lv [root@z1 ~]# mount /dev/my_vg/my_lv /nfsshare 在 /nfsshare 目录上创建 exports 目录树。 [root@z1 ~]# mkdir -p /nfsshare/exports [root@z1 ~]# mkdir -p /nfsshare/exports/export1 [root@z1 ~]# mkd…
- 列表:确保在 Pacemaker 集群中使用 XFS 文件系统配置 LVM 卷时创建的逻辑卷已 被激活,然后将您在逻辑卷上创建的文件系统挂载到 /nfsshare 目录。 [root@z1 ~]# lvchange -ay my_vg/my_lv [root@z1 ~]# mount /dev/my_vg/my_lv /nfsshare
- 列表:在 /nfsshare 目录上创建 exports 目录树。 [root@z1 ~]# mkdir -p /nfsshare/exports [root@z1 ~]# mkdir -p /nfsshare/exports/export1 [root@z1 ~]# mkdir -p /nfsshare/exports/export2
- 列表:将文件放到 exports 目录中,以便 NFS 客户端进行访问。在本例中,我们创建了名为 clientdatafile1 和 clientdatafile2 的测试文件。 [root@z1 ~]# touch /nfsshare/exports/export1/clientdatafile1 [root@z1 ~]# touch /nfsshare/exports/export2/clientdatafile2
- 列表:卸载文件系统并停用 LVM 卷组。 [root@z1 ~]# umount /dev/my_vg/my_lv [root@z1 ~]# vgchange -an my_vg
- 命令/配置摘录:
# mkdir /nfsshare
[root@z1 ~]# lvchange -ay my_vg/my_lv [root@z1 ~]# mount /dev/my_vg/my_lv /nfsshare5.3. 为集群中的 NFS 服务器配置资源和资源组
- 要点:您可以为集群中的 NFS 服务器配置集群资源。
- 要点:以下步骤配置系统资源。为确保这些资源在同一节点上运行,它们都配置为资源组 nfsgroup 的一部分。资源将以您添加到组的顺序启动,并按照添加到组中的相反顺序停止。仅从集群的一个节点运行此步骤。
- 列表:创建名为 my_lvm 的 LVM 激活资源。由于资源组 nfsgroup 尚不存在,这个命令会创建资源组。 警告 不要配置多于一个的在主动/被动 HA 配置中使用相同 LVM 卷组的 LVM-activate 资源,因为这可能导致数据崩溃。另外,不要在主动/被动 HA 配置中将 LVM-activate 资源配置为克隆资源。 [root@z1 ~]# pcs resource create my_lvm ocf💓LVM-activate vgname=my_vg vg_access_mode=system_id --group nfsgroup
- 列表:检查集群的状态,以验证资源是否在运行。 root@z1 ~]# pcs status Cluster name: my_cluster Last updated: Thu Jan 8 11:13:17 2015 Last change: Thu Jan 8 11:13:08 2015 Stack: corosync Current DC: z2.example.com (2) - partition with quorum Version: 1.1.12-a14efad 2 Nodes configured 3 Resources configured Online: [ z1.example.com z2.example.com…
- 列表:为集群配置 Filesystem 资源。 以下命令配置一个名为 nfsshare 的 XFS Filesystem 资源配置,来作为 nfsgroup 资源组的一部分。这个文件系统使用您 在集群中配置具有 XFS 文件系统的 LVM 卷 时创建的 LVM 卷组和 XFS 文件系统,并将挂载到您在 配置 NFS 共享 中创建的 /nfsshare 目录上。 [root@z1 ~]# pcs resource create nfsshare Filesystem device=/dev/my_vg/my_lv directory=/nfsshare fstype=xfs --group nfsgroup 您可以使用 options=o…
- 列表:验证 my_lvm 和 nfsshare 资源是否正在运行。 [root@z1 ~]# pcs status ... Full list of resources: myapc (stonith:fence_apc_snmp): Started z1.example.com Resource Group: nfsgroup my_lvm (ocf::heartbeat:LVM-activate): Started z1.example.com nfsshare (ocf::heartbeat:Filesystem): Started z1.example.com ...
- 列表:创建名为 nfs-daemon 的 nfsserver 资源,作为资源组nfsgroup 的一部分。 注意 nfsserver 资源允许您指定 nfs_shared_infodir 参数,它是一个 NFS 服务器用于存储与 NFS 相关的有状态信息的目录。 建议将此属性设置为您在这个导出集合中创建的 Filesystem 资源的子目录。这样可确保 NFS 服务器将其有状态的信息存储在需要重新定位资源组时可供另一个节点使用的设备中。在这个示例中; /nfsshare 是由 Filesystem 资源管理的 shared-storage 目录 /nfsshare/exports/export1 和 /nfsshare/exports/…
- 列表:添加 exportfs 资源以导出 /nfsshare/exports 目录。这些资源是 nfsgroup 资源组的一部分。这为 NFSv4 客户端构建了一个虚拟目录。NFSv3 客户端也可以访问这些导出。 注意 只有在您要为 NFSv4 客户端创建虚拟目录时才需要 fsid=0 选项。如需更多信息,请参阅红帽知识库解决方案 如何在 NFS 服务器的 /etc/exports 文件中配置 fsid 选项? [root@z1 ~]# pcs resource create nfs-root exportfs clientspec=192.168.122.0/255.255.255.0 options=rw,sync,no_root_…
- 命令/配置摘录:
[root@z1 ~]# pcs resource create my_lvm ocf:heartbeat:LVM-activate vgname=my_vg vg_access_mode=system_id --group nfsgroup
root@z1 ~]# pcs status- 注意:注意 如果您还没有为集群配置隔离设备,默认情况下资源不会启动。 如果发现您配置的资源没有运行,您可以运行 pcs resource debug-start resource 命令来测试资源配置。这会在集群控制之外启动服务。当配置的资源再次运行时,运行 pcs resource cleanup resource 以使集群已了解到更新。
- 注意:警告 不要配置多于一个的在主动/被动 HA 配置中使用相同 LVM 卷组的 LVM-activate 资源,因为这可能导致数据崩溃。另外,不要在主动/被动 HA 配置中将 LVM-activate 资源配置为克隆资源。
5.4. 测试 NFS 资源配置
- 要点:您可以在高可用性集群中验证您的 NFS 资源配置。您应该可以使用 NFSv3 或 NFSv4 挂载导出的文件系统。
- 要点:测试 NFS 导出
- 列表:如果您在集群节点上运行 firewalld 守护进程,请确保在所有节点上都启用了 NFS 访问所需的端口。
- 列表:在与部署位于同一个网络中的、位于集群以外的一个节点中,通过挂载 NFS 共享来确定 NFS 共享。在本例中,我们使用 192.168.122.0/24 网络。 # showmount -e 192.168.122.200 Export list for 192.168.122.200: /nfsshare/exports/export1 192.168.122.0/255.255.255.0 /nfsshare/exports 192.168.122.0/255.255.255.0 /nfsshare/exports/export2 192.168.122.0/255.255.255.0
- 列表:要验证您可以用 NFSv4 挂载 NFS 共享,将 NFS 共享挂载到客户端节点的目录中。挂载后,请确定导出目录的内容是可见的。测试后卸载共享。 # mkdir nfsshare # mount -o "vers=4" 192.168.122.200:export1 nfsshare # ls nfsshare clientdatafile1 # umount nfsshare
- 列表:确定您可以用 NFSv3 挂载 NFS 共享。挂载后,验证测试文件 clientdatafile1 可见。和 NFSv4 不同,因为 NFSv3 不使用虚拟文件系统,所以您必须挂载一个特定的导出。测试后卸载共享。 # mkdir nfsshare # mount -o "vers=3" 192.168.122.200:/nfsshare/exports/export2 nfsshare # ls nfsshare clientdatafile2 # umount nfsshare
- 列表:在集群外的节点上挂载 NFS 共享,并验证访问您在配置 NFS 共享中创建的 clientdatafile1 文件。 # mkdir nfsshare # mount -o "vers=4" 192.168.122.200:export1 nfsshare # ls nfsshare clientdatafile1
- 列表:在集群的一个节点中,确定集群中的哪个节点正在运行 nfsgroup。在本例中,nfsgroup 在 z1.example.com 上运行。 [root@z1 ~]# pcs status ... Full list of resources: myapc (stonith:fence_apc_snmp): Started z1.example.com Resource Group: nfsgroup my_lvm (ocf::heartbeat:LVM-activate): Started z1.example.com nfsshare (ocf::heartbeat:Filesystem): Started z1.exa…
- 命令/配置摘录:
# showmount -e 192.168.122.200
Export list for 192.168.122.200: /nfsshare/exports/export1 192.168.122.0/255.255.255.0 /nfsshare/exports 192.168.122.0/255.255.255.0 /nfsshare/exports/export2 192.168.122.0/255.255.255.0- 注意:注意 从 待机 模式中删除节点本身不会导致资源切换到该节点。这将依赖于资源的 resource-stickiness 值。有关 resource-stickiness 元属性的详情,请参考 配置资源以首选其当前节点。
第 6 章 将配置更改保存到工作文件中
- 要点:将配置更改保存到文件以暂存更新,而不影响活动的 CIB。然后,您可以在不立即更新正在运行的集群的情况下定义多个更改。
- 要点:以下是将更改推送到 CIB 文件的建议步骤。这个过程创建原始保存的 CIB 文件的副本并修改该副本。将这些更改推送到活跃 CIB 时,这个过程指定了 pcs cluster cib-push 命令的 diff-against 选项,以便只有原始文件与更新文件之间的更改推送到 CIB。这允许用户并行进行更改而不会相互覆盖其内容,这可以减少 Pacemaker(它不需要解析整个配置文件)的负载。
- 列表:将活动的 CIB 保存到文件中。这个示例将 CIB 保存到名为 original.xml 的文件。 # pcs cluster cib original.xml
- 列表:将保存的文件复制到您要用于配置更新的工作文件中。 # cp original.xml updated.xml
- 列表:根据需要更新您的配置。以下命令在 update.xml 文件中创建一个资源,但不将该资源添加到当前运行的集群配置中。 # pcs -f updated.xml resource create VirtualIP ocf💓IPaddr2 ip=192.168.0.120 op monitor interval=30s
- 列表:将更新的文件推送到活跃的 CIB 中,指定您只推送对原始文件进行的更改。 # pcs cluster cib-push updated.xml diff-against=original.xml
- 列表:另外,您可以使用以下命令推送 CIB 文件的整个内容。 # pcs cluster cib-push filename
- 列表:在推送整个 CIB 文件时,Pacemaker 会检查这个版本,并不允许推送比集群中已存在的 CIB 文件更早的文件。如果您需要更新整个 CIB 文件,其版本早于集群中的当前版本,可以使用 pcs cluster cib-push 命令的 --config 选项。 # pcs cluster cib-push --config filename
- 命令/配置摘录:
# pcs cluster cib original.xml
# cp original.xml updated.xml- 注意:注意 虽然您不应该直接编辑集群配置文件,但您可以使用 pcs cluster cib 命令查看原始集群配置。
第 7 章 显示集群状态
- 要点:您可以使用各种命令来显示集群及其组件的状态。
- 要点:显示完整的集群配置
- 命令/配置摘录:
# pcs config
# pcs status第 8 章 修改、显示和导出 corosync.conf 文件
- 要点:要设置集群参数,corosync 使用 corosync.conf 文件。不要直接编辑 corosync.conf。改为使用 pcs 接口。
8.1. 使用 pcs 命令修改 corosync.conf 文件
- 要点:使用 pcs 修改 corosync.conf 参数,如令牌超时和日志记录级别。pcs 验证所有节点上的输入和同步更改,确保一致性。在一些更新会立即应用时,修改核心传输设置需要一个集群重启。
- 要点:流程
- 列表:以下命令修改 corosync.conf 文件中的参数: # pcs cluster config update [transport pass:quotes[transport options]] [compression pass:quotes[compression options]] [crypto pass:quotes[crypto options]] [totem pass:quotes[totem options]] [--corosync_conf pass:quotes[path]]
- 列表:以下示例命令更新 knet_pmtud_interval 传输值,以及 token 和 join totem 值: # pcs cluster config update transport knet_pmtud_interval=35 totem token=10000 join=100
- 列表:管理集群节点
- 列表:在现有集群中添加和修改链接
- 列表:配置集群仲裁(quorum)
- 列表:配置仲裁设备
- 命令/配置摘录:
# pcs cluster config update [transport pass:quotes[transport options]] [compression pass:quotes[compression options]] [crypto pass:quotes[crypto options]] [totem pass:quotes[totem options]] [--corosync_conf pass:quotes[path]]
# pcs cluster config update transport knet_pmtud_interval=35 totem token=10000 join=1008.2. 使用 pcs 命令显示 corosync.conf 文件
- 要点:显示 corosync.conf 配置文件的内容,以验证集群设置、网络参数和仲裁配置。
- 要点:流程
- 列表:显示 corosync.conf 文件的内容: # pcs cluster corosync 您可以使用 pcs cluster config 命令以人类可读格式打印 corosync.conf 文件的内容,如下例所示: 如果如 按照 UUID 识别集群 中所述手动添加了 UUID ,则此命令的输出包括集群的 UUID 。 [root@r8-node-01 ~]# pcs cluster config Cluster Name: HACluster Cluster UUID: ad4ae07dcafe4066b01f1cc9391f54f5 Transport: knet Nodes: r8-node-01: Link 0 a…
- 命令/配置摘录:
# pcs cluster corosync
[root@r8-node-01 ~]# pcs cluster config8.3. 导出 corosync.conf 文件
- 要点:您可以使用 --output-format=cmd 选项运行 pcs cluster config show 命令,以显示可用于在不同系统上重新创建现有 corosync.conf 文件的 pcs 配置命令。
- 要点:流程
- 列表:导出 corosync.conf 文件: [root@r8-node-01 ~]# pcs cluster config show --output-format=cmd pcs cluster setup HACluster \ r8-node-01 addr=r8-node-01 addr=192.168.122.121 \ r8-node-02 addr=r8-node-02 addr=192.168.122.122 \ transport \ knet \ link \ linknumber=1 \ ping_interval=1000 \ ping_timeout=2000 \ pong_count=5…
- 命令/配置摘录:
[root@r8-node-01 ~]# pcs cluster config show --output-format=cmd
pcs cluster setup HACluster \ r8-node-01 addr=r8-node-01 addr=192.168.122.121 \ r8-node-02 addr=r8-node-02 addr=192.168.122.122 \ transport \ knet \ link \ linknumber=1 \ ping_interval=1000 \ ping_timeout=2000 \ pong_count=5 \ compression \ level=9 \ model=zlib \ threshold=150 \ crypto \ cipher=aes256 \ hash=sha256 \ totem \ downcheck=2000 \ join=50 \ token=10000第 9 章 在 Red Hat High Availability 集群中配置隔离功能
- 要点:当节点变得无响应时,集群必须隔离它以防止数据崩溃。配置隔离,因为无法直接联系该节点。外部隔离设备关闭节点对共享资源的访问或执行硬重启。
- 要点:如果没有隔离设备,您不知道断开连接的节点是否已释放其资源。这可以防止服务在其他节点上运行。相反,系统可能会错误地假设资源被释放,从而导致数据崩溃。因此,无法保证数据完整性,集群配置将不被支持。
9.1. 显示可用的隔离代理及其选项
- 要点:您可以查看可用的隔离代理和特定隔离代理的可用选项。
- 要点:运行以下命令列出所有可用的隔离代理。当您指定过滤器时,这个命令只会显示与过滤器匹配的隔离代理。
- 命令/配置摘录:
# pcs stonith list [filter]
# pcs stonith describe [stonith_agent]- 注意:注意 您的系统硬件决定了用于集群的隔离设备的类型。有关支持的平台和架构,以及不同的隔离设备,请参阅红帽知识库文章 RHEL 高可用性集群的支持策略 中的 集群平台和架构 部分。
- 注意:警告 对于提供 method 选项的隔离代理,fence_sbd 代理除外,cycle 值不被支持,不应被指定,因为它可能导致数据损坏。但是,即使是 fence_sbd,您不应指定一个方法,而是使用默认值。
9.2. 创建隔离设备
- 要点:使用 pcs stonith create 命令创建隔离设备。要查看所有可用的创建选项,请使用 pcs stonith -h 命令。
- 要点:流程
- 列表:创建隔离设备: # pcs stonith create stonith_id stonith_device_type [stonith_device_options] [op operation_action operation_options]
- 列表:以下命令为单一节点创建一个隔离设备: # pcs stonith create MyStonith fence_virt pcmk_host_list=f1 op monitor interval=30s 有些隔离设备只能隔离一个节点,其他设备则可能隔离多个节点。您创建隔离设备时指定的参数取决于您的隔离设备的支持和要求。
- 列表:有些隔离设备可自动决定它们可以隔离哪些节点。
- 列表:您可以在创建隔离设备时使用 pcmk_host_list 参数,以指定由该隔离设备控制的所有机器。
- 列表:有些隔离设备需要主机名与隔离设备可识别的规格映射。在创建隔离设备时,您可以使用 pcmk_host_map 参数来映射主机名。
- 列表:隔离设备的常规属性
- 命令/配置摘录:
# pcs stonith create stonith_id stonith_device_type [stonith_device_options] [op operation_action operation_options]
# pcs stonith create MyStonith fence_virt pcmk_host_list=f1 op monitor interval=30s9.3. 隔离设备的常规属性
- 要点:使用特定于设备的选项和集群范围属性配置隔离行为。设备选项定义代理设置,如 IP 地址和元数据,如延迟。集群属性管理全局逻辑,包括超时和 stonith-enabled 参数。
- 要点:任何集群节点都可以使用任何隔离设备隔离保护其它集群节点,无论隔离资源是启动还是停止。资源是否启动只控制设备的重复监控,而不控制是否使用资源,但以下情况除外:
- 列表:您可以通过运行 pcs stonith disable stonith_id 命令来禁用隔离设备。这将阻止任何节点使用该设备。
- 列表:要防止特定节点使用隔离设备,您可以使用 pcs constraint location … avoids 命令为隔离资源配置位置约束。
- 列表:配置 stonith-enabled=false 将完全禁用隔离。但请注意,红帽不支持隔离功能被禁用的集群,因为它不适用于生产环境。
- 表格样本(共 4 行):
- 项 | 类型 | Default(默认) | 描述
- pcmk_host_map | 字符串 | 用于不支持主机名的设备的主机名到端口号的映射。例如:node1:1;node2:2,3 告知集群 node1 使用端口 1 ,对 node2 使用端口 2 和端口 3。pcmk_host_map 属性支持在 pcmk_host_map 值里在值前面使用反斜杠的特殊字符。例如,您可以指定 pcmk_host_map="node3:plug\ 1",来在主机别名中包含一个空格。
- pcmk_host_list | 字符串 | 此设备控制的机器列表(可选,除非 pcmk_host_check=static-list)。
- pcmk_host_check | 字符串 | 如果设置了 pcmk_host_list 或 pcmk_host_map,则 static-list 否则,如果隔离设备支持 list 操作,则 dynamic-list 否则,如果隔离设备支持 status 操作,则状态 否则,无。 | 如何确定被设备控制的机器。允许的值: dynamic-list (查询设备)、static-list (检查 pcmk_host_list 属性)、none(假设每个设备都可以隔离每台机器)
9.4. 隔离延迟
- 要点:在双节点集群中,同时通信丢失可能会导致节点相互隔离,从而关闭整个集群。配置隔离延迟以防止此竞争条件。在大型集群中,延迟不需要,仲裁决定隔离机构。
- 要点:您可以根据系统要求设置不同类型的隔离延迟。
- 列表:静态隔离延迟 静态隔离延迟是一个固定的、预先确定的延迟。在一个节点上设置静态延迟使该节点更有可能被隔离,因为它增加了检测到丢失的通信后,其他节点首先启动隔离的机会。在主动/被动集群中,在被动节点上设置一个延迟,使得在通信中断时,被动节点将更有可能被隔离。您可以使用 pcmk_delay_base 实例属性配置静态延迟。要配置不同的延迟,请为每个节点在单独的隔离设备上设置此属性。如果将单个隔离设备用于所有节点,您可以将此属性设置为主机映射,例如 node1:0s;node2:5s。
- 列表:动态隔离延迟 动态隔离延迟是随机的。它可能会有所不同,并在需要隔离时确定。您可以配置随机延迟,并使用 pcmk_delay_max 实例属性为组合基础延迟和随机延迟指定最大值。当每个节点的隔离延迟是随机的时,被隔离的节点也是随机的。如果您的集群为主动/主动设计中的所有节点配置了单一隔离设备,则可能会发现此功能。
- 列表:优先级隔离延迟 优先级隔离延迟基于活跃的资源优先级。如果所有资源具有相同的优先级,则运行最少资源的节点是被隔离的节点。在大多数情况下,您只使用一个与延迟相关的参数,但可以组合它们。合并与延迟相关的参数,将资源的优先级值加在一起,以创建总延迟。您可以使用 priority-fencing-delay 集群属性配置优先级隔离延迟。您可以在主动/主动集群设计中发现此功能,因为它可以在节点之间的通信丢失时让运行最少资源的节点更有可能被隔离。
- 列表:使用 priority-fencing-delay 属性设置的任何延迟都会被添加到 pcmk_delay_base 和 pcmk_delay_max 实例属性中的任何延迟中。当两个节点具有相等的优先级时,或者两个节点因为节点丢失以外的原因需要隔离时,这种行为允许一些延迟,例如当为资源监控器操作设置了 on-fail=fencing 时。当设置这些延迟的组合时,将 priority-fencing-delay 属性设置为一个明显大于pcmk_delay_base 和 pcmk_delay_max 中的最大延迟的值,以确保优先级的节点是首选的。将此属性设置为此值的两倍通常是安全的。
- 列表:只有 Pacemaker 本身调度的隔离才能观察到隔离延迟。由外部代码(如 dlm_controld)调度的隔离和由 pcs stonith fence 命令实现的隔离不会向隔离设备提供必要信息。
- 列表:有些隔离代理实施 delay 参数,其名称由代理决定。这个延迟独立于使用 5-4pcmk_delay38:3.8) 实例属性配置的延迟。如果同时配置了这些延迟,它们会被加在一起,通常不会一起使用。
9.5. 测试隔离设备
- 要点:要防止数据崩溃并成功恢复集群节点失败,请验证隔离设备。对于完整的测试策略,验证网络连接,请运行隔离代理脚本,通过集群管理器触发隔离操作,并模拟物理节点失败。
- 要点:先决条件
- 列表:您已配置了隔离功能,以便 Pacemaker 集群节点或 Pacemaker 远程节点会导致硬终止,而不是安全关闭。
- 列表:您已在 /etc/systemd/logind.conf 文件中禁用了 ACPI soft-off,以便在安全关闭时忽略任何电源按钮的信号。
- 列表:使用 SSH、Telnet、HTTP 或者用来连接到设备的任何远程协议,来手动登录并测试隔离设备,或者查看给出的输出。例如,如果您要为启用了 IPMI 的设备配置隔离,则尝试使用 ipmitool 远程登录。记录手动登录时使用的选项,因为在使用隔离代理时可能需要使用这些选项。 如果您无法登录到隔离设备,请确定设备是可以被 ping 到的,没有因为如防火墙等配置限制对隔离设备的访问,在隔离设备中启用了远程访问,且有正确的凭证。
- 列表:使用隔离代理脚本手动运行隔离代理。这不需要集群服务正在运行,因此您可以在集群配置该设备前执行这个步骤。这可保证在继续前隔离设备响应正常。 注意 这些示例将为 iLO 设备使用 fence_ipmilan 隔离代理脚本。您使用的实际隔离代理以及调用代理的命令取决于服务器硬件。您应该参考您使用的隔离保护代理的 man 页来确定要指定的选项。您通常需要了解隔离设备的登录和密码,以及其它与该隔离设备相关的信息。 以下示例显示了使用 -o status 参数运行 fence_ipmilan 隔离代理脚本的格式,来检查另一个节点上的隔离设备接口的状态,而实际上并没有对该节点进行隔离。这可让您在尝试重新引导节点前测试该设备并使其可用。在运行这个…
- 列表:一旦隔离设备在集群中配置了与手动操作相同的选项,并且集群已经启动,则可以从任何节点(或者多次从不同的节点)使用 pcs stonith fence 命令来测试隔离,如下例所示。pcs stonith fence 命令从 CIB 中读取集群配置,并调用配置的隔离代理来启动隔离操作。这会验证集群配置是否正确。 # pcs stonith fence node_name 如果 pcs stonith fence 命令正常工作,这意味着发生隔离事件时集群的隔离配置应该可以正常工作。如果命令失败,这意味着集群管理无法通过它获取的配置调用隔离设备。检查以下问题并根据需要更新集群配置。 检查您的隔离配置。例如,如果您使用了主机映射,则应该确保系…
- 列表:检查您的隔离配置。例如,如果您使用了主机映射,则应该确保系统可以使用您提供的主机名查找节点。
- 命令/配置摘录:
# fence_ipmilan -a ipaddress -l username -p password -o status
# fence_ipmilan -a ipaddress -l username -p password -o reboot- 注意:注意 这些示例将为 iLO 设备使用 fence_ipmilan 隔离代理脚本。您使用的实际隔离代理以及调用代理的命令取决于服务器硬件。您应该参考您使用的隔离保护代理的 man 页来确定要指定的选项。您通常需要了解隔离设备的登录和密码,以及其它与该隔离设备相关的信息。
- 注意:注意 如果正在测试的隔离代理是 fence_drac 、fence_ilo 或系统管理设备的其他一些隔离代理,并且一直出现故障,则返回尝试 fence_ipmilan。大多数系统管理卡支持 IPMI 远程登录,唯一支持的隔离代理是 fence_ipmilan。
9.6. 配置隔离级别
- 要点:Pacemaker 通过一个称为隔离拓扑的功能实现有多个设备的节点的隔离。要实现拓扑结构,根据常规创建独立设备,然后在配置中的隔离拓扑部分定义一个或多个隔离级别。
- 要点:Pacemaker 会按如下方式处理隔离级别:
- 列表:级别以整数形式递增,从 1 开始。
- 列表:如果设备失败,对当前级别的处理会中断。不会执行该级别的其他设备,而是尝试下一个级别。
- 列表:如果所有设备被成功隔离,那么该级别已成功,且不会尝试其他级别。
- 列表:当一个级别被通过(success)或所有级别都已经被尝试(failed)后,操作就会完成。
- 列表:您已为节点 rh7-2 配置了名为 my_ilo 的 ilo 隔离设备。
- 列表:您已为节点 rh7-2 配置了名为 my_apc 的 apc 隔离设备。
- 命令/配置摘录:
# pcs stonith level add level node devices
# pcs stonith level add 1 rh7-2 my_ilo9.7. 删除隔离级别
- 要点:您可以删除指定节点和设备的隔离级别。如果没有指定节点或设备,则您指定的隔离级别会从所有节点中删除。
- 要点:流程
- 列表:删除指定节点和设备的隔离级别: # pcs stonith level remove level [node_id] [stonith_id] ... [stonith_id]
- 命令/配置摘录:
# pcs stonith level remove level [node_id] [stonith_id] ... [stonith_id]9.8. 清除隔离级别
- 要点:您可以清除指定节点或 stonith id 上的隔离级别。如果您没有指定节点或 stonith id,则会清除所有隔离级别。
- 要点:流程
- 列表:清除指定节点或 stonith id 上的隔离级别: # pcs stonith level clear [node]|stonith_id(s)]
- 列表:如果您指定一个以上的 stonith id,则必须用逗号分开(不要有空格),如下例所示。 # pcs stonith level clear dev_a,dev_b
- 命令/配置摘录:
# pcs stonith level clear [node]|stonith_id(s)]
# pcs stonith level clear dev_a,dev_b9.9. 验证隔离级别中的节点和设备
- 要点:您可以验证所有在隔离级别指定的隔离设备和节点都存在。
- 要点:流程
- 列表:使用以下命令验证在隔离级别中指定的所有隔离设备和节点是否存在: # pcs stonith level verify
- 命令/配置摘录:
# pcs stonith level verify9.10. 在隔离拓扑中指定节点
- 要点:您可以在隔离拓扑中通过在节点名称上应用的正则表达式、节点属性及其值来指定节点。
- 要点:流程
- 列表:以下命令将节点 node1、 node 2 和 node3 配置为使用隔离设备 apc1 和 apc2,节点 node4、node5 和 node6 使用隔离设备 apc3 和 apc4 : # pcs stonith level add 1 "regexp%node[1-3]" apc1,apc2 # pcs stonith level add 1 "regexp%node[4-6]" apc3,apc4
- 列表:以下命令使用节点属性匹配得到相同的结果: # pcs node attribute node1 rack=1 # pcs node attribute node2 rack=1 # pcs node attribute node3 rack=1 # pcs node attribute node4 rack=2 # pcs node attribute node5 rack=2 # pcs node attribute node6 rack=2 # pcs stonith level add 1 attrib%rack=1 apc1,apc2 # pcs stonith level add 1 attrib%rack=2 apc3…
- 命令/配置摘录:
# pcs stonith level add 1 "regexp%node[1-3]" apc1,apc2 # pcs stonith level add 1 "regexp%node[4-6]" apc3,apc4
# pcs node attribute node1 rack=1 # pcs node attribute node2 rack=1 # pcs node attribute node3 rack=1 # pcs node attribute node4 rack=2 # pcs node attribute node5 rack=2 # pcs node attribute node6 rack=2 # pcs stonith level add 1 attrib%rack=1 apc1,apc2 # pcs stonith level add 1 attrib%rack=2 apc3,apc49.11. 配置冗余电源的隔离
- 要点:当为冗余电源配置隔离时,集群必须确保在尝试重启主机时,在恢复电源前两个电源都关闭。
- 要点:如果节点永远无法完全断电,则该节点可能无法释放其资源。这可能会导致同时访问这些资源,并导致节点崩溃的问题。
- 列表:创建第一个隔离设备。 # pcs stonith create apc1 fence_apc_snmp ipaddr=apc1.example.com login=user passwd='7a4D#1j!pz864' pcmk_host_map="node1.example.com:1;node2.example.com:2"
- 列表:创建第二个隔离设备。 # pcs stonith create apc2 fence_apc_snmp ipaddr=apc2.example.com login=user passwd='7a4D#1j!pz864' pcmk_host_map="node1.example.com:1;node2.example.com:2"
- 列表:指定需要这两个设备来隔离节点。 # pcs stonith level add 1 node1.example.com apc1,apc2 # pcs stonith level add 1 node2.example.com apc1,apc2
- 命令/配置摘录:
# pcs stonith create apc1 fence_apc_snmp ipaddr=apc1.example.com login=user passwd='7a4D#1j!pz864' pcmk_host_map="node1.example.com:1;node2.example.com:2"
# pcs stonith create apc2 fence_apc_snmp ipaddr=apc2.example.com login=user passwd='7a4D#1j!pz864' pcmk_host_map="node1.example.com:1;node2.example.com:2"9.12. 管理隔离设备
- 要点:pcs 命令行界面提供各种命令,您可以用来在配置后管理隔离设备。
9.12.1. 显示配置的隔离设备
- 要点:以下命令显示所有目前配置的隔离设备。如果指定了 stonith_id,命令仅显示那个配置的隔离设备的选项。如果指定了 --full 选项,则会显示所有配置的隔离选项。
- 命令/配置摘录:
# pcs stonith config [stonith_id] [--full]9.12.2. 使用 pcs 命令导出隔离设备
- 要点:您可以使用 pcs stonith config 命令的 --output-format=cmd 选项显示可用于在不同系统上重新创建配置的隔离设备的 pcs 命令。
- 要点:以下命令创建一个 fence_apc_snmp 隔离设备,并显示您可以用来重新创建该设备的 pcs 命令。
- 命令/配置摘录:
# pcs stonith create myapc fence_apc_snmp ip="zapc.example.com" pcmk_host_map="z1.example.com:1;z2.example.com:2" username="apc" password="apc" # pcs stonith config --output-format=cmd
Warning: Only 'text' output format is supported for stonith levels pcs stonith create --no-default-ops --force -- myapc fence_apc_snmp \ ip=zapc.example.com password=apc 'pcmk_host_map=z1.example.com:1;z2.example.com:2' username=apc \ op \ monitor interval=60s id=myapc-monitor-interval-60s9.12.3. 导出隔离级别配置
- 要点:pcs stonith config 和 pcs stonith level config 命令支持 --output-format= 选项,来以 JSON 格式和 pcs 命令导出隔离级别配置。
- 列表:指定 --output-format=cmd 会显示从配置隔离级别的当前集群配置创建的 pcs 命令。您可以使用这些命令在不同系统上重新创建配置的隔离级别。
- 列表:指定 --output-format=json ,以 JSON 格式显示隔离级别配置,这适用于机器解析。
9.12.4. 修改和删除隔离设备
- 要点:使用以下命令向当前配置的隔离设备修改或添加选项。
- 要点:使用 pcs stonith update 命令更新 SCSI 隔离设备会导致在隔离资源运行的同一节点上运行的所有资源重启。您可以使用以下命令的任一版本来更新 SCSI 设备,而不会重启其他集群资源。SCSI 隔离设备可被配置为多路径设备。
- 命令/配置摘录:
# pcs stonith update stonith_id [stonith_device_options]
# pcs stonith update-scsi-devices stonith_id set device-path1 device-path2 # pcs stonith update-scsi-devices stonith_id add device-path1 remove device-path29.12.5. 手动隔离一个集群节点
- 要点:您可以使用以下命令手动隔离节点。如果您指定了 --off 选项,这将使用 off API 调用 stonith,这将关闭节点,而不是重启它。
- 要点:如果隔离设备无法隔离节点,即使它不再活跃,集群可能无法恢复节点上的资源。如果发生了这种情况,在手动确定该节点已关闭后,您可以输入以下命令向集群确认节点已关闭,并释放其资源以用于恢复。
- 命令/配置摘录:
# pcs stonith fence node [--off]
# pcs stonith confirm node- 注意:警告 如果您指定的节点实际上没有关闭,但运行通常由集群控制的集群软件或服务,则会发生数据损坏和集群故障。
9.12.6. 禁用隔离设备
- 要点:要禁用隔离设备,请运行 pcs stonith disable 命令。
- 要点:以下命令禁用隔离设备 myapc。
- 命令/配置摘录:
# pcs stonith disable myapc9.12.7. 防止节点使用隔离设备
- 要点:要防止特定节点使用隔离设备,您可以为隔离资源配置位置限制。
- 要点:以下示例阻止隔离设备 node1-ipmi 在 node1 上运行。
- 命令/配置摘录:
# pcs constraint location node1-ipmi avoids node19.13. 其他资源
- 列表:在 Red Hat High Availability Cluster 中进行隔离(Red Hat 知识库)
第 10 章 在高可用性集群中配置 SBD 隔离
- 要点:基于存储的 death (SBD)是一种隔离机制,可为传统的"电源隔离"代理提供替代方案。SBD 使用 watchdog 计时器,并在节点变得无响应或丢失仲裁时使节点自我保护。
- 要点:在基于网络的电源管理不可用的环境中,您可以使用这种方法,或者确保节点在丢失对共享存储结构的访问时重新引导。
10.1. SBD 隔离概述
- 要点:如果某些健康检查失败或者无法按磁盘消息传递请求重新启动,则基于存储的 death (SBD)隔离机制为节点提供自我保护的机制。您可以根据硬件和存储的可用性,以两种方式之一实施 SBD。
- 表格样本(共 6 行):
- 功能 | 仅 watchdog 的隔离 | Poison-pill 隔离
- 机制 | 依赖于健康和仲裁监控。如果节点丢失仲裁或无法验证自己的健康状况,它会停止重置 watchdog 计时器。只有 stonith-watchdog-timeout 过期后,集群才会假设隔离成功。 | 使用共享存储来通过 fence_sbd 代理发送显式"poison pill"消息。如果目标节点响应,它会读取消息并立即重启。如果节点不响应或存储无法访问,它依赖于 watchdog 计时器来触发重启。
- 存储要求 | 无。 | 需要 1 到 3 个共享块设备(每个设备最少 4 MB)。设备必须可以被所有节点访问,也无法托管文件系统、由 LVM 管理,或者作为集群管理的 RAID/mirroring 层的一部分。
- 可靠性 | 可靠性来自 watchdog 设备(硬件 WDT 或 softdog)来监管软件计时器。硬件 WDTs 是首选的;softdog (内核空间)是一个受支持的回退,但如果内核完全挂起或资源不足,则可能会失败。 | 可靠性从相同的 watchdog 设备机制衍生而来。虽然磁盘有助于通信,但 watchdog 设备负责保证重启。因为 Pacemaker 感知在磁盘不可用时可以访问集群,因此即使单个共享磁盘并不代表单一故障点(SPOF)。但是,当存储设备不可用时,请使用三个磁盘。
10.2. 配置仅限 watchdog 的 SBD 隔离
- 要点:在仅限 watchdog 的配置节点中,会监控仲裁状态及其健康状况,如集群所示。如果节点无法检索集群视图(CIB),或者集群决定节点处于不健康状态,则该节点上的本地 watchdog 计时器过期,请触发重启。
- 要点:先决条件
- 列表:正在运行的高可用性集群。
- 列表:在 /dev/watchdog 或者每个节点中配置的另一个设备路径的所有节点上提供功能 watchdog 计时器(WDT)设备。
- 列表:其它隔离设备都处于活动状态,或者其他隔离设备在群集 watchdog-fencing 中可用,则可仅限于无法由这些隔离隔离的节点,或者可以将隔离拓扑配置为将 watchdog-fencing 配置为将 watchdog-fencing 用作回退
- 列表:在集群的所有节点上安装 sbd 软件包: # dnf install sbd
- 列表:在每个节点上,列出可用的 watchdog 设备来识别正确的设备路径: # pcs stonith sbd watchdog list
- 列表:在每个节点上,通过触发测试来验证 watchdog 设备是否正常工作: 警告 此命令会重启系统,以确认 watchdog 可以成功触发硬件重置。仅在启用 SBD 守护进程前执行此测试,该命令在守护进程控制 watchdog 设备后无法正常工作。 # pcs stonith sbd watchdog test
- 命令/配置摘录:
# dnf install sbd
# pcs stonith sbd watchdog list- 注意:注意 SBD 实现是模块化的,可以在集群中有选择地部署。在异构环境中,比如包含 pacemaker-remote 节点或缺少功能功能 watchdog 设备的硬件,SBD 仍然是兼容成员的可行隔离解决方案。如果没有通用 SBD 支持,不会在支持的节点上排除其选择实现。
- 注意:警告 此命令会重启系统,以确认 watchdog 可以成功触发硬件重置。仅在启用 SBD 守护进程前执行此测试,该命令在守护进程控制 watchdog 设备后无法正常工作。
10.3. 为选择隔离创建可见的 watchdog 设备
- 要点:在一些节点缺少功能硬件 watchdog 的异构集群中,您可以创建一个可见的隔离资源,以确保只对支持的节点应用只有 watchdog 的隔离。
- 要点:先决条件
- 列表:SBD 在支持的节点上以 watchdog-only 模式启用。
- 列表:目标节点上提供了一个功能的硬件 watchdog 设备。
- 列表:创建 watchdog 隔离资源。使用 pcmk_host_list 属性仅指定具有功能 watchdog 设备的节点: # pcs stonith create watchdog_fencing fence_watchdog pcmk_host_list="node-01,node-02"
- 列表:如果集群包含不在 pcmk_host_list 中的节点,请配置这些特定节点的替代隔离方法(如 IPMI 或基于电源的代理)。
- 列表:配置隔离级别,以使用 watchdog 作为回退。在级别 1 和 2 级设置 watchdog 代理的主要隔离代理。 # pcs stonith level add 1 node-01 ipmi_fencing # pcs stonith level add 2 node-01 watchdog_fencing
- 列表:确认资源仅限于指定的主机: # pcs stonith config watchdog_fencing
- 命令/配置摘录:
# pcs stonith create watchdog_fencing fence_watchdog pcmk_host_list="node-01,node-02"
# pcs stonith level add 1 node-01 ipmi_fencing # pcs stonith level add 2 node-01 watchdog_fencing10.4. 使用 QDevice 在 2 节点集群中配置仅限 watchdog 的 SBD 隔离
- 要点:使用 2 节点集群时,添加一个仲裁设备(corosync-qdevice)为仲裁提供额外的投票,从而使其行为接近奇数数字的成员集群。这允许集群绕过仅限 watchdog 的 SBD 隔离的标准 3 节点最小仲裁投票限制。
- 要点:当将 QDevice 与仅限 watchdog 的 SBD 隔离合并时,您必须严格对齐您的超时值,否则 SBD 会阻止启动。
- 列表:确定集群所需的超时值: qdevice-sync_timeout :默认值为 30s。 SBD_WATCHDOG_TIMEOUT :如果这个值小于 qdevice-sync_timeout,则仲裁状态更新可能会足够延迟,从而导致脑裂的情况。 stonith-watchdog-timeout :此值必须高于 SBD_WATCHDOG_TIMEOUT,以确保集群会等待多久,以便节点自行隔离。把它设置为 SBD_WATCHDOG_TIMEOUT 的值。因此,如果 SBD_WATCHDOG_TIMEOUT 是 30,这应该为 60。
- 列表:qdevice-sync_timeout :默认值为 30s。
- 列表:SBD_WATCHDOG_TIMEOUT :如果这个值小于 qdevice-sync_timeout,则仲裁状态更新可能会足够延迟,从而导致脑裂的情况。
- 列表:stonith-watchdog-timeout :此值必须高于 SBD_WATCHDOG_TIMEOUT,以确保集群会等待多久,以便节点自行隔离。把它设置为 SBD_WATCHDOG_TIMEOUT 的值。因此,如果 SBD_WATCHDOG_TIMEOUT 是 30,这应该为 60。
- 列表:启用 SBD 并配置 watchdog 超时。通过不指定任何块设备,SBD 将自动默认使用仅限 watchdog 的隔离: # pcs stonith sbd enable SBD_WATCHDOG_TIMEOUT=30
- 列表:配置 stonith-watchdog-timeout 集群属性,以启用隐式"hidden" watchdog STONITH 设备: # pcs property set stonith-watchdog-timeout=60
- 命令/配置摘录:
# pcs stonith sbd enable SBD_WATCHDOG_TIMEOUT=30
# pcs property set stonith-watchdog-timeout=6010.5. 配置 poison-pill SBD 隔离
- 要点:Poison-pill 隔离使用共享块设备来通信隔离指令。当需要隔离节点时,集群会将消息写入共享设备。目标节点读取此消息并重启其自身。
- 要点:先决条件
- 列表:正在运行的高可用性集群。
- 列表:在 /dev/watchdog 的所有节点上提供功能 watchdog 计时器(WDT)设备。
- 列表:所有节点都可以访问三个共享块设备(通常为 1-4mb )。
- 列表:共享设备不得包含文件系统或者由 LVM 管理。
- 列表:在集群的所有节点上安装 SBD 和隔离代理软件包: # dnf install sbd fence-agents-sbd
- 列表:在每个节点上,通过触发测试来验证 watchdog 设备是否正常工作: 警告 此命令会重启系统,以确认 watchdog 可以成功触发硬件重置。仅在启用 SBD 守护进程前执行此测试,该命令在守护进程控制 watchdog 设备后无法正常工作。 # pcs stonith sbd watchdog test
- 命令/配置摘录:
# dnf install sbd fence-agents-sbd
# pcs stonith sbd watchdog test- 注意:警告 此命令会重启系统,以确认 watchdog 可以成功触发硬件重置。仅在启用 SBD 守护进程前执行此测试,该命令在守护进程控制 watchdog 设备后无法正常工作。
- 注意:注意 如果您使用多个共享块设备来实现冗余,请对每个设备重复 device= 参数(例如: device=/dev/sdb device=/dev/sdc)。
10.6. poison-pill 隔离中的时间配置注意事项
- 要点:当通过基于存储的死机(SBD)使用 poison-pill 隔离部署红帽高可用性集群时,请仔细配置时间。正确的超时可确保在故障过程中安全隔离节点,防止在允许集群服务稳定时出现脑裂状况。
- 要点:以下是 poison-pill 隔离场景中时间配置的主要注意事项:
- 列表:目标成功读取消息和自我保护 : 目标节点仍然响应的预期场景,成功从共享块设备读取 poison-pill 消息,并启动自助隔离。
- 列表:目标丢失对磁盘的访问: 目标节点仍在运行,但发现它无法从定数量的共享磁盘读取,从而导致它识别访问和自我保护的丢失。
- 列表:目标完全无响应: 目标节点已冻结,能够执行任何操作。由于它无法运行操作,因此将无法重置(硬件)-watchdog,这也会导致重新引导。 如果 msgwait 设置低于从前一个注意事项派生的超时,则当目标节点仍然处理该操作或等待其硬件 watchdog 过期时,集群可以预先声明隔离操作。
- 列表:使用 SBD : 可以增加 SBD_START_DELAY 来缓解此行为,从而降低节点的重新输入速度,以便旧的广播清除。
- 列表:如果没有 SBD: 对于不使用 SBD 的环境,有提示可以在 unit-file 中直接延迟 corosync 启动以达到相同的结果。
第 11 章 配置集群资源
- 要点:一个 集群资源 是一个程序、应用程序或由集群服务管理的数据的一个实例。这些资源由代理进行抽象,提供一个标准接口,来在集群环境中管理资源。
- 要点:为确保资源健康,您可以在资源的定义中添加监控操作。如果您没有为资源指定监控操作,则会默认添加一个。您可以通过配置该资源的约束来决定集群中资源的行为。您可以配置以下约束类别:
- 列表:location 约束 - 一个决定资源可在哪个节点上运行的位置约束。确定资源可在哪些节点上运行。
- 列表:order 约束 - 一个决定资源运行顺序的排序约束。
- 列表:colocation 约束 - 一个相对于其他资源,决定资源将被放置在哪里的托管约束。
- 列表:--before 和 --after 选项指定添加的资源相对于资源组中已存在的资源的位置。
- 列表:指定 --disabled 选项表示资源不会自动启动。
- 命令/配置摘录:
# pcs resource create resource_id [standard:[provider:]]type [resource_options] [op operation_action operation_options [operation_action operation options]...] [meta meta_options...] [clone [clone_id] [clone_options] | promotable [clone_id] [clone_options] [--wait[=n]]11.1. 资源创建示例
- 要点:以下命令创建一个 standard的 ocf 、名为 VirtualIP 的资源,provider 为 heartbeat,类型为 IPaddr2 。此资源的浮动地址是 192.168.0.120,系统会每 30 秒检查一次资源是否在运行。
- 要点:另外,您可以省略 standard 和 provider 字段,并使用以下命令:这将默认为 ocf 标准, heartbeat 的provider。
- 命令/配置摘录:
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.120 cidr_netmask=24 op monitor interval=30s
# pcs resource create VirtualIP IPaddr2 ip=192.168.0.120 cidr_netmask=24 op monitor interval=30s11.2. 删除配置的资源
- 要点:使用以下命令删除一个配置的资源。
- 要点:例如,以下命令删除具有 VirtualIP 资源 ID 的现有资源。
- 命令/配置摘录:
# pcs resource delete resource_id
# pcs resource delete VirtualIP11.3. 资源代理标识符
- 要点:您为资源定义的标识符告诉集群用于该资源的代理,在哪里找到代理及其合规标准。
- 要点:下表描述了资源代理的这些属性。
- 表格样本(共 4 行):
- 项 | 描述
- standard | 代理符合的标准。允许的值及其含义: * ocf - 指定的 type 是符合 Open Cluster Framework Resource Agent API 的可执行文件名称,位于 /usr/lib/ocf/resource.d/provider 下 * lsb - 指定的 type 是符合 Linux Standard Base Init Script Actions 的可执行文件名称。如果类型没有指定完整路径,则系统将在 /etc/init.d 目录中查找该路径。 * systemd - 指定的 type 是已安装的 systemd 单元的名称 * service - pacemaker 将搜索指定的 类型,首先作为一个 lsb 代理,然后作为 systemd 代理 * nagios - 指定的 类型 是符合 Nagios Plugin API 的可执行文件名称,位于 /usr/libexec/nagios/plugins 目录中,其中 OCF 风格的元数据单独存储在 /usr/share/nagios/plugins-metadata 目录中(由某些常见插件的 nagios-agents-metadata 软件包提供)。
- type | 要使用的资源代理的名称,如 IPaddr 或 Filesystem
- provider | OCF spec 允许多个厂商提供相同的资源代理。红帽提供的大多数代理都使用 heartbeat 作为provider。
11.4. 显示资源和资源参数
- 要点:使用 pcs display 命令检查和监控群集资源。您可以验证资源状态、查看配置参数并列出可用的资源代理、供应商和标准,以确保集群配置正确。
- 表格样本(共 10 行):
- pcs 显示命令 | 结果
- pcs resource describe [standard:[provider:]]type | 显示单个资源的描述、您可以为该资源设置的参数,以及资源的默认值。例如,pcs resource describe ocf💓apache 显示类型为 apache 的资源的信息。
- pcs resource status | 显示所有配置的资源的列表。
- pcs resource config resource_id | 显示为资源配置的参数。
11.5. 为集群资源和元素添加描述
- 要点:您可以为集群资源和其他集群信息基础(CIB)元素添加简短的文本描述。补充文本会记录集群配置,为特定元素提供上下文,并在故障排除期间帮助管理员。
- 要点:支持 description 属性的元素包括原语资源、组、克隆、捆绑包、访问控制列表(ACL)权限、ACL 角色、警报、警报接收者和节点。
- 列表:要在常规 CIB 元素中添加描述,请使用 pcs cib element description 命令: # pcs cib element description <element_id> "<description_text>" 为方便起见,您还可以使用 pcs resource description 和 pcs stonith description 别名。
- 列表:通过查看修改元素的配置来验证是否应用了描述: # pcs resource config <resource_id>
- 命令/配置摘录:
# pcs cib element description <element_id> "<description_text>"
# pcs resource config <resource_id>11.6. 配置资源 meta 选项
- 要点:除了特定于资源的参数外,您还可以为任何资源配置其他资源选项。集群会使用这些选项来决定您的资源的行为。
- 要点:下表描述了资源 meta 选项。
- 表格样本(共 11 行):
- 项 | Default(默认) | 描述
- priority | 0 | 如果不是所有资源都处于活跃状态,集群将停止较低优先级的资源,以便保持优先权更高的资源的活跃状态。
- target-role | Started | 指明集群应尝试将此资源保留在什么状态。允许的值: * Stopped - 强制停止资源 * Started - 允许启动资源(如果是可提升的克隆,则进行提升(如果适用) * Promoted - 允许启动资源,并在可能的情况下提升资源 * Unpromoted - 允许资源启动,但仅在资源可提升但却处于未提升模式
- is-managed | true | 指明是否允许集群启动和停止资源。允许的值: true,false
11.7. 设置 meta 选项
- 要点:在创建资源时,您可以将特定资源的资源选项设置为默认值以外的值。您还可以为现有资源、组或克隆的资源设置资源 meta 选项的值。
- 要点:以下流程提供了示例命令,其在资源创建和现有资源上设置资源 meta 选项的值。
- 列表:创建一个 resource-stickiness 值为 50 的资源。 # pcs resource create VirtualIP ocf💓IPaddr2 ip=192.168.0.120 meta resource-stickiness=50
- 列表:对于名为 dummy_resource 的现有资源,将 failure-timeout meta 选项设置为 20 秒,因此资源可以在 20 秒内尝试在同一节点上重启。 # pcs resource meta dummy_resource failure-timeout=20s
- 列表:显示资源的值,以验证是否设置了 failure-timeout=20s。 # pcs resource config dummy_resource Resource: dummy_resource (class=ocf provider=heartbeat type=Dummy) Meta Attrs: failure-timeout=20s ...
- 命令/配置摘录:
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.120 meta resource-stickiness=50
# pcs resource meta dummy_resource failure-timeout=20s11.8. 更改资源选项的默认值
- 要点:您可以使用 pcs resource defaults update 命令更改所有资源的资源选项默认值。
- 要点:流程
- 列表:以下命令将 resource-stickiness 的默认值重置为 100: # pcs resource defaults update resource-stickiness=100 pcs resource defaults name=value 命令为之前版本中的所有资源设置默认值,保持支持,除非配置了多个默认值。但是,pcs resource defaults update 现在是该命令的首选版本。
- 命令/配置摘录:
# pcs resource defaults update resource-stickiness=10011.9. 更改一组资源选项的默认值
- 要点:您可以使用 pcs resource defaults set create 命令创建多个资源默认值,该命令允许您指定包含 resource 表达式的规则。在使用此命令指定的规则中,仅允许 resource 和 date 表达式(包括 and, or 和括号)。
- 要点:使用 pcs resource defaults set create 命令,您可以为特定类型的所有资源配置默认值。例如,如果您正在运行数据库,需要很长时间才能停止,可以提高数据库类型的 resource-stickiness 默认值,以防止这些资源更频繁地迁移到其他节点。
- 列表:以下命令将类型为 pqsql 的所有资源的 resource-stickiness 默认设置为 100 : # pcs resource defaults set create id=pgsql-stickiness meta resource-stickiness=100 rule resource ::pgsql
- 列表:在这个示例中,::pgsql 代表一个任何类、任何厂商、类型为 pgsql 的资源。 ocf💓pgsql 代表类为 ocf,厂商为 heartbeat,类型为 pgsql。 ocf:pacemaker: 代表类为 ocf,厂商为 pacemaker,类型为任意的资源。
- 列表:ocf💓pgsql 代表类为 ocf,厂商为 heartbeat,类型为 pgsql。
- 列表:ocf:pacemaker: 代表类为 ocf,厂商为 pacemaker,类型为任意的资源。
- 列表:id 选项(即资源默认值的名称)不是强制性的。如果您没有设定此选项, pcs 则会自动生成 ID。设置这个值可让您提供更描述性的名称。 要更改现有集合中的默认值,请使用 pcs resource defaults set update 命令。
- 命令/配置摘录:
# pcs resource defaults set create id=pgsql-stickiness meta resource-stickiness=100 rule resource ::pgsql11.10. 显示当前配置的资源默认设置
- 要点:pcs resource defaults [config] 命令显示目前配置的资源选项的默认值,包括指定的规则。输出可以以文本、JSON 或命令格式显示。
- 要点:pcs resource defaults [config] 命令支持以下输出格式:
- 列表:specifying --output-format=text 以纯文本格式显示配置的资源默认值,这是这个选项的默认格式。
- 列表:指定 --output-format=cmd 会显示从当前集群默认值配置创建的 pcs resource defaults 命令。使用这些命令在另一个系统上重新创建配置的资源默认值。
- 列表:指定 --output-format=json 以 JSON 格式显示配置的资源默认值,这适用于机器解析。
- 列表:为 ocf:pacemaker:pgsql 资源设置默认值: # pcs resource defaults set create id=set-1 score=100 meta resource-stickiness=10 rule resource ocf:pacemaker:pgsql
- 列表:以纯文本形式显示配置的资源默认值: # pcs resource defaults config Meta Attrs: build-resource-defaults resource-stickiness=1 Meta Attrs: set-1 score=100 resource-stickiness=10 Rule: boolean-op=and score=INFINITY Expression: resource ocf:pacemaker:pgsql
- 列表:显示从当前集群默认设置配置中创建的 pcs resource defaults 命令: # pcs resource defaults config --output-format=cmd pcs -- resource defaults set create id=build-resource-defaults \ meta resource-stickiness=1; pcs -- resource defaults set create id=set-1 score=100 \ meta resource-stickiness=10 \ rule 'resource ocf:pacemaker:pgsql'
- 命令/配置摘录:
# pcs resource defaults set create id=set-1 score=100 meta resource-stickiness=10 rule resource ocf:pacemaker:pgsql
# pcs resource defaults config Meta Attrs: build-resource-defaults resource-stickiness=1 Meta Attrs: set-1 score=100 resource-stickiness=10 Rule: boolean-op=and score=INFINITY Expression: resource ocf:pacemaker:pgsql11.11. 配置资源组
- 要点:集集的一个最常见的元素是一组资源,这些资源需要放置在一起,并按顺序启动并按反顺序停止。为简化此配置,Pacemaker 支持资源组的概念。
- 要点:创建资源组
- 列表:资源在一个组中在一起。
- 列表:资源按照您指定的顺序启动。如果组中的资源无法在任何位置运行,则不允许在该资源之后指定资源运行。
- 列表:资源按照您指定的顺序的相反顺序停止。
- 列表:您可以为资源组设置以下选项,它们的含义与为单个资源设置时相同: priority、target-role, is-managed。有关资源 meta 选项的详情,请参考 配置资源 meta 选项。
- 列表:粘性(stickiness)在组中是可选的,它代表一个资源倾向于停留在组中的程度。组的每个活跃资源都会为组的总数贡献其粘性值。因此,如果默认的 resource-stickiness 为 100,并且组有 7 个成员,其中 5 个处于活动状态,则整个组将首选其当前位置,分数为 500。
- 列表:IPaddr 首先启动,然后是 Email。
- 命令/配置摘录:
# pcs resource group add group_name resource_id [resource_id] ... [resource_id] [--before resource_id | --after resource_id]
# pcs resource create resource_id [standard:[provider:]]type [resource_options] [op operation_action operation_options] --group group_name11.12. 显示资源依赖项
- 要点:您可以在树结构中显示集群资源间的关系。
- 要点:如果使用 --full 选项,命令会显示附加信息,包括约束 ID 和资源类型。
- 命令/配置摘录:
# pcs resource relations resource [--full]
# pcs constraint order start C then start D11.13. 其他资源
- 列表:确定资源可在哪些节点上运行
- 列表:确定运行集群资源的顺序
- 列表:Colocating 集群资源
第 12 章 确定资源可在哪些节点上运行
- 要点:位置限制决定资源可在哪些节点上运行。您可以配置位置限制,以确定资源是否首选或避免指定节点。
- 要点:除了位置约束外,资源运行的节点还受到该资源的 resource-stickiness 值的影响,这决定了资源在当前运行的节点上的保留程度。
12.1. 配置位置限制
- 要点:您可以配置位置约束,以控制集群资源可在集群中的哪些节点上运行。您可以使用位置约束使资源首选特定节点,或者阻止资源在特定节点上运行。
12.1.1. 配置基本位置约束
- 要点:您可以配置基本的位置约束,以指定资源是首选某个节点还是避免某个节点,使用可选的 score 值来指示约束的相对首选程度。
- 要点:流程
- 列表:以下命令为资源创建一个位置约束,以偏好指定节点。请注意,可以使用单个命令为多个节点在特定资源上创建约束: # pcs constraint location rsc prefers node[=score] [node[=score]] ...
- 列表:以下命令为资源创建一个位置约束,以避免指定的节点: # pcs constraint location rsc avoids node[=score] [node[=score]] ...
- 列表:下表总结了配置位置约束的基本选项的含义: Expand 表 12.1. 位置限制选项 项 描述 rsc 资源名称 node 节点的名称 分数 正整数值来指示给定资源应首选的资源还是避免给定节点的首选程度。INFINITY 是资源位置约束的默认 score 值。 pcs constraint location rsc prefers 命令中的 score 的 INFINITY 值表示资源将首选可用的节点,但如果指定的节点不可用,则不会阻止资源在其它节点上运行。 pcs constraint location rsc avoids 命令中 score 的 INFINITY 值表示该资源永远不会在该节点上运行,即使没有其它节…
- 命令/配置摘录:
# pcs constraint location rsc prefers node[=score] [node[=score]] ...
# pcs constraint location rsc avoids node[=score] [node[=score]] ...- 表格样本(共 4 行):
- 项 | 描述
- rsc | 资源名称
- node | 节点的名称
- 分数 | 正整数值来指示给定资源应首选的资源还是避免给定节点的首选程度。INFINITY 是资源位置约束的默认 score 值。 pcs constraint location rsc prefers 命令中的 score 的 INFINITY 值表示资源将首选可用的节点,但如果指定的节点不可用,则不会阻止资源在其它节点上运行。 pcs constraint location rsc avoids 命令中 score 的 INFINITY 值表示该资源永远不会在该节点上运行,即使没有其它节点可用。这等同于设置了 score 为 -INFINITY 的 pcs constraint location add 命令。 一个数字分数(即不是 INFINITY)意味着这个约束是可选的,除了其它因素外强于它,此约束将会被遵守。例如,如果资源已放置到另一个节点上,其 resource-stickiness 分数高于 prefers 位置约束的分数,则该资源将保留在其中。
12.1.2. 使用正则表达式配置位置约束
- 要点:pcs 支持位置约束中的正则表达式来匹配资源名称。使用此功能通过单个命令配置多个位置限制。
- 要点:流程
- 列表:以下命令创建一个位置约束,以指定资源 dummy0 到 dummy9 首选 node1 : # pcs constraint location 'regexp%dummy[0-9]' prefers node1
- 命令/配置摘录:
# pcs constraint location 'regexp%dummy[0-9]' prefers node112.1.3. 使用扩展正则表达式配置位置约束
- 要点:由于 Pacemaker 使用 POSIX 扩展正则表达式,如 Open Group Base Specifications Issue 7 的 9.4 Extended Regular Expressions 部分所述,您可以使用以下命令指定相同的约束。
- 要点:流程
- 列表:使用扩展正则表达式配置位置约束: # pcs constraint location 'regexp%dummy[[:digit:]]' prefers node1
- 命令/配置摘录:
# pcs constraint location 'regexp%dummy[[:digit:]]' prefers node112.1.4. 显示位置限制
- 要点:查看位置限制以验证资源放置逻辑。您可以按资源或节点组织显示,过滤特定项目,并包含过期的限制或内部 ID 用于故障排除。
- 要点:流程
- 列表:列出所有当前位置限制: # pcs constraint location [config [resources [resource...]] | [nodes [node...]]] [--full] 如果指定了 resources,命令会显示每个资源(默认)的限制。 如果指定了 nodes,命令会显示每个节点的限制。 如果您指定特定资源或节点,命令只显示该信息。
- 列表:如果指定了 resources,命令会显示每个资源(默认)的限制。
- 列表:如果指定了 nodes,命令会显示每个节点的限制。
- 列表:如果您指定特定资源或节点,命令只显示该信息。
- 列表:要显示所有当前位置、顺序和 colocation 约束,请使用以下命令。要显示内部约束 IDS,请指定 the- full 选项: # pcs constraint [config] [--full] 默认情况下,列出资源约束不会显示过期的限制。要在列表中包含已过期的限制,请使用 pcs constraint 命令的-- all 选项。这将列出已过期的限制,请注意显示中的限制及其关联的规则为 (expired)。
- 列表:列出引用特定资源的约束: # pcs constraint ref resource ...
- 命令/配置摘录:
# pcs constraint location [config [resources [resource...]] | [nodes [node...]]] [--full]
# pcs constraint [config] [--full]12.2. 将资源发现限制为节点子集
- 要点:Pacemaker 在任何位置启动资源前,它首先在每个节点上执行一次性 monitor 操作(通常称为"探测"),以了解资源是否已在运行。这种资源发现的过程可能会导致无法运行 monitor 的节点出现错误。
- 要点:在节点上配置位置约束时,您可以使用 pcs constraint location 命令的 resource-discovery 选项,来为 Pacemaker 是否应该为指定资源在该节点上执行资源发现指示首选。将资源发现限制到物理上能够运行的节点子集可能会在有大量节点时显著提高性能。当使用 pacemaker_remote 来将节点数扩展到数百个节点范围时,应考虑此选项。
- 命令/配置摘录:
# pcs constraint location add id rsc node score [resource-discovery=option]- 注意:警告 将 resource-discovery 设置为 never 或 exclusive 的 Pacemaker 能够检测和停止运行不需要的服务实例(在不应该运行)。系统管理员最多可以确保该服务永远不会在没有资源发现的情况下在节点上活跃(比如卸载相关的软件)。
- 表格样本(共 6 行):
- 项 | 描述
- id | 约束本身的用户选择的名称。
- rsc | 资源名称
- node | 节点的名称
12.3. 配置位置约束策略
- 要点:使用位置限制时,您可以配置常规策略来指定资源可在哪些节点上运行。
- 要点:根据您的需要以及集群的组成,把集群设置为 opt-in 集群还是 opt-out 集群。如果大多数资源可以在大多数节点上运行,那么如果没有选择的协议则可能会导致配置更简单。另一方面,如果大多数资源只能在一小部分节点中运行,那么选择的配置可能比较简单。
- 列表:选择加入集群 - 配置一个集群,默认情况下,任何资源都无法在集群中的任何地方运行,然后有选择地为特定资源启用允许的节点。
- 列表:选择退出集群 - 配置一个集群,默认情况下,所有资源都可以在集群中的任何地方运行,然后为不允许在特定节点上运行的资源创建位置约束。
- 命令/配置摘录:
# pcs property set symmetric-cluster=false
# pcs constraint location Webserver prefers example-1=200 # pcs constraint location Webserver prefers example-3=0 # pcs constraint location Database prefers example-2=200 # pcs constraint location Database prefers example-3=012.4. 配置资源以首选其当前节点
- 要点:配置 resource-stickiness,以定义其当前节点上剩余的资源首选项。Pacemaker 将这个值与其他分数(如位置约束)进行比较,以防止不必要的迁移。
- 要点:resource-stickiness 值为 0 时,群集可以根据需要移动资源,以在节点之间平衡资源。这可能会导致资源在不相关的资源启动或停止时移动。对于正的粘性,资源更倾向于保持原处,只有在其他情况超出粘性时才会移动。这可能会导致新添加的节点在没有管理员干预的情况下无法获取分配给它们的任何资源。
- 列表:配置节点放置策略
- 列表:配置资源 meta 选项
- 命令/配置摘录:
# pcs resource defaults update resource-stickiness=0第 13 章 确定运行集群资源的顺序
- 要点:要确定资源运行的顺序,您必须配置排序约束。
- 要点:以下显示了命令配置排序约束的格式。
- 命令/配置摘录:
# pcs constraint order [action] resource_id then [action] resource_id [options]
# pcs constraint order start firstresource then secondresource- 表格样本(共 5 行):
- 项 | 描述
- resource_id | 执行某个操作的资源的名称。
- action | 资源操作。action 属性可能的值如下: * start - 对资源的启动操作进行排序。 * stop - 资源停止操作。 * promote - 将资源从一个未提升资源提升为一个提升的资源。 * demote - 将资源从提升的资源降级到未提升的资源。 如果没有指定操作,则 start 为默认操作。
- kind 选项 | 如何强制实施约束。kind 选项可能的值如下: * Optional - 仅在两个资源都执行指定操作时才适用。 * Mandatory - 总是强制限制(默认值)。如果您指定的第一个资源是停止或无法启动,则您指定的第二个资源必须停止。 * Serialize - 确定您指定的资源不会同时出现两个 stop/start 动作。您指定的第一个和第二个资源可以按其中顺序启动,但必须在启动另一个资源前完成。一个典型的用例是资源启动在主机上造成高负载。
13.1. 配置必须的排序
- 要点:强制排序约束可确保资源等待另一个操作完成,如 start、stop、promote 或 demote。例如,在 B 前面排序资源 A 会阻止 B 启动,直到 A 成功为止。将 kind 选项设置为 Mandatory,或使用默认值。
- 要点:如果 symmetrical 选项设定为 true 或保留为默认值,则相反的操作将遵循相反的排序。start 和 stop 操作是相反的操作,demote 和 promote 是相反的操作。例如:一个对称 "promote A" 排序意味着 "stop B then demote A" 表示 A 不能被降级,直到 B 成功停止。对称排序表示 A 状态的改变可能会导致操作调度到 B。例如,给定为 "A then B",如果出现故障,B 将首先停止,A 将被停止,A 将启动,然后启动 A,那么 B 将启动。
13.2. 配置公告顺序
- 要点:当为排序约束指定 kind=Optional 选项时,约束被视为可选,且仅在两个资源都运行指定操作时才适用。您指定的第一个资源的状态更改不会对您指定的第二个资源起作用。
- 要点:流程
- 列表:为名为 VirtualIP 和 dummy_resource 的资源配置公告排序约束: # pcs constraint order VirtualIP then dummy_resource kind=Optional
- 命令/配置摘录:
# pcs constraint order VirtualIP then dummy_resource kind=Optional13.3. 配置排序的资源集
- 要点:如果配置需要创建一组按顺序启动的资源,如 B 之前的资源 A,并在 C 之前创建 B,配置包含这些资源的资源组。
- 要点:然而,在有些情况下,配置资源需要以指定顺序启动,因为资源组不合适:
- 列表:您可能需要配置资源以启动,而且资源不一定是在一起的。
- 列表:您可能有一个资源 C,它必须在资源 A 或 B 启动后启动,但 A 和 B 之间没有关系。
- 列表:您可能有资源 C 和 D 在资源 A 和 B 启动时必须启动,但 A 和 B 之间没有关系,C 和 D 之间没有关系。
- 列表:sequential,可以设为 true 或 false,以指示资源集合是否可以相互排序。默认值为 true。 将 sequential 设为 false ,允许一个集合相对于排序约束中的其他集合进行排序,而不对其成员进行相互排序。因此,只有在约束里列出了多个集合时才有意义 ; 否则,约束无效。
- 列表:require-all,它可以设为 true 或 false,以指示集合中的所有资源在继续前是否处于活动状态。将 require-all 设为 false ,表示集合中只有一个资源需要启动,然后才能继续下一个集合。将 require-all 设为 false 没有任何作用,除非与未排序的集合一起使用,未排序的集合是那些 sequential 设置为 false 的集合。默认值为 true。
- 列表:操作,它可以设置为 启动、提升、降级 或停止。
- 命令/配置摘录:
# pcs constraint order set resource1 resource2 [resourceN]... [options] [set resourceX resourceY ... [options]] [setoptions [constraint_options]]
# pcs constraint order set D1 D2 D313.4. 为不由 Pacemaker 管理的资源依赖项配置启动顺序
- 要点:集群可能包含不是由集群管理的依赖项的资源。在这种情况下,您必须确保在 Pacemaker 停止后启动这些依赖项,然后才能停止 Pacemaker。
- 要点:您可以通过 systemd resource-agents-deps target 配置您的启动顺序来应对这种情况。您可以为此目标创建一个 systemd drop-in 单元,Pacemaker 会根据这个目标自行排序。
13.4.1. 为外部服务配置启动顺序
- 要点:如果集群包含依赖于集群管理的外部服务 foo 的资源,您可以为外部服务配置启动顺序。
- 要点:流程
- 列表:创建 drop-in 单元 /etc/systemd/system/resource-agents-deps.target.d/foo.conf,其中包含以下内容: [Unit] Requires=foo.service After=foo.service
- 列表:运行 systemctl daemon-reload 命令: # systemctl daemon-reload
- 命令/配置摘录:
[Unit] Requires=foo.service After=foo.service
# systemctl daemon-reload13.4.2. 为外部依赖项配置启动顺序
- 要点:集群依赖项扩展到服务之外。例如,您可以配置依赖在 /srv 中挂载文件系统。
- 要点:流程
- 列表:确定 /srv 列在 /etc/fstab 文件中。这样,当重新载入系统管理器的配置时,会在启动时自动转换为 systemd 文件 srv.mount。如需更多信息,请参阅您系统上的 systemd.mount(5)和 systemd-fstab-generator(8) 手册页。
- 列表:要确保 Pacemaker 在挂载磁盘后启动,请创建包含以下内容的 drop-in 单元 /etc/systemd/system/resource-agents-deps.target.d/srv.conf : [Unit] Requires=srv.mount After=srv.mount
- 列表:运行 systemctl daemon-reload 命令: # systemctl daemon-reload
- 命令/配置摘录:
[Unit] Requires=srv.mount After=srv.mount
# systemctl daemon-reload13.4.3. 为远程块存储配置启动顺序
- 要点:如果 Pacemaker 集群使用的 LVM 卷组包含远程块存储上的物理卷,如 iSCSI 目标,请配置 systemd resource-agents-deps 目标和一个 systemd drop-in 单元,以确保服务在 Pacemaker 之前启动。
- 要点:以下流程将 blk-availability.service 配置为依赖项。blk-availability.service 服务是一个包装程序,它包含 iscsi.service 以及其他服务。如果您的部署需要它,则您可以将 iscsi.service (仅用于 iSCSI)或 remote-fs.target 配置为依赖项,而不是 blk-availability。
- 列表:创建包含以下内容的置入单元 /etc/systemd/system/resource-agents-deps.target.d/blk-availability.conf: [Unit] Requires=blk-availability.service After=blk-availability.service
- 列表:运行 systemctl daemon-reload 命令: # systemctl daemon-reload
- 命令/配置摘录:
[Unit] Requires=blk-availability.service After=blk-availability.service
# systemctl daemon-reload第 14 章 Colocating 集群资源
- 要点:要指定一个资源的位置取决于另一个资源的位置,您需要配置 colocation 约束。
- 要点:在两个资源间创建 colocation 约束具有重要的副作用:它会影响分配给节点资源的顺序。这是因为您无法相对于资源 B 来放置资源 A,除非您知道资源 B 的位置。因此,当创建 colocation 约束时,您必须考虑是将资源 A 与资源 B 共处,还是将资源 B 与资源 A 共处。
- 命令/配置摘录:
# pcs constraint colocation add [promoted|unpromoted] source_resource with [promoted|unpromoted] target_resource [score] [options]
pcs constraint colocation [config]- 表格样本(共 5 行):
- 参数 | 描述
- source_resource | 共处源。如果约束不满意,集群可能决定完全不允许该资源运行。
- target_resource | 共处目标。集群将决定优先放置此资源的位置,然后决定放置源资源的位置。
- 分数 | 正数值表示资源应该在同一个节点上运行。负值表示资源不应在同一节点上运行。+INFINITY 值(默认值)表示 source_resource 必须在与 target_resource 运行在相同的节点上。-INFINITY 值表示 source_resource 不得在与 target_resource 运行在相同的节点上。
14.1. 指定资源的强制放置
- 要点:当约束分数为 +INFINITY 或 -INFINITY 时,就会发生强制放置。在这种情况下,如果约束无法满足,则不允许 source_resource 运行。对于 score=INFINITY,这包括 target_resource 未处于活动状态的情况。
- 要点:流程
- 列表:如果您需要 myresource1 始终与 myresource2 运行在同一台机器上,则您可以添加以下约束: # pcs constraint colocation add myresource1 with myresource2 score=INFINITY 由于使用了 INFINITY,如果 myresource2 无法在任何一个集群节点上运行(出于某种原因),则将不允许 myresource1 运行。
- 列表:或者,您可能想要配置相反的情况,在集群中,myresource1 不能与 myresource2 运行在同一台机器上。在这种情况下,请使用 score=-INFINITY : # pcs constraint colocation add myresource1 with myresource2 score=-INFINITY 同样,通过指定 -INFINITY,约束是绑定的。因此,如果只剩下 myresource2 所在的位置可以运行,那么 myresource1 可能无法在任何地方运行。
- 命令/配置摘录:
# pcs constraint colocation add myresource1 with myresource2 score=INFINITY
# pcs constraint colocation add myresource1 with myresource2 score=-INFINITY14.2. 指定资源的公告放置
- 要点:资源的公告放置表示首选项而不是强制规则。 对于分数大于 -INFINITY 且小于 INFINITY 的限制,集群会尝试遵守首选项,但可以忽略它以避免停止集群资源。
14.3. 资源共存集合
- 要点:如果配置需要创建一组按顺序启动的资源,请配置包含这些资源的资源组。然而,在某些情况下,将 colocated 资源配置为资源组不合适。
- 要点:这些情况是:
- 列表:您可能需要托管一组资源,但这些资源不一定要按顺序启动。
- 列表:您可能有一个资源 C,它必须和资源 A 或 B 在一起,但 A 和 B 之间没有关系。
- 列表:您可能有资源 C 和 D 必须和资源 A 和 B 在一起,但 A 和 B 之间没有关系,C 和 D 之间没有关系。
- 列表:sequential,它可以设为 true 或 false,以指示集合成员是否必须相互共处。 将 sequential 设为 false ,允许此集合的成员与约束后面列出的另一个集合共处,而无论此集合中哪些成员处于活动状态。因此,只有在约束里列出另一个集合之后,这个选项才有意义,否则约束无效。
- 列表:role,可以被设置为 Stopped, Started, Promoted, 或 Unpromoted。
- 列表:ID,为您定义的约束提供名称:
- 命令/配置摘录:
# pcs constraint colocation set resource1 resource2] [resourceN]... [options] [set resourceX resourceY] ... [options]] [setoptions [constraint_options]]
# pcs constraint colocation remove source_resource target_resource第 15 章 使用 pcs 命令导出资源约束
- 要点:您可以使用 pcs constraint 命令的 --output-format=cmd 选项显示可用来在不同系统上重新创建配置的资源约束的 pcs 命令。
- 要点:以下示例流程创建两个资源,配置三个资源限制,并显示可用于在不同系统上重新创建限制的 xi'pcs 命令。
- 列表:创建名一个为 VirtualIP 的 IPaddr2 资源。 # pcs resource create VirtualIP IPaddr2 ip=198.51.100.3 cidr_netmask=24 Assumed agent name 'ocf💓IPaddr2' (deduced from 'IPaddr2')
- 列表:创建名一个为 Website 的 apache 资源。 # pcs resource create Website apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" Assumed agent name 'ocf💓apache' (deduced from 'apache')
- 列表:为 Website 资源配置一个位置约束。 # pcs constraint location Website avoids node1
- 列表:为 Website 和 VirtualIP 资源配置一个托管约束。 # pcs constraint colocation add Website with VirtualIP
- 列表:为 Website 和 VirtualIP 资源配置一个顺序约束。 # pcs constraint order VirtualIP then Website Adding VirtualIP Website (kind: Mandatory) (Options: first-action=start then-action=start)
- 列表:显示您可以用来在不同系统上重新创建约束的 pcs 命令。 # pcs constraint --output-format=cmd pcs -- constraint location add location-Website-node1--INFINITY resource%Website node1 -INFINITY; pcs -- constraint colocation add Website with VirtualIP INFINITY \ id=colocation-Website-VirtualIP-INFINITY; pcs -- constraint order start VirtualIP then …
- 命令/配置摘录:
# pcs resource create VirtualIP IPaddr2 ip=198.51.100.3 cidr_netmask=24
Assumed agent name 'ocf:heartbeat:IPaddr2' (deduced from 'IPaddr2')第 16 章 使用节点属性配置特定于节点的值
- 要点:Pacemaker 支持使用节点属性跟踪节点信息 来配置 特定于节点的值。例如,使用节点属性指定节点拥有的 RAM 和磁盘空间量、其运行的操作系统或服务器机房机架中的位置。
- 要点:节点属性有三个主要用途:
- 列表:在用于集群配置的 Pacemaker 规则中 例如,您可以在每个节点上将名为 department 的节点属性设置为 accounting 或 IT,具体取决于该节点专用于哪个部门。然后,您可以配置一个位置规则,以确保 accounting 数据库仅在 department 设置为 accounting 的服务器上运行。 有关 Pacemaker 规则中节点属性表达式的详情,请参考 Pacemaker 规则。
- 列表:在用于特定资源要求的资源代理中 例如,数据库资源代理可以使用一个节点属性来跟踪要在 promote 操作中使用的最新复制位置。
- 列表:在 Pacemaker 之外使用的外部脚本中, 例如,您可以为每个节点设置 data-center 和 rack 属性,以供外部清单脚本使用。
- 列表:运行以下命令,为 node1 和 node2 定义一个名为 rack 的节点属性,为 node1 的 rack 属性设置值 1 ,为 node2 的 rack 属性设置值 2。 # pcs node attribute node1 rack=1 # pcs node attribute node2 rack=2
- 列表:将配置的节点属性显示为一系列 pcs 命令: # pcs node attribute --output-format=cmd 输出示例 pcs node attribute node1 location=rack1 pcs node attribute node2 location=rack2
- 命令/配置摘录:
# pcs node attribute node1 rack=1 # pcs node attribute node2 rack=2
# pcs node attribute --output-format=cmd- 注意:注意 您可以定义一个 临时节点 属性,该属性保存在 CIB 的 status 部分中,当集群在节点上停止时不会保留。有关定义临时节点属性的详情,请查看您系统上的 crm_attribute(8)和 attrd_updater(8)手册页。
- 注意:注意 您可以使用三种格式之一显示配置的节点属性: 文本 :以纯文本形式显示输出。这是默认格式。 JSON :以机器可读的 JSON 格式显示输出,这对于脚本处理和自动化很有用。 cmd :显示输出作为一系列 pcs 命令,您可以使用它们在不同系统上重新创建相同的节点属性。
第 17 章 使用规则决定资源位置
- 要点:对于更复杂的位置限制,您可以使用 Pacemaker 规则来确定资源的位置。
17.1. Pacemaker 规则
- 要点:Pacemaker 规则可用于使您的配置更动态。规则的一个用法可能是根据时间将机器分配给不同的处理组,如使用节点属性,然后在创建位置限制时使用该属性。
- 要点:每个规则都可以包含多个表达式、日期表达式甚至其它规则。表达式的结果根据规则的 boolean-op 字段来合并,以确定规则是否最终评估为 true 或 false。接下来的操作要看规则使用的上下文而定。
- 表格样本(共 5 行):
- 项 | 描述
- role | 只有在资源位于该角色时才会应用该规则。允许的值:Started 、Unpromoted 和 Promoted。注意:带有 role="Promoted" 的规则无法决定克隆实例的初始位置。它只会影响哪些活跃的实例将会被提升。
- 分数 | 规则评估为 true 时要应用的 score 。仅限于作为位置约束一部分的规则使用。
- score-attribute | 如果规则评估为 true,则要查找并用作 score 的 node 属性。仅限于作为位置约束一部分的规则使用。
17.1.1. 节点属性表达式
- 要点:节点属性表达式用于根据节点或节点定义的属性控制资源。有关节点属性的常规信息,请参阅使用 节点属性配置特定于节点的值。
- 要点:除了管理员添加的任何属性外,集群还会为每个节点定义特殊的内置节点属性,如下表中所述。
- 表格样本(共 5 行):
- 项 | 描述
- attribute | 要测试的节点属性
- type | 决定值应该如何进行测试。允许的值:string, integer, number, version。默认值为 string。
- operation | 执行的对比。允许的值: * lt - 如果节点属性的值比 value 小,则为 True * gt - 如果节点属性的值比 value 大,则为 True * lte - 如果节点属性的值小于或等于 value,则为 True * gte - 如果节点属性的值大于或等于 value,则为 True * eq - 如果节点属性的值等于 value,则为 True * ne - 如果节点属性的值不等于 value,则为 True * defined - 如果节点具有命名属性,则为 True * not_defined - 如果节点没有命名属性,则为 True
17.1.2. 基于时间/日期的表达式
- 要点:日期表达式用于根据当前的日期/时间控制资源或集群选项。它们可以包含可选的日期规格。
- 表格样本(共 4 行):
- 项 | 描述
- start | 符合 ISO8601 规范的日期/时间。
- end | 符合 ISO8601 规范的日期/时间。
- operation | 根据上下文,将当前日期/时间与开始或结束日期进行比较。允许的值: * gt - 如果当前日期/时间晚于 start ,则为 True * lt - 如果当前日期/时间早于 end,则为 True * in_range - 如果当前日期/时间在 start 后,在 end 前,则为 True * date-spec - 对当前日期/时间执行类似于 cron 的比较
17.1.3. 日期规格
- 要点:日期规格用于创建与时间相关的类似 cron 的表达式。每个字段可以包含一个数字或一个范围。任何未提供的字段都会被忽略,而不是使用默认值 0。
- 要点:例如,monthdays="1" 匹配每月的第一天,hours="09-17" 匹配上午 9 点到下午 5 点(包含)之间的小时数。但是,您不能指定 weekdays="1,2" 或 weekdays="1-2,5-6",因为它们包含多个范围。
- 表格样本(共 12 行):
- 项 | 描述
- id | 用于日期的唯一名称
- seconds | 允许的值: 0-59
- minutes | 允许的值: 0-59
17.2. 使用规则配置 Pacemaker 位置约束
- 要点:使用规则配置位置限制,以根据复杂条件(如时间、日期或节点属性)决定资源放置。您可以组合多个表达式来创建复杂的放置逻辑。
- 要点:Pacemaker 规则中的 expression 选项
- 列表:如果省略 score,则默认为 INFINITY。
- 列表:当使用规则来配置位置约束时,score 的值可以是正数,也可以是负数,正数表示"首选",负数表示"避免"。
- 列表:如果省略 resource-discovery,则默认为 always。有关 resource-discovery 选项的信息,请参阅 将资源发现限制到节点的子集。
- 列表:与基本位置限制一样,您也可以使用这些限制的资源使用正则表达式。
- 列表:defined|not_defined attribute
- 列表:attribute lt|gt|lte|gte|eq|ne [string|integer|number|version] value
- 命令/配置摘录:
# pcs constraint location rsc rule[resource-discovery=option] [role=promoted|unpromoted] [score=score | score-attribute=attribute] expression
# pcs constraint location Webserver rule score=INFINITY date-spec years=201817.3. 删除一个 Pacemaker 规则
- 要点:您可以删除 Pacemaker 规则。如果您要删除的规则是其约束中的最后一规则,则约束将被删除。
- 要点:流程
- 列表:删除 Pacemaker 规则: # pcs constraint rule remove rule_id
- 命令/配置摘录:
# pcs constraint rule remove rule_id第 18 章 管理集群资源
- 要点:您可以使用各种命令来显示、修改和管理集群资源。
18.1. 使用 pcs 命令导出集群资源
- 要点:您可以使用 pcs resource config 命令的 --output-format=cmd 选项显示可用来在不同系统上重新创建配置的集群资源的 pcs 命令。
- 要点:以下示例流程在红帽高可用性集群中为主动/被动 Apache HTTP 服务器创建四个资源,然后显示您可以用来重新创建这些资源的 pcs 命令。
- 列表:创建一个 LVM-activate 资源。 # pcs resource create my_lvm ocf💓LVM-activate vgname=my_vg vg_access_mode=system_id --group apachegroup
- 列表:创建一个 Filesystem 资源。 # pcs resource create my_fs Filesystem device="/dev/my_vg/my_lv" directory="/var/www" fstype="xfs" --group apachegroup
- 列表:创建一个 IPaddr2 资源。 # pcs resource create VirtualIP IPaddr2 ip=198.51.100.3 cidr_netmask=24 --group apachegroup
- 列表:创建一个 Apache 资源。 # pcs resource create Website apache configfile="/etc/httpd/conf/httpd.conf" statusurl="http://127.0.0.1/server-status" --group apachegroup
- 列表:显示您可以用来重新创建您在不同系统上创建的四个资源的 pcs 命令。 # pcs resource config --output-format=cmd pcs resource create --no-default-ops --force -- my_lvm ocf💓LVM-activate \ vg_access_mode=system_id vgname=my_vg \ op \ monitor interval=30s id=my_lvm-monitor-interval-30s timeout=90s \ start interval=0s id=my_lvm-start-interval-…
- 列表:显示您可以用来只重新创建 IPaddr2 资源的 pcs 命令。要只显示一个配置的资源,请指定该资源的资源 ID。 # pcs resource config VirtualIP --output-format=cmd pcs resource create --no-default-ops --force -- VirtualIP ocf💓IPaddr2 \ cidr_netmask=24 ip=198.51.100.3 \ op \ monitor interval=10s id=VirtualIP-monitor-interval-10s timeout=20s \ start interval=…
- 命令/配置摘录:
# pcs resource create my_lvm ocf:heartbeat:LVM-activate vgname=my_vg vg_access_mode=system_id --group apachegroup
# pcs resource create my_fs Filesystem device="/dev/my_vg/my_lv" directory="/var/www" fstype="xfs" --group apachegroup18.2. 修改资源参数
- 要点:要修改配置的集群资源的参数,请使用 pcs resource update 命令。
- 要点:要修改集群资源的选项或参数,请使用以下语法:
- 列表:显示 VirtualIP 资源的当前配置参数: # pcs resource config VirtualIP Resource: VirtualIP (type=IPaddr2 class=ocf provider=heartbeat) Attributes: ip=192.168.0.120 cidr_netmask=24 Operations: monitor interval=30s
- 列表:为 VirtualIP 资源更新 ip 参数的值: # pcs resource update VirtualIP ip=192.169.0.120
- 列表:验证 VirtualIP 资源的更新的参数值: # pcs resource config VirtualIP Resource: VirtualIP (type=IPaddr2 class=ocf provider=heartbeat) Attributes: ip=192.169.0.120 cidr_netmask=24 Operations: monitor interval=30s
- 命令/配置摘录:
# pcs resource update resource_id [resource_options]
# pcs resource config VirtualIP- 注意:注意 使用 pcs resource update 命令更新资源操作时,未明确指定的选项将重置为默认值。
18.3. 清除集群资源的失败状态
- 要点:当资源失败时,pcs status 命令输出中会出现一个失败信息。解决问题后,再次运行 pcs status 来验证资源状态,并使用 pcs resource failcount show --full 命令检查故障计数。
- 要点:在解决资源故障的原因后,您可能希望通过删除失败操作历史记录,来从状态显示中删除失败消息。
18.4. 在集群中移动资源
- 要点:在节点间手动移动集群资源,或者根据故障阈值和连接更改配置自动重新定位。
- 要点:使用 pcs resource move 和 pcs resource relocate 命令手动移动集群中的资源,如 手动移动集群资源 中所述。此外,通过禁用、启用或禁止资源来控制资源放置和行为,如 禁用、启用和禁止集群资源 中所述。
- 列表:资源的 failure-timeout 值过期。
- 列表:管理员使用 pcs resource cleanup 命令手动重置资源故障计数。
- 列表:在集群中添加 ping 资源。ping 资源检查指定的机器(按主机名或 IP 地址)是否可以访问,并维护 pingd 节点属性。
- 列表:配置位置约束规则,以便在连接丢失时将资源移到连接的节点。
- 列表:将 ping 资源配置为克隆,使其在所有集群节点上运行: # pcs resource create ping ocf:pacemaker:ping dampen=5s multiplier=1000 host_list=gateway.example.com clone
- 列表:为 Webserver 资源配置位置约束规则,将其移到可访问 gateway.example.com 的节点(如果当前节点丢失连接): # pcs constraint location Webserver rule score=-INFINITY pingd lt 1 or not_defined pingd
- 命令/配置摘录:
# pcs resource meta dummy_resource migration-threshold=10
# pcs resource defaults update migration-threshold=10- 注意:注意 为资源设置 migration-threshold 与配置实时迁移不同,其中资源在不丢失状态的情况下移动到另一个节点。
- 表格样本(共 4 行):
- 项 | 描述
- dampen | 应用连接更改前等待(增强)时间。当节点在稍有不同的时间检测到连接更改时,这可以防止资源在集群中快速中断。
- multiplier | 因素乘以连接的 ping 目标数量来生成分数。当配置了多个 ping 目标时很有用。
- host_list | 要联系以空格分隔的 DNS 主机名、IPv4 地址或 IPv6 地址的列表,以确定连接。
18.5. 配置和管理集群资源标签
- 要点:您可以使用 pcs 命令标记集群资源。这允许您使用单个命令启用、禁用、管理或取消管理指定的一组资源。
18.5.1. 为管理标记集群资源,按类别标记
- 要点:您可以使用资源标签标记两个资源,并禁用标记的资源。在本例中,要标记的现有资源命名为 d-01 和 d-02。
- 要点:流程
- 列表:为 d-01 和 d-02 资源创建一个名为 special-resources 的标签。 [root@node-01]# pcs tag create special-resources d-01 d-02
- 列表:显示资源标签配置。 [root@node-01]# pcs tag config special-resources d-01 d-02
- 列表:禁用带有 special-resources 标签的所有资源。 [root@node-01]# pcs resource disable special-resources
- 列表:显示资源状态,以确认资源 d-01 和 d-02 已被禁用。 [root@node-01]# pcs resource * d-01 (ocf::pacemaker:Dummy): Stopped (disabled) * d-02 (ocf::pacemaker:Dummy): Stopped (disabled) 除了 pcs resource disable 命令,pcs resource enable、pcs resource manage 和 pcs resource unmanage 命令还支持对带标记资源的管理。 创建资源标签后: 您可以使用 pcs tag delete 命令删除资源标签。 您可以使用 pcs …
- 列表:您可以使用 pcs tag delete 命令删除资源标签。
- 列表:您可以使用 pcs tag update 命令修改现有资源标签的资源标签配置。
- 命令/配置摘录:
[root@node-01]# pcs tag create special-resources d-01 d-02
[root@node-01]# pcs tag config18.5.2. 删除标记的集群资源
- 要点:您不能使用 pcs 删除标记的群集资源。相反,在删除资源前删除该标签。
- 要点:流程
- 列表:删除资源标签。 以下命令从具有该标签的所有资源中删除资源标签 special-resources, [root@node-01]# pcs tag remove special-resources [root@node-01]# pcs tag No tags defined 以下命令仅从资源 d-01 中删除资源标签 special-resources。 [root@node-01]# pcs tag update special-resources remove d-01
- 列表:以下命令从具有该标签的所有资源中删除资源标签 special-resources, [root@node-01]# pcs tag remove special-resources [root@node-01]# pcs tag No tags defined
- 列表:以下命令仅从资源 d-01 中删除资源标签 special-resources。 [root@node-01]# pcs tag update special-resources remove d-01
- 列表:删除资源。 [root@node-01]# pcs resource delete d-01 Attempting to stop: d-01... Stopped
- 命令/配置摘录:
[root@node-01]# pcs tag remove special-resources [root@node-01]# pcs tag
No tags defined18.5.3. 显示和导出集群资源标签
- 要点:pcs tag [config] 命令支持 --output-format 选项。
- 列表:指定 --output-format=text 以纯文本格式显示配置的标签,这是这个选项的默认值。
- 列表:指定 --output-format=cmd 显示从当前集群标签配置创建的命令。您可以使用这些命令在不同的系统上重新创建配置的标签。
- 列表:指定 --output-format=json 以 JSON 格式显示配置的标签,这适用于机器解析。
第 19 章 创建在多个节点上活跃的集群资源(克隆的资源)
- 要点:克隆集群资源或资源组以在多个节点上运行,只要资源代理支持克隆。例如,使用克隆的资源在集群中分发多个 IP 资源实例,以进行节点平衡。
- 注意:注意 只有同时可在多个节点上活跃的资源才适用于克隆。例如:从挂载非集群文件系统(如共享内存设备的 ext4 )的 Filesystem 资源不应被克隆。由于 ext4 分区不支持集群,因此此文件系统不适用于同时发生在多个节点上的读写操作。
19.1. 创建和删除克隆的资源
- 要点:创建集群资源和该资源的克隆,或克隆现有的资源或资源组。
- 要点:要在一个命令中创建资源及其克隆,请使用以下语法:
- 列表:使用 pcs 配置活跃的 Pacemaker 集群。
- 列表:至少在一个集群节点上具有 root 或管理访问权限。
- 列表:在集群的一个节点上创建一个资源及其克隆。默认情况下,克隆 会附加带有克隆的资源名称。 以下命令创建一个名为 webfarm 的 apache 资源,以及名为 webfarm -clone 的克隆: # pcs resource create webfarm apache clone
- 列表:可选:在不删除底层资源的情况下从资源或资源组中删除克隆配置: # pcs resource unclone webfarm
- 列表:显示活跃的集群资源以验证克隆的状态: # pcs status resources
- 命令/配置摘录:
# pcs resource create resource_id [standard:[provider:]]type [resource_options] [meta resource_meta_options] clone [clone_id] [clone_options]
# pcs resource clone resource_id | group_id [clone_id] [clone_options]- 注意:注意 在创建另一个克隆后排序的资源或资源组克隆时,请设置 interleave=true 选项。这样可确保依赖克隆的副本可以在主克隆停止或在同一节点上启动时停止或启动。 如果没有设置这个选项,并且克隆的资源 B 依赖于克隆的资源 A,在重新加入集群的节点上停止或启动资源 A 会导致所有节点中的所有资源 B 实例重启。如果没有 interleave=true,则依赖克隆的每个实例都取决于主克隆的所有运行实例。
- 表格样本(共 9 行):
- 字段 | 描述
- priority, target-role, is-managed | 选项继承自正在克隆的资源,如 配置资源 meta 选项 中所述。
- clone-max | 在集群中启动的资源副本数上限。默认为集群中的节点数量。
- clone-node-max | 可在单一节点上运行的最多资源副本数。默认值为 1。
19.2. 配置克隆资源限制
- 要点:配置约束以确定集群中克隆资源的行为。克隆约束像常规资源限制一样编写,但需要指定克隆 ID。详情请参阅 配置集群资源。
- 要点:克隆资源位置约束
- 命令/配置摘录:
# pcs constraint location webfarm-clone prefers node1
# pcs constraint order start webfarm-clone then webfarm-stats19.3. 可升级克隆资源
- 要点:可升级的克隆资源将 promotable meta 属性设置为 true,并在两种模式下运行: promoted 和 unpromoted。当实例启动时,它必须以 Unpromoted 状态进行初始化。
- 注意:注意 Promoted 和 Unpromoted 角色名称的功能等同于之前的 RHEL 版本中 Master 和 Slave Pacemaker 角色。
19.3.1. 创建可升级的克隆资源
- 要点:配置可升级的克隆资源,以管理以不同模式运行的服务,如主动和被动。您可以创建新的可升级资源,或转换现有的资源或组来支持升级和未升级的角色。
- 要点:流程
- 列表:将资源创建为可升级的克隆: # pcs resource create resource_id [standard:[provider:]]type [resource options] promotable [clone_id] [clone options] 默认情况下,可升级克隆的名称为 resource_id-clone。您可以通过为 clone_id 选项指定值来为克隆设置自定义名称。
- 列表:另外,您可以使用以下命令从之前创建的资源或资源组中创建可升级的资源: # pcs resource promotable resource_id [clone_id] [clone options] 默认情况下,可升级克隆的名称为 resource_id-clone 或 group_name-clone。您可以通过为 clone_id 选项指定值来为克隆设置自定义名称。 下表描述了您可以为可升级资源指定的额外克隆选项。 Expand 表 19.2. 为可升级克隆提供了额外的克隆选项 项 描述 promoted-max 可以升级的资源副本数 ; 默认为 1。 promoted-node-max 在一个节点中可升级的资源副本数…
- 命令/配置摘录:
# pcs resource create resource_id [standard:[provider:]]type [resource options] promotable [clone_id] [clone options]
# pcs resource promotable resource_id [clone_id] [clone options]- 表格样本(共 3 行):
- 项 | 描述
- promoted-max | 可以升级的资源副本数 ; 默认为 1。
- promoted-node-max | 在一个节点中可升级的资源副本数 ; 默认为 1。
19.3.2. 配置可升级资源限制
- 要点:您可以通过为该资源配置约束来确定集群中可升级资源的行为。有关资源约束的常规信息,请参阅 配置集群资源。
- 要点:可升级资源位置约束
- 列表:确定运行集群资源的顺序
- 命令/配置摘录:
# pcs constraint colocation add [promoted|unpromoted] source_resource with [promoted|unpromoted] target_resource [score] [options]
# pcs constraint order [action] resource_id then [action] resource_id [options]19.3.3. 失败时降级升级的资源
- 要点:配置可升级资源,以便在 promote 或 monitor 操作失败时,或者分区丢失仲裁时,资源会被降级而不是完全停止。这可防止在完全停止资源时进行手动干预,需要手动操作。
- 要点:流程
- 列表:要将可升级的资源配置为在 promote 操作失败时降级,请将 on-fail 操作 meta 选项设置为 demote,如下例所示: # pcs resource op add my-rsc promote on-fail="demote"
- 列表:要将可升级的资源配置为在 monitor 操作失败时降级,将 interval 设置为非零值,将 on-fail 操作 meta 选项设置为 demote,并将 role 设置为 Promoted,如下例所示。 # pcs resource op add my-rsc monitor interval="10s" on-fail="demote" role="Promoted"
- 列表:要配置集群,当集群分区丢失仲裁时,任何升级的资源都会降级但会继续运行,所有其他资源都将停止,将 no-quorum-policy 集群属性设置为 demote 将操作的 on-fail 元属性设为 demote 不会影响如何决定资源的提升。如果受影响的节点仍然具有最高的升级分数,则会选择再次提升。
- 命令/配置摘录:
# pcs resource op add my-rsc promote on-fail="demote"
# pcs resource op add my-rsc monitor interval="10s" on-fail="demote" role="Promoted"第 20 章 管理集群节点
- 要点:要管理群集节点,请使用 pcs 命令来启动和停止群集服务,以及添加或删除节点。
20.1. 停止集群服务
- 要点:您可以在指定节点或节点上停止集群服务。与 pcs cluster start 一样,--all 选项会停止所有节点上的集群服务,如果没有指定任何节点,则只停止本地节点上的集群服务。
- 要点:流程
- 列表:停止指定节点或节点上的集群服务: # pcs cluster stop [--all | node] [...]
- 列表:您可以使用以下命令强制停止本地节点上的集群服务,该命令会执行 kill -9 命令。 # pcs cluster kill
- 命令/配置摘录:
# pcs cluster stop [--all | node] [...]
# pcs cluster kill20.2. 启用和禁用集群服务
- 要点:使用以下命令启用集群服务。这会将集群服务配置为在指定节点启动时运行。
- 要点:启用集群服务可让节点在隔离后自动重新加入集群,从而尽量减少集群停机时间。如果集群服务被禁用,管理员可以在手动重启服务前调查故障,防止出现硬件问题的节点过早重新加入。
- 列表:启用集群服务: 如果指定了 --all 选项,该命令将启用所有节点上的集群服务。 如果您没有指定任何节点,则仅在本地节点上启用集群服务。 # pcs cluster enable [--all | node] [...]
- 列表:如果指定了 --all 选项,该命令将启用所有节点上的集群服务。
- 列表:如果您没有指定任何节点,则仅在本地节点上启用集群服务。 # pcs cluster enable [--all | node] [...]
- 列表:使用以下命令将集群服务配置为在指定节点或节点上启动时不运行: 如果指定了 --all 选项,该命令将禁用所有节点上的集群服务。 如果没有指定任何节点,则仅在本地节点上禁用集群服务。 # pcs cluster disable [--all | node] [...]
- 列表:如果指定了 --all 选项,该命令将禁用所有节点上的集群服务。
- 列表:如果没有指定任何节点,则仅在本地节点上禁用集群服务。 # pcs cluster disable [--all | node] [...]
- 命令/配置摘录:
# pcs cluster enable [--all | node] [...]
# pcs cluster disable [--all | node] [...]20.3. 添加集群节点
- 要点:您可以按照以下流程将新节点添加到现有集群中。
- 要点:这个过程添加了运行 corosync 的标准集群节点。有关将非 corosync 节点整合到集群中的详情,请参考 将非 corosync 节点整合到集群中:pacemaker_remote 服务。
- 列表:在添加到集群的新节点上,执行以下任务: 安装集群软件包。如果集群使用 SBD、Booth 票据管理器或仲裁设备,则必须在新节点上手动安装相应的软件包(sbd、booth-site、corosync-qdevice)。 [root@newnode ~]# dnf install -y pcs fence-agents-all 除了集群软件包外,还需要安装并配置在集群中运行的所有服务(已安装在现有集群节点上)。例如:如果您在红帽高可用性集群中运行 Apache HTTP 服务器,则需要在您要添加的节点中安装该服务器,以及检查服务器状态的 wget 工具。 如果您正在运行 firewalld 守护进程,请运行以下命令来启用红帽高可用性附…
- 列表:安装集群软件包。如果集群使用 SBD、Booth 票据管理器或仲裁设备,则必须在新节点上手动安装相应的软件包(sbd、booth-site、corosync-qdevice)。 [root@newnode ~]# dnf install -y pcs fence-agents-all 除了集群软件包外,还需要安装并配置在集群中运行的所有服务(已安装在现有集群节点上)。例如:如果您在红帽高可用性集群中运行 Apache HTTP 服务器,则需要在您要添加的节点中安装该服务器,以及检查服务器状态的 wget 工具。
- 列表:如果您正在运行 firewalld 守护进程,请运行以下命令来启用红帽高可用性附加组件所需的端口。 # firewall-cmd --permanent --add-service=high-availability # firewall-cmd --add-service=high-availability
- 列表:为用户 ID hacluster 设置密码。建议您为集群中的每个节点使用相同的密码。 [root@newnode ~]# passwd hacluster Changing password for user hacluster. New password: Retype new password: passwd: all authentication tokens updated successfully.
- 列表:运行以下命令以启动 pcsd 服务,并在系统启动时启用 pcsd。 # systemctl start pcsd.service # systemctl enable pcsd.service
- 列表:在现有集群中的一个节点上执行以下任务。 在新集群节点上验证用户 hacluster。 [root@clusternode-01 ~]# pcs host auth newnode.example.com Username: hacluster Password: newnode.example.com: Authorized 在现有集群中添加新节点。此命令还会将集群配置文件 corosync.conf 同步到集群中的所有节点上,包括您添加的新节点。 [root@clusternode-01 ~]# pcs cluster node add newnode.example.com
- 命令/配置摘录:
[root@newnode ~]# dnf install -y pcs fence-agents-all
# firewall-cmd --permanent --add-service=high-availability # firewall-cmd --add-service=high-availability- 注意:注意 建议您仅在生产环境维护窗口期间将节点添加到现有集群中。这可让您对新节点及其保护配置执行适当的资源和部署测试。
20.4. 删除集群节点
- 要点:您可以关闭指定的节点,并将其从集群配置文件 corosync.conf 中删除。
- 要点:流程
- 列表:删除集群节点: # pcs cluster node remove node
- 命令/配置摘录:
# pcs cluster node remove node20.5. 将节点添加到带有多个链接的集群中
- 要点:将节点添加到多链接集群时,您必须为每个链接指定一个地址。这个示例添加了 rh80-node3,第二个链接使用 192.168.122.203,第二个链接为 192.168.123.203。
- 要点:流程
- 列表:使用多个链接在集群中添加节点: # pcs cluster node add rh80-node3 addr=192.168.122.203 addr=192.168.123.203
- 命令/配置摘录:
# pcs cluster node add rh80-node3 addr=192.168.122.203 addr=192.168.123.20320.6. 在现有集群中添加和修改链接
- 要点:在大多数情况下,您可以在不重启集群的情况下在现有集群中添加或修改链接。
20.6.1. 在现有集群中添加和删除链接
- 要点:要向正在运行的集群添加新链接,请使用 pcs cluster link add 命令。
- 要点:在集群中添加或管理链接时,请考虑以下要求和条件:
- 列表:在添加链接时,为每个节点指定一个地址。
- 列表:只有在使用 knet 传输协议时,才能添加和删除链接。
- 列表:集群中至少有一个链接必须始终定义。
- 列表:集群中的最大链接数为 8,编号为 0 到 7。可以定义链接号的任意组合(例如链接 3、6 和 7)。
- 列表:在添加链接而不指定其链接号时,pcs 使用最低可用链接号。
- 列表:当前配置的链接链接号存储在 corosync.conf 文件中。要显示 corosync.conf 文件,请运行 pcs cluster corosync 命令或 pcs cluster config [show] 命令。
- 命令/配置摘录:
[root@node1 ~] # pcs cluster link add node1=10.0.5.11 node2=10.0.5.12 node3=10.0.5.31 options linknumber=5
[root@node1 ~] # pcs cluster link delete 5 [root@node1 ~] # pcs cluster link remove 520.6.2. 使用多个链接修改集群中的链接
- 要点:在多链接集群配置中修改特定链接。
- 要点:流程
- 列表:删除您要更改的链接。 [root@node1 ~] # pcs cluster link remove 2
- 列表:使用更新的地址和选项将链接重新添加到集群。 [root@node1 ~] # pcs cluster link add node1=10.0.5.11 node2=10.0.5.12 node3=10.0.5.31 options linknumber=2
- 命令/配置摘录:
[root@node1 ~] # pcs cluster link remove 2
[root@node1 ~] # pcs cluster link add node1=10.0.5.11 node2=10.0.5.12 node3=10.0.5.31 options linknumber=220.6.3. 使用单个链接修改集群中的链接地址
- 要点:在迁移到新子网或替换网络基础架构时,为集群通信更新网络地址,请在删除原始链接以保持集群连接前添加新链接。
- 要点:使用更新的地址和选项添加新链接:
- 列表:使用更新的地址和选项添加新链接: # pcs cluster link add node1=10.0.5.11 node2=10.0.5.12 node3=10.0.5.31 options linknumber=2
- 列表:删除原始链接: # pcs cluster link remove 1
- 列表:现有单链接集群: linknumber=1 使用地址 10.0.5.11 用于 node1,node2 为 10.0.5.12。
- 列表:目标修改:将 node2 的地址更改为 10.0.5.31。
- 列表:使用当前没有使用的地址添加临时链接: # pcs cluster link add node1=10.0.5.13 node2=10.0.5.14 options linknumber=2
- 列表:使用更新的节点地址添加修改的链接: # pcs cluster link add node1=10.0.5.11 node2=10.0.5.31 options linknumber=1
- 命令/配置摘录:
# pcs cluster link add node1=10.0.5.11 node2=10.0.5.12 node3=10.0.5.31 options linknumber=2
# pcs cluster link remove 120.6.4. 使用单一链接修改集群中链接的选项
- 要点:如果您的集群只使用一个链接,且您想要修改该链接的选项,但您不想更改要使用的地址,可以在删除和更新链接前添加临时链接以进行修改。
- 要点:在本例中:
- 列表:现有集群的链接为 link 1,节点 1 使用地址 10.0.5.11,节点 2 使用地址 10.0.5.12。
- 列表:您要将链接选项 link_priority 更改为 11。
- 列表:使用当前没有使用的地址为现有集群添加新临时链接。 [root@node1 ~] # pcs cluster link add node1=10.0.5.13 node2=10.0.5.14 options linknumber=2
- 列表:删除原始链接。 [root@node1 ~] # pcs cluster link remove 1
- 列表:使用更新的选项为原始链接添加后端。 [root@node1 ~] # pcs cluster link add node1=10.0.5.11 node2=10.0.5.12 options linknumber=1 link_priority=11
- 列表:删除临时链接。 [root@node1 ~] # pcs cluster link remove 2
- 命令/配置摘录:
[root@node1 ~] # pcs cluster link add node1=10.0.5.13 node2=10.0.5.14 options linknumber=2
[root@node1 ~] # pcs cluster link remove 120.6.5. 不可能在添加新链接时修改链接
- 要点:如果无法添加新链接,且必须修改单个现有链接,您必须关闭集群。
- 要点:以下示例步骤更新集群中的链接 1,并将链接的 link_priority 选项设置为 11。
- 列表:停止集群的集群服务。 [root@node1 ~] # pcs cluster stop --all
- 列表:更新链接地址和选项。 pcs cluster link update 命令不要求您指定所有节点地址和选项。反之,您只能指定要更改的地址。这个示例只修改 node1 和 node3 的地址和 link_priority 选项。 [root@node1 ~] # pcs cluster link update 1 node1=10.0.5.11 node3=10.0.5.31 options link_priority=11 要删除某个选项,您可以使用 option= 格式将选项设置为 null 值。
- 列表:重启集群 [root@node1 ~] # pcs cluster start --all
- 命令/配置摘录:
[root@node1 ~] # pcs cluster stop --all
[root@node1 ~] # pcs cluster link update 1 node1=10.0.5.11 node3=10.0.5.31 options link_priority=1120.7. 配置节点健康策略
- 要点:节点可能运行良好,足以维护其集群成员身份,但在某些情况下可能会处于不健康状态,使它成为资源不受欢迎的位置。例如,磁盘驱动器可能会报告 SMART 错误,或者 CPU 可能负载过高。
- 要点:您可以使用 Pacemaker 中的节点健康策略自动将资源从不健康节点移出。
- 列表:ocf:pacemaker:HealthCPU ,其监控 CPU 空闲
- 列表:ocf:pacemaker:HealthIOWait,其监控 CPU I/O 等待
- 列表:ocf:pacemaker:HealthSMART,其监控磁盘驱动器的 SMART 状态
- 列表:ocf:pacemaker:SysInfo 其使用本地系统信息设置各种节点属性,并作为健康代理监控磁盘空间的使用情况
- 列表:设置 health-node-strategy 集群属性,以定义 Pacemaker 如何对节点健康状况中的变化做出响应。 # pcs property set node-health-strategy=migrate-on-red
- 列表:创建使用健康节点资源代理的克隆的集群资源,设置 allow-unhealthy-nodes 资源元选项,以定义集群是否将检测节点的健康状态是否恢复了,并将资源移回该节点。使用重复的监控操作配置此资源,以持续检查所有节点的健康状况。 本例创建了一个 HealthIOWait 资源代理来监控 CPU I/O 等待,为将资源从节点移出的红色限制设置为 15%。此命令将 allow-unhealthy-nodes 资源元选项设为 true,并配置 10 秒的重复监控间隔。 # pcs resource create io-monitor ocf:pacemaker:HealthIOWait red_limit=15 op monitor …
- 命令/配置摘录:
# pcs property set node-health-strategy=migrate-on-red
# pcs resource create io-monitor ocf:pacemaker:HealthIOWait red_limit=15 op monitor interval=10s meta allow-unhealthy-nodes=true clone20.8. 使用许多资源配置大型集群
- 要点:对于具有大量节点和资源的集群,修改以下参数的默认值。
- 要点:cluster-ipc-limit 集群属性是在一个集群守护进程断开前的最大 Inter-Process Communication (IPC)消息积压。当在大型集群中同时清理或修改大量资源时,大量 CIB 更新会一次性进行。如果 Pacemaker 服务没有时间处理 CIB 事件队列阈值前的所有配置更新,这可能会导致速度较慢的客户端被驱除。
- 命令/配置摘录:
# pcs property set cluster-ipc-limit=2000
Compressed message exceeds X% of configured IPC limit (X bytes); consider setting PCMK_ipc_buffer to X or higher第 21 章 为 Pacemaker 集群设置用户权限
- 要点:您可以为用户 hacluster 以外的特定用户授予权限来管理 Pacemaker 集群。
- 要点:您可以为独立的用户授予两组权限:
- 列表:允许个人用户通过 Web UI 管理集群的权限,并运行通过网络连接到节点的 pcs 命令。通过网络连接到节点的命令包括用于配置集群的命令,或者从集群中添加或删除节点。
- 列表:本地用户允许只读或读写访问集群配置的权限。不需要通过网络连接的命令包括编辑集群配置的命令,比如那些创建资源和配置限制的命令。
21.1. 设置通过网络访问节点的权限
- 要点:要为特定用户授予运行通过网络连接到节点的 pcs 命令的权限,请将这些用户添加到组 haclient 中。这必须在集群的每个节点中完成。
- 要点:流程
- 列表:在集群的每个节点中将用户添加到 haclient 组中: # usermod -a -G haclient <username> 将 & lt;username > 替换为您要授予权限的用户的名称。
- 命令/配置摘录:
# usermod -a -G haclient <username>21.2. 使用 ACL 设置本地权限
- 要点:您可以使用 pcs acl 命令,为本地用户设置权限,以允许使用访问控制列表(ACL)对集群配置进行只读或读写访问。
- 要点:默认情况下不启用 ACL。如果没有启用 ACL,则在所有节点上是 haclient 组成员的任何用户都对集群配置有完全的本地读/写权限,而不是 haclient 成员的用户没有访问权限。当启用 ACL 时,即使属于 haclient 组成员的用户也只能访问 ACL 为该用户授予的内容。root 和 hacluster 用户帐户始终对集群配置具有完全访问权限,即使启用了 ACL。
- 列表:运行 pcs acl role create… 命令来创建为该角色定义权限的角色。
- 列表:使用 pcs acl user create 命令将您创建的角色分配给用户。如果为同一用户分配多个角色,则任何 deny 权限优先于 write,然后 read。
- 列表:此流程要求本地系统上 rouser 用户存在,并且 rouser 是组 haclient 的成员。 # adduser rouser # usermod -a -G haclient rouser
- 列表:使用 pcs acl enable 命令启用 Pacemaker ACL。 # pcs acl enable
- 列表:为 cib 创建名为 read-only 且具有只读权限的角色。 # pcs acl role create read-only description="Read access to cluster" read xpath /cib
- 列表:在 pcs ACL 系统中创建用户 rouser,并为该用户分配 read-only 角色。 # pcs acl user create rouser read-only
- 命令/配置摘录:
# adduser rouser # usermod -a -G haclient rouser
# pcs acl enable- 注意:警告 以根用户身份执行这个步骤或者保存所有配置更新到工作文件是很重要的,然后在完成后将其推送到活跃 CIB。否则,您可以锁定自己以阻止做任何进一步的更改。有关将配置更新保存到一个工作文件的详情,请参考 将配置更改保存到一个工作文件。
第 22 章 资源监控操作
- 要点:配置监控操作以跟踪资源健康状况。如果没有指定,pcs 会创建一个默认值。间隔由资源代理决定,如果代理提供 none,则默认为 60 秒。
- 要点:下表总结了资源监控操作的属性。
- 表格样本(共 7 行):
- 项 | 描述
- id | 操作的唯一名称。系统在配置操作时分配这个值。
- name | 要执行的操作。常见值: monitor、start、stop
- interval | 如果设置为非零值,则会以这个频率(以秒为单位)重复操作。只有在操作 name 设为 monitor 时,非零值才有意义。资源启动后,将立即执行重复的 monitor 操作,并在上一个监控动作完成后调度后续的 monitor 操作。例如,如果 monitor 操作的 interval=20s 在 01:00:00 执行,则下一次 monitor 操作不会发生在 01:00:20 ,而是在第一个 monitor 操作完成后的 20 秒发生。 如果设置为零(默认值为零),则此参数允许您为集群创建的操作提供值。例如,如果 interval 设为零,则操作的 name 设置为 start,timeout 值设为 40,则 Pacemaker 在启动此资源时将使用 40 秒超时。带有零间隔的 monitor 操作允许您为 Pacemaker 在启动时的探测设置 timeout/on-fail/enabled 值,以便在不需要默认值时获取所有资源的当前状态。
22.1. 配置资源监控操作
- 要点:您可以在创建资源时配置监控操作。
- 要点:例如,以下命令创建了一个带有监控操作的 IPaddr2 资源:新资源称为 VirtualIP,eth2 的 IP 地址为 192.168.0.99,子网掩码为 24。每 30 秒将执行一次监控操作。
- 命令/配置摘录:
# pcs resource create resource_id standard:provider:type|type [resource_options] [op operation_action operation_options [operation_type operation_options]...]
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2 op monitor interval=30s- 注意:注意 您必须指定准确的操作属性才能正确地删除现有的操作。
22.2. 修改资源监控选项
- 要点:要更改监控选项的值,您可以更新资源。
- 要点:流程
- 列表:创建名一个为 VirtualIP 的 IPaddr2 资源。 # pcs resource create VirtualIP ocf💓IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2 默认情况下,这个命令会创建这些操作。 Operations: start interval=0s timeout=20s (VirtualIP-start-timeout-20s) stop interval=0s timeout=20s (VirtualIP-stop-timeout-20s) monitor interval=10s timeout=20s (VirtualI…
- 列表:更改 stop 操作的 stop timeout 选项。 # pcs resource update VirtualIP op stop interval=0s timeout=40s
- 列表:显示为资源配置的参数。 # pcs resource config VirtualIP Resource: VirtualIP (class=ocf provider=heartbeat type=IPaddr2) Attributes: ip=192.168.0.99 cidr_netmask=24 nic=eth2 Operations: start interval=0s timeout=20s (VirtualIP-start-timeout-20s) monitor interval=10s timeout=20s (VirtualIP-monitor-interval-10s) stop interval=0…
- 命令/配置摘录:
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2
Operations: start interval=0s timeout=20s (VirtualIP-start-timeout-20s) stop interval=0s timeout=20s (VirtualIP-stop-timeout-20s) monitor interval=10s timeout=20s (VirtualIP-monitor-interval-10s)22.3. 配置全局资源操作默认
- 要点:您可以使用 pcs resource op defaults update 命令为所有资源更改资源操作的默认值。
- 要点:以下命令为所有监控操作设置 timeout 值 240 秒。
- 命令/配置摘录:
# pcs resource op defaults update timeout=240s
# pcs resource update VirtualIP op monitor interval=10s22.4. 配置多个监控操作
- 要点:您可以根据资源代理支持,使用多个监控操作配置单个资源。这样,您可以每分钟执行一次一般的健康检查,而以更高的间隔执行其他更大型的健康检查。
- 要点:流程
- 列表:要为支持在不同级别上更深入检查的资源配置额外的监控操作,请添加 OCF_CHECK_LEVEL=n 选项。 例如,如果您配置了以下 IPaddr2 资源,默认情况下,这会创建一个监控操作,间隔为 10 秒,超时值为 20 秒。 # pcs resource create VirtualIP ocf💓IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2
- 列表:如果虚拟 IP 支持不同的检查,且深度为 10 秒,以下命令可让 Pacemaker 每 10 秒执行一次常规的虚拟 IP 检查,每 60 秒执行更高级的监控检查。(如前所述,您不应该配置额外的监控操作,间隔为 10 秒。) # pcs resource op add VirtualIP monitor interval=60s OCF_CHECK_LEVEL=10
- 命令/配置摘录:
# pcs resource create VirtualIP ocf:heartbeat:IPaddr2 ip=192.168.0.99 cidr_netmask=24 nic=eth2
# pcs resource op add VirtualIP monitor interval=60s OCF_CHECK_LEVEL=10- 注意:注意 当配置多个监控器操作时,您必须确保不会同时执行两个操作。
22.5. 禁用一个监控操作
- 要点:要临时禁用重复监控而不是删除它,请在操作定义中设置 enabled="false"。要重新使用监控,请设置 enabled="true"。
- 要点:当您使用 pcs resource update 命令更新资源操作时,您没有专门调用的任何选项都将重置为它们的默认值。例如,如果您已经配置了自定义超时值为 600 的监控操作,运行以下命令会将超时值重置为默认值 20(或通过 pcs resource op defaults 命令设置的任何默认值)。
- 列表:临时禁用和重新恢复监控操作: # pcs resource update resourceXZY op monitor enabled=false # pcs resource update resourceXZY op monitor enabled=true
- 列表:为了保持这个选项的原始值 600,当您重新恢复监控操作时,您必须指定该值,如下例所示: # pcs resource update resourceXZY op monitor timeout=600 enabled=true
- 命令/配置摘录:
# pcs resource update resourceXZY op monitor enabled=false # pcs resource update resourceXZY op monitor enabled=true
# pcs resource update resourceXZY op monitor timeout=600 enabled=true第 23 章 Pacemaker 集群属性
- 要点:集群属性控制在集群操作过程中可能发生情况时集群的行为。
23.1. 集群属性和选项概述
- 要点:此表总结了 Pacemaker 集群属性,显示属性的默认值以及您可以为这些属性设置的可能值。
- 要点:另外,还有额外的用于隔离功能的集群属性。有关这些属性的详情,请查看确定 隔离设备常规属性 中的隔离行为的集群属性表。
- 注意:注意 除了本表格中描述的属性外,还有一些由集群软件公开的集群属性。对于这些属性,建议您不要修改其默认值。
- 表格样本(共 22 行):
- 选项 | 默认 | 描述
- batch-limit | 0 | 集群允许并行运行的资源操作数量。"正确的"值取决于网络和集群节点的速度和负载。默认值为 0,表示当任何节点有高 CPU 负载时,集群会动态强制限制。
- migration-limit | -1(无限) | 集群允许在节点上并行运行的迁移作业数量。
- no-quorum-policy | stop | 当集群没有仲裁(quorum)时该做什么。允许的值: * ignore - 继续所有资源管理 * freeze - 继续管理资源,但不会从受影响分区以外的节点中恢复资源 * stop - 停止受影响集群分区中的所有资源 * suicide - 隔离受影响集群分区中的所有节点 * demote - 如果集群分区缺少仲裁,降级任何提升的资源并停止所有其他资源
23.2. 设置和删除集群属性
- 要点:通过设置或删除全局属性来修改集群行为。这些设置决定了集群管理资源放置、隔离和节点故障的方式。当您删除特定的配置时,属性会恢复到其默认系统值。
- 要点:流程
- 列表:设置集群属性的值: # pcs property set property=value
- 列表:例如,将 symmetric-cluster 的值设置为 false : # pcs property set symmetric-cluster=false
- 列表:从配置中删除集群属性: # pcs property unset property
- 列表:另外,您可以通过将 pcs property set 命令的 value 字段留空来从配置中删除集群属性。这会将该属性恢复为默认值。例如,如果您之前将 symmetric-cluster 属性设置为 false,以下命令会从配置中删除您设置的值,并将 symmetric-cluster 的值恢复为 true,这是其默认值: # pcs property set symmetic-cluster=
- 命令/配置摘录:
# pcs property set property=value
# pcs property set symmetric-cluster=false23.3. 查询集群属性设置
- 要点:查询集群属性以审核全局配置设置,如隔离默认值、迁移阈值和资源限制。您可以查看明确配置的值、特定属性或默认值的完整列表,以了解集群管理资源和节点的方式。
- 要点:流程
- 列表:显示为集群设置的属性设置的值: # pcs property config
- 列表:显示集群的属性设置的所有值,包括尚未明确设置的属性设置的默认值: # pcs property config --all
- 列表:显示特定集群属性的当前值: # pcs property config property
- 列表:例如,要显示 cluster-infrastructure 属性的当前值,请运行以下命令: # pcs property config cluster-infrastructure Cluster Properties: cluster-infrastructure: cman
- 列表:为方便起见,您可以通过下列命令,显示这些属性的所有默认值,无论是否将其设置为非默认值。 # pcs property [config] --defaults
- 命令/配置摘录:
# pcs property config
# pcs property config --all23.4. 使用 pcs 命令导出集群属性
- 要点:您可以使用 pcs property config 命令的 --output-format=cmd 选项显示可用来在不同系统上重新创建配置的集群属性的 pcs 命令。
- 要点:流程
- 列表:以下命令将 migration-limit 集群属性设置为 10 : # pcs property set migration-limit=10
- 列表:设置集群属性后,以下命令显示可用于在不同系统上设置集群属性的 pcs 命令。 # pcs property config --output-format=cmd pcs property set --force -- \ migration-limit=10 \ placement-strategy=minimal
- 命令/配置摘录:
# pcs property set migration-limit=10
# pcs property config --output-format=cmd第 24 章 配置资源以在清理节点关闭时保持停止
- 要点:Pacemaker 默认为在关闭过程中通过资源失败。但是,您可以将资源配置为在干净的关闭过程中锁定到节点。这可防止故障切换,允许您在服务中断可以接受时关闭节点进行维护。
24.1. 集群属性配置资源以在清理节点关闭时保持停止
- 要点:防止资源在干净节点关闭中进行故障的功能是通过下列集群属性实现的。
- 要点:当将此集群属性设置为默认值 false 时,集群将恢复在被完全关闭的节点上活动的资源。当此属性设为 true 时,在被完全关闭的节点上活动的资源将无法在其它地方启动,直到它们在重新加入集群后在该节点上再次启动。
- 注意:注意 只有在您第一次运行以下命令时,手动刷新才可以在远程节点中使用: 在远程节点上运行 systemctl stop pacemaker_remote 命令来停止节点。 运行 pcs resource disable remote-connection-resource 命令。 然后您可以在远程节点上手动进行刷新。
- 注意:注意 只有在您第一次运行以下命令时,shutdown-lock-limit 属性才能用于远程节点: 在远程节点上运行 systemctl stop pacemaker_remote 命令来停止节点。 运行 pcs resource disable remote-connection-resource 命令。 运行这些命令后,当 shutdown-lock-limit 指定的时间过后,远程节点上运行的资源将可用于在其他节点上恢复。
24.2. 设置 shutdown-lock 集群属性
- 要点:在示例集群中将 shutdown-lock 集群属性设置为 true,并显示在节点关闭并再次启动时的效果。这个示例集群由三个节点组成:z1.example.com、z2.example.com 和 z3.example.com。
- 要点:流程
- 列表:将 shutdown-lock 属性设置为 true ,并验证其值。在本例中,shutdown-lock-limit 属性保持其默认值 0。 [root@z3 ~]# pcs property set shutdown-lock=true [root@z3 ~]# pcs property list --all | grep shutdown-lock shutdown-lock: true shutdown-lock-limit: 0
- 列表:检查集群的状态。在本例中,资源 third 和 fifth 运行在 z1.example.com 上。 [root@z3 ~]# pcs status ... Full List of Resources: ... * first (ocf::pacemaker:Dummy): Started z3.example.com * second (ocf::pacemaker:Dummy): Started z2.example.com * third (ocf::pacemaker:Dummy): Started z1.example.com * fourth (ocf::pacemaker:Dummy): Started …
- 列表:关闭 z1.example.com,这将停止在该节点上运行的资源。 [root@z3 ~] # pcs cluster stop z1.example.com Stopping Cluster (pacemaker)... Stopping Cluster (corosync)...
- 列表:运行 pcs status 命令显示节点 z1.example.com 处于离线状态,并且在 z1.example.com 上运行的资源在节点停机时为 LOCKED。 [root@z3 ~]# pcs status ... Node List: * Online: [ z2.example.com z3.example.com ] * OFFLINE: [ z1.example.com ] Full List of Resources: ... * first (ocf::pacemaker:Dummy): Started z3.example.com * second (ocf::pacemaker:Dummy): St…
- 列表:在 z1.example.com 上再次启动集群服务,使其重新加入集群。锁定的资源应该在该节点上启动,但当它们启动后,它们不一定会停留在同一个节点上。 [root@z3 ~]# pcs cluster start z1.example.com Starting Cluster...
- 列表:在本例中,资源 third 和 fifth 在节点 z1.example.com 上被恢复。 [root@z3 ~]# pcs status ... Node List: * Online: [ z1.example.com z2.example.com z3.example.com ] Full List of Resources: .. * first (ocf::pacemaker:Dummy): Started z3.example.com * second (ocf::pacemaker:Dummy): Started z2.example.com * third (ocf::pacemaker:Dummy): …
- 命令/配置摘录:
[root@z3 ~]# pcs property set shutdown-lock=true [root@z3 ~]# pcs property list --all | grep shutdown-lock
shutdown-lock: true shutdown-lock-limit: 0第 25 章 配置节点放置策略
- 要点:Pacemaker 将资源分配给具有最高分配分数的节点。此分数根据 资源限制、资源粘性 设置、以前的故障历史记录和节点利用率等因素计算。
- 要点:如果所有节点上的资源分配分数相等,默认的放置策略Pacemaker 将选择一个分配的资源最少的节点来平衡负载。如果每个节点中的资源数量相等,则会选择 CIB 中列出的第一个有资格的节点来运行该资源。
- 列表:特定节点提供的能力
- 列表:特定资源需要的容量
- 列表:资源放置的整体策略
25.1. 使用属性和放置策略
- 要点:要配置节点容量或资源要求,请使用 utilization 属性。为资源分配利用率变量和值以指定其要求,并为节点分配相同的变量和值,以指定它提供的内容。
- 要点:您可以根据喜好命名使用属性,并根据您的配置定义名称和值对。使用属性的值必须是整数。
- 列表:以一系列 pcs 命令显示配置的节点利用率: # pcs node utilization --output-format=cmd 输出示例 pcs node utilization node1 cpu=2 pcs node utilization node2 cpu=4
- 列表:default - 根本不考虑 Utilization 值。根据分配分数分配资源。如果分数相等,则在节点间平均分配资源。
- 列表:utilization - 只有在决定节点是否被视为有资格时才会考虑 utilization 值(即,它是否有足够的可用容量来满足资源的要求)。负载均衡仍会根据分配给节点的资源数量进行。
- 列表:balanced - 在决定节点是否有资格为资源提供服务,以及在负载平衡时,才会考虑 utilization 值,因此会尝试以一种优化资源性能的方式分散资源。
- 列表:minimal - 只有在决定节点是否有资格为资源提供服务时,才会考虑 utilization 值。对于负载平衡,会尝试尽可能将资源集中到几个节点上,从而在剩余的节点上启用以实现节电的目的。
- 列表:配置 node1 的 utilization 属性。此命令配置 CPU 容量的节点属性,将此属性设置为变量 cpu,并将 node1 定义为提供 2 个 CPU 容量。此命令还定义 RAM 容量的 utilization 属性,将此属性设置为变量 memory,并将 node1 定义为提供 2048 RAM 容量。 # pcs node utilization node1 cpu=2 memory=2048
- 命令/配置摘录:
# pcs node utilization --output-format=cmd
pcs node utilization node1 cpu=2 pcs node utilization node2 cpu=4- 注意:注意 您可以使用三种格式之一显示配置的节点利用率: 文本 :以纯文本形式显示输出。这是默认格式。 JSON :以机器可读的 JSON 格式显示输出,这对于脚本处理和自动化很有用。 cmd :显示输出作为一系列 pcs 命令,您可以使用它们在不同系统上重新创建相同的节点利用率。
25.2. Pacemaker 资源分配
- 要点:Pacemaker 根据节点首选项、节点容量和资源分配首选项分配资源。
25.2.1. 节点首选项
- 要点:Pacemaker 根据以下策略决定在分配资源时首选哪个节点。
- 要点:如果多个节点具有相同的节点权重:
- 列表:节点权重最高的节点会首先被消耗。节点 weight 是集群维护的分数,以表示节点健康状况。
- 列表:如果多个节点具有相同的节点权重: 如果 placement-strategy 集群属性是 default 或 utilization : 分配的资源最少的节点会首先被消耗。 如果分配的资源数量相等,在 CIB 中列出的第一个有资格的节点会首先被消耗。 如果 placement-strategy 集群属性是 balanced : 具有最多可用容量的节点会首先被消耗。 如果节点的空闲容量相等,首先消耗分配的资源数量最少的节点。 如果节点的空闲容量相等,并且分配的资源数量相等,在 CIB 中列出的第一个有资格的节点会首先被消耗。 如果 placement-strategy 集群属性是 minimal,则 CIB 中列出的第一个有资格的节…
- 列表:如果 placement-strategy 集群属性是 default 或 utilization : 分配的资源最少的节点会首先被消耗。 如果分配的资源数量相等,在 CIB 中列出的第一个有资格的节点会首先被消耗。
- 列表:分配的资源最少的节点会首先被消耗。
- 列表:如果分配的资源数量相等,在 CIB 中列出的第一个有资格的节点会首先被消耗。
- 列表:如果 placement-strategy 集群属性是 balanced : 具有最多可用容量的节点会首先被消耗。 如果节点的空闲容量相等,首先消耗分配的资源数量最少的节点。 如果节点的空闲容量相等,并且分配的资源数量相等,在 CIB 中列出的第一个有资格的节点会首先被消耗。
25.2.2. 节点容量
- 要点:Pacemaker 根据以下策略决定哪个节点拥有最多的可用容量。
- 要点:如果定义了多个类型的使用属性,那么在最多属性类型中数字最高的节点具有最大的可用容量。例如:
- 列表:如果只定义了一种类型的使用属性,那么空闲容量就是一个简单的数字比较。
- 列表:如果定义了多个类型的使用属性,那么在最多属性类型中数字最高的节点具有最大的可用容量。例如: 如果 NodeA 有更多可用 CPU,而 NodeB 拥有更多可用内存,则它们的可用容量是相等的。 如果 NodeA 有更多可用 CPU,而 NodeB 有更多可用内存和存储,则 NodeB 具有更多可用容量。
- 列表:如果 NodeA 有更多可用 CPU,而 NodeB 拥有更多可用内存,则它们的可用容量是相等的。
- 列表:如果 NodeA 有更多可用 CPU,而 NodeB 有更多可用内存和存储,则 NodeB 具有更多可用容量。
25.2.3. 资源分配首选项
- 要点:Pacemaker 根据以下策略决定优先分配哪些资源。
- 列表:优先级最高的资源会首先被分配。您可以在创建资源时设置资源优先级。
- 列表:如果资源优先级相等,运行该资源的节点中分数最高的资源会首先被分配,以防止资源 shuffling 的问题。
- 列表:如果资源在运行资源的节点中的分数相等,或者资源没有运行,则首选节点上具有最高分数的资源会被首先分配。如果首选节点上的资源分数相等,则 CIB 中列出的第一个可运行资源会首先被分配。
25.3. 资源放置策略指南
- 要点:通过确保足够的物理容量、为过量使用配置缓冲区和定义明确的资源优先级来优化 Pacemaker 的资源放置策略。
- 要点:确保有足够的物理容量。
- 列表:确保有足够的物理容量。 如果节点在通常情况下使用的物理容量接近近似的最大值,那么在故障切换过程中可能会出现问题。即使没有使用功能,您仍可能会遇到超时和二级故障。
- 列表:在您为节点配置的功能中构建一些缓冲。 假设 Pacemaker 资源不会使用 100% 配置的 CPU 和内存量,所以所有时间都比您的物理资源稍多。这种方法有时被称为过量使用。
- 列表:指定资源优先级。 如果集群需要牺牲一些服务,则这些服务应该是对您最不重要的。确保正确设置资源优先级,以便首先调度最重要的资源。
25.4. NodeUtilization 资源代理
- 要点:NodeUtilization 资源代理可以检测可用的 CPU、主机内存可用性和虚拟机监控程序内存可用性的系统参数,并将这些参数添加到 CIB 中。您可以将代理作为克隆资源运行,使其在每个节点上自动填充这些参数。
- 要点:有关 NodeUtilization 资源代理和此代理的资源选项的详情,请运行 pcs resource describe NodeUtilization 命令。
第 26 章 将虚拟域配置为资源
- 要点:您可以使用 pcs resource create 命令将 libvirt 虚拟化框架管理的虚拟域配置为集群资源,并将 VirtualDomain 指定为资源类型。
- 要点:当将虚拟域配置为资源时,请考虑以下事项:
- 列表:在将虚拟域配置为集群资源之前,应停止它。
- 列表:一旦虚拟域是集群资源,除了通过集群工具外,它不应该启动、停止或迁移。
- 列表:不要配置您已配置为集群资源的虚拟域,使其在主机引导时启动。
- 列表:所有允许运行虚拟域的节点都必须有权访问该虚拟域所需的配置文件和存储设备。
26.1. 虚拟域资源选项
- 要点:配置 VirtualDomain 资源的选项,以控制虚拟机行为。
- 要点:除了 VirtualDomain 资源选项外,您还可以配置 allow-migrate 元数据选项,以允许将资源实时迁移到另一节点上。当此选项设为 true 时,可以迁移资源,而且不丢失状态。当此选项设为 false 时(这是默认状态),虚拟域将在第一节点上关闭,然后在其从一个节点移到另一个节点时,在第二个节点上重新启动。
- 表格样本(共 11 行):
- 项 | Default(默认) | 描述
- config | (必需)到此虚拟域的 libvirt 配置文件的绝对路径。
- hypervisor | 依赖系统 | 要连接的虚拟机管理器 URI。您可以通过运行 virsh --quiet uri 命令来确定系统的默认 URI。
- force_stop | 0 | 在停止时总是强制关闭("destroy")域。默认的行为是仅在安全关闭尝试失败后强制关闭。只有在您的虚拟域(或您的虚拟化后端)不支持安全关闭时,才应将其设置为 true。
26.2. 创建虚拟域资源
- 要点:在集群中创建虚拟机的 VirtualDomain 资源。
- 要点:流程
- 列表:要创建 VirtualDomain 资源代理来管理虚拟机,Pacemaker 需要虚拟机的 xml 配置文件转储到磁盘上的文件中。例如,如果您创建了名为 guest1 的虚拟机,请将 xml 文件转储到允许运行该客户端的一个集群节点中的某个文件中。您可以使用您选择的文件名;本例使用 /etc/pacemaker/guest1.xml。 # virsh dumpxml guest1 > /etc/pacemaker/guest1.xml
- 列表:将虚拟机的 xml 配置文件复制到允许运行客户机的所有其它集群节点中,在每个节点中位于同一位置。
- 列表:请确定所有允许运行虚拟域的节点都可访问该虚拟域所需的存储设备。
- 列表:单独测试虚拟域是否可以在每个运行虚拟域的节点中启动和停止。
- 列表:如果正在运行,请关闭该客户机节点。Pacemaker 会在集群中配置时启动节点。不应该将虚拟机配置为在主机引导时自动启动。
- 列表:使用 pcs resource create 命令配置 VirtualDomain 资源。例如,以下命令配置了一个名为 VM 的 VirtualDomain 资源。由于 allow-migrate 选项设置为 true,因此 pcs resource move VM nodeX 命令将作为实时迁移执行。 在本例中,migration_transport 设置为 ssh。请注意,要使 SSH 迁移正常工作,无密钥日志记录必须可以在节点间正常工作。 # pcs resource create VM VirtualDomain config=/etc/pacemaker/guest1.xml migration_transport=ss…
- 命令/配置摘录:
# virsh dumpxml guest1 > /etc/pacemaker/guest1.xml
# pcs resource create VM VirtualDomain config=/etc/pacemaker/guest1.xml migration_transport=ssh meta allow-migrate=true第 27 章 配置集群仲裁(quorum)
- 要点:为了保持集群的完整性,系统使用 quorum 来防止数据崩溃。当其一半以上的节点在线时,集群就位有仲裁。默认情况下,如果集群丢失仲裁,Pacemaker 会停止所有资源。
- 要点:仲裁是通过一个投票(voting)系统来建立的。当一个集群节点工作不正常,或丢掉了与其他集群部分的通信,则大多数工作的节点可以通过投票来分离有问题的节点,如果需要,对节点进行隔离。
27.1. 配置仲裁选项
- 要点:使用 pcs cluster setup 命令创建集群时,可以设置仲裁配置的一些特殊功能。
- 要点:有关配置和使用这些选项的详情,请查看您系统上的 votequorum(5)手册页。
- 表格样本(共 5 行):
- 选项 | 描述
- auto_tie_breaker | 启用后,集群可能会以确定的方式达到 50% 个节点同时失败的情况。集群分区或仍与 auto_tie_breaker_node 中配置的 nodeid 保持联系的节点集合(如果未设置则为最低的 nodeid )将保持仲裁状态。其他节点将为 inquorate。 auto_tie_breaker 选项主要用于具有偶数节点的集群,因为它允许集群使用平均分割继续操作。对于更复杂的故障,如多个不均匀的分割,建议您使用仲裁设备。 auto_tie_breaker 选项与仲裁设备不兼容。
- wait_for_all | 在启用后,只有在所有节点都最少同时可见一次后,集群才会第一次处于仲裁状态。 wait_for_all 选项主要用于双节点集群,以及使用仲裁设备 lms (last man standing)算法的偶数节点集群。 当集群具有两个节点,不使用仲裁设备,且禁用 auto_tie_breaker 时,wait_for_all 选项会自动启用。您可以通过将 wait_for_all 明确设置为 0 来覆盖它。
- last_man_standing | 启用后,集群可以在特定情况下重新动态计算 expected_votes 和仲裁。启用这个选项时,您必须启用 wait_for_all。last_man_standing 选项与仲裁设备不兼容。
27.2. 修改仲裁选项
- 要点:您可以使用 pcs quorum update 命令修改集群的常规仲裁选项。运行此命令需要停止集群。有关仲裁选项的详情,请查看您系统上的 votequorum(5)手册页。
- 要点:pcs quorum update 命令的格式如下。
- 列表:尝试在运行的系统上修改 wait_for_all 仲裁选项。 [root@node1:~]# pcs quorum update wait_for_all=1 Checking corosync is not running on nodes... Error: node1: corosync is running Error: node2: corosync is running
- 列表:停止集群进程,来修改 wait_for_all 仲裁选项。 [root@node1:~]# pcs cluster stop --all node2: Stopping Cluster (pacemaker)... node1: Stopping Cluster (pacemaker)... node1: Stopping Cluster (corosync)... node2: Stopping Cluster (corosync)...
- 列表:在已停止的系统上修改 wait_for_all 仲裁选项。 [root@node1:~]# pcs quorum update wait_for_all=1 Checking corosync is not running on nodes... node2: corosync is not running node1: corosync is not running Sending updated corosync.conf to nodes... node1: Succeeded node2: Succeeded
- 列表:显示仲裁配置 [root@node1:~]# pcs quorum config Options: wait_for_all: 1
- 命令/配置摘录:
# pcs quorum update [auto_tie_breaker=[0|1]] [last_man_standing=[0|1]] [last_man_standing_window=[time-in-ms] [wait_for_all=[0|1]]
[root@node1:~]# pcs quorum update wait_for_all=127.3. 显示制裁配置和状态
- 要点:集群运行后,您可以输入以下集群仲裁命令来显示仲裁配置和状态。
- 要点:流程
- 列表:显示仲裁配置: # pcs quorum [config]
- 列表:显示仲裁运行时状态: # pcs quorum status
- 命令/配置摘录:
# pcs quorum [config]
# pcs quorum status27.4. 运行非仲裁的集群
- 要点:如果从集群中删除节点会导致仲裁丢失,请使用 pcs quorum expected-votes 命令调整正在运行的集群上的 expected_votes 参数。这允许集群在没有仲裁的情况下继续运行。
- 要点:流程
- 列表:以下命令将 live 集群中的预期 vote 设置为指定的值。这只会影响实时集群,不会更改配置文件;如果重新加载,则 expected_votes 的值将重置为配置文件中的值。 # pcs quorum expected-votes votes
- 列表:在您知道集群不问题但您希望集群进行资源管理时,您可以使用 pcs quorum unblock 命令防止集群在建立仲裁时等待所有节点。 注意 使用这个命令时需要特别小心。在运行此命令前,请确定关闭没有在集群中的节点,并确保无法访问共享资源。 # pcs quorum unblock
- 命令/配置摘录:
# pcs quorum expected-votes votes
# pcs quorum unblock- 注意:警告 在 Live 集群中更改预期投票时应特别小心。如果因为您手动更改了预期的投票,集群的少于 50% 的部分在运行,那么集群中的其他节点就可以单独启动并运行集群服务,从而导致数据崩溃和其他意外结果。如果更改了这个值,您应该确保启用了 wait_for_all 参数。
- 注意:注意 使用这个命令时需要特别小心。在运行此命令前,请确定关闭没有在集群中的节点,并确保无法访问共享资源。
27.5. 其他资源
- 列表:探索 RHEL 高可用性集群的概念 - Quorum
第 28 章 配置仲裁设备
- 要点:配置仲裁设备充当第三方仲裁程序,允许集群保持更多节点故障。对于偶数节点的集群,建议使用此情况。在双节点集群中,设备决定哪个节点在脑裂的情况下存活。
- 要点:在配置仲裁设备,您必须考虑以下内容。
- 列表:建议您在与使用该仲裁设备的集群相同的站点中的不同的物理网络中运行仲裁设备。理想情况下,仲裁设备主机应该独立于主集群,或者至少位于一个独立的 PSU,而不要与 corosync 环或者环位于同一个网络网段。
- 列表:您不能同时在集群中使用多个仲裁设备。
- 列表:虽然您不能同时在集群中使用多个仲裁设备,但多个集群可能同时使用一个仲裁设备。每个使用这个仲裁设备的集群都可以使用不同的算法和仲裁选项,因为它们保存在集群节点本身。例如,单个仲裁设备可由具有ffsplit (50/50 均分)算法的一个集群和具有 lms (last man standing)算法的第二个集群来使用。
- 列表:不应在现有集群节点中运行制裁设备。
28.1. 安装制裁设备软件包
- 要点:安装为集群配置仲裁设备所需的软件包。
- 要点:流程
- 列表:在现有集群的节点上安装 corosync-qdevice。 [root@node1:~]# dnf install corosync-qdevice [root@node2:~]# dnf install corosync-qdevice
- 列表:在仲裁设备主机上安装 pcs 和 corosync-qnetd。 [root@qdevice:~]# dnf install pcs corosync-qnetd
- 列表:在仲裁设备主机上启动 pcsd 服务,并在系统启动时启用 pcsd。 [root@qdevice:~]# systemctl start pcsd.service [root@qdevice:~]# systemctl enable pcsd.service
- 命令/配置摘录:
[root@node1:~]# dnf install corosync-qdevice [root@node2:~]# dnf install corosync-qdevice
[root@qdevice:~]# dnf install pcs corosync-qnetd28.2. 配置仲裁设备
- 要点:您可以配置仲裁设备并将其添加到集群中。
- 要点:在本例中:
- 列表:用于仲裁设备的节点是 qdevice。
- 列表:仲裁设备模型是 net,这是目前唯一支持的模型。net 模型支持以下算法: ffsplit :50-50 均分。这为拥有最多活跃节点的分区提供一个投票。 lMS :last-man-standing。如果节点是集群中唯一可以看到 qnetd 服务器的节点,则它将返回一个投票。 警告 LMS 算法允许在集群中只剩下一个节点时仍保持仲裁,但也意味着制裁设备的投票权利更大,它等同于 number_of_nodes - 1。丢失与制裁设备的连接意味着丢失了 number_of_nodes - 1 个投票,就是说只有所有节点都处于活动状态的集群才能保持仲裁(通过对仲裁设备进行过度投票), 其它任何集群都变为不可仲裁。 有关这些算法的实现的详…
- 列表:ffsplit :50-50 均分。这为拥有最多活跃节点的分区提供一个投票。
- 列表:lMS :last-man-standing。如果节点是集群中唯一可以看到 qnetd 服务器的节点,则它将返回一个投票。 警告 LMS 算法允许在集群中只剩下一个节点时仍保持仲裁,但也意味着制裁设备的投票权利更大,它等同于 number_of_nodes - 1。丢失与制裁设备的连接意味着丢失了 number_of_nodes - 1 个投票,就是说只有所有节点都处于活动状态的集群才能保持仲裁(通过对仲裁设备进行过度投票), 其它任何集群都变为不可仲裁。 有关这些算法的实现的详情,请查看您系统上的 corosync-qdevice(8)手册页。
- 列表:集群节点是 node1 和 node2。
- 列表:在您要用来托管仲裁设备的节点中,使用以下命令配置仲裁设备。这个命令配置并启动仲裁设备模型 net,并将设备配置为在引导时启动。 [root@qdevice:~]# pcs qdevice setup model net --enable --start Quorum device 'net' initialized quorum device enabled Starting quorum device... quorum device started 配置制裁设备后,您可以检查其状态。这应该显示 corosync-qnetd 守护进程正在运行,此时没有客户端连接上来。--full 命令选项提供详细的输出。 [root@qdevi…
- 命令/配置摘录:
[root@qdevice:~]# pcs qdevice setup model net --enable --start
Quorum device 'net' initialized quorum device enabled Starting quorum device... quorum device started- 注意:警告 LMS 算法允许在集群中只剩下一个节点时仍保持仲裁,但也意味着制裁设备的投票权利更大,它等同于 number_of_nodes - 1。丢失与制裁设备的连接意味着丢失了 number_of_nodes - 1 个投票,就是说只有所有节点都处于活动状态的集群才能保持仲裁(通过对仲裁设备进行过度投票), 其它任何集群都变为不可仲裁。
28.3. 管理仲裁设备服务
- 要点:PCS 提供了使用 pcs qdevice 命令在本地主机(corosync-qnetd)上管理仲裁设备服务的功能。请注意,这些命令只影响 corosync-qnetd 服务。
- 命令/配置摘录:
[root@qdevice:~]# pcs qdevice start net [root@qdevice:~]# pcs qdevice stop net [root@qdevice:~]# pcs qdevice enable net [root@qdevice:~]# pcs qdevice disable net [root@qdevice:~]# pcs qdevice kill net28.4. 管理集群中的仲裁设备
- 要点:您可以使用各种 pcs 命令来更改群集中的仲裁设备设置、禁用仲裁设备并删除仲裁设备。
- 要点:更改仲裁设备设置
- 命令/配置摘录:
[root@node1:~]# pcs quorum device update model algorithm=lms
Sending updated corosync.conf to nodes... node1: Succeeded node2: Succeeded Corosync configuration reloaded Reloading qdevice configuration on nodes... node1: corosync-qdevice stopped node2: corosync-qdevice stopped node1: corosync-qdevice started node2: corosync-qdevice started- 注意:警告 要更改仲裁设备模型 net 的 host 选项,请使用 pcs quorum device remove 和 pcs quorum device add 命令来正确配置配置,除非旧主机和新主机是相同的机器。
第 29 章 为集群事件触发脚本
- 要点:配置 Pacemaker 集群警报,以便在发生集群事件时触发外部操作,如节点故障、配置更改或资源状态更改。报警代理会像资源代理一样运行这些外部程序。
- 要点:集群使用环境变量将事件信息传递给代理。代理可以执行任何操作,比如发送电子邮件信息或登录到某个文件或更新监控系统。
- 列表:Pacemaker 提供了几个示例报警代理,这些代理默认安装在 /usr/share/pacemaker/alerts 中。这些样本脚本可以像现在一样复制和使用,或者可作为模板使用,以适应您的目的。有关它们支持的完整属性集合,请参阅示例代理的源代码。
- 列表:如果示例警报代理不满足您的需要,您可以编写自己的警报代理来调用。
29.1. 安装并配置示例警报代理
- 要点:当使用示例警报代理时,您应该检查该脚本以确保它适合您的需要。这些示例代理是作为特定集群环境自定义脚本的起点。
- 注意:警告 虽然红帽支持报警代理脚本用来与 Pacemaker 通信的接口,但红帽不支持自定义代理本身。
29.1.1. 先决条件
- 要点:在集群的每个节点上安装代理
- 要点:安装脚本后,您可以创建使用该脚本的报警。
- 列表:在集群的每个节点上安装代理 # install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh 安装脚本后,您可以创建使用该脚本的报警。
- 命令/配置摘录:
# install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh29.1.2. 配置一个使用 alert_file.sh 警报代理的警报
- 要点:您可以安装 alert_file.sh 报警代理,并配置警报来将事件记录到文件中。报警代理是以用户 hacluster 身份运行的,该用户具有最小的权限集。
- 要点:流程
- 列表:在集群中的每个节点上,将 alert_file.sh.sample 脚本安装为 alert_file.sh。 # install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh
- 列表:在集群中的每个节点上,创建用于记录事件的日志文件。 # touch /var/log/pcmk_alert_file.log 将文件 pcmk_alert_file.log 的所有权更改为用户 hacluster。 # chown hacluster:haclient /var/log/pcmk_alert_file.log 将文件 pcmk_alert_file.log 的权限更改为用户 hacluster 的读和写。 # chmod 600 /var/log/pcmk_alert_file.log
- 列表:将文件 pcmk_alert_file.log 的所有权更改为用户 hacluster。 # chown hacluster:haclient /var/log/pcmk_alert_file.log
- 列表:将文件 pcmk_alert_file.log 的权限更改为用户 hacluster 的读和写。 # chmod 600 /var/log/pcmk_alert_file.log
- 列表:在集群中的一个节点上创建警报。 # pcs alert create id=alert_file description="Log events to a file." path=/var/lib/pacemaker/alert_file.sh
- 列表:将日志文件的路径添加作警报的接收者。 # pcs alert recipient add alert_file id=my-alert_logfile value=/var/log/pcmk_alert_file.log
- 命令/配置摘录:
# install --mode=0755 /usr/share/pacemaker/alerts/alert_file.sh.sample /var/lib/pacemaker/alert_file.sh
# touch /var/log/pcmk_alert_file.log29.1.3. 配置一个使用 alert_snmp.sh 警报代理的警报
- 要点:您可以将 alert_snmp.sh.sample 脚本安装为 alert_snmp.sh,并配置使用安装的 alert_snmp.sh 报警代理将集群事件作为 SNMP 陷阱的警报。默认情况下,该脚本会发送除成功监控调用 SNMP 服务器外的所有事件。
- 要点:流程
- 列表:在集群中的每个节点上,将 alert_snmp.sh.sample 脚本安装为 alert_snmp.sh。 # install --mode=0755 /usr/share/pacemaker/alerts/alert_snmp.sh.sample /var/lib/pacemaker/alert_snmp.sh
- 列表:在集群中的一个节点上,配置一个使用 alert_snmp.sh 代理的警报,将时间戳格式配置为 meta 选项。 # pcs alert create id=snmp_alert path=/var/lib/pacemaker/alert_snmp.sh meta timestamp-format="%Y-%m-%d,%H:%M:%S.%01N"
- 列表:为警报配置接收者 # pcs alert recipient add snmp_alert value=192.168.1.2
- 列表:显示警报配置。 # pcs alert Alerts: Alert: snmp_alert (path=/var/lib/pacemaker/alert_snmp.sh) Meta options: timestamp-format=%Y-%m-%d,%H:%M:%S.%01N. Recipients: Recipient: snmp_alert-recipient (value=192.168.1.2)
- 命令/配置摘录:
# install --mode=0755 /usr/share/pacemaker/alerts/alert_snmp.sh.sample /var/lib/pacemaker/alert_snmp.sh
# pcs alert create id=snmp_alert path=/var/lib/pacemaker/alert_snmp.sh meta timestamp-format="%Y-%m-%d,%H:%M:%S.%01N"29.1.4. 配置一个使用 alert_smtp.sh 警报代理的警报
- 要点:您可以安装 alert_smtp.sh 代理,然后配置使用安装的报警代理将集群事件作为电子邮件消息的警报。
- 要点:流程
- 列表:在集群中的每个节点上,将 alert_smtp.sh.sample 脚本安装为 alert_smtp.sh。 # install --mode=0755 /usr/share/pacemaker/alerts/alert_smtp.sh.sample /var/lib/pacemaker/alert_smtp.sh
- 列表:在集群中的一个节点上,配置一个警报,来将集群事件作为电子邮件发送。 # pcs alert create id=smtp_alert path=/var/lib/pacemaker/alert_smtp.sh options email_sender=donotreply@example.com
- 列表:为警报配置接收者。 # pcs alert recipient add smtp_alert value=admin@example.com
- 列表:显示警报配置。 # pcs alert Alerts: Alert: smtp_alert (path=/var/lib/pacemaker/alert_smtp.sh) Options: email_sender=donotreply@example.com Recipients: Recipient: smtp_alert-recipient (value=admin@example.com)
- 命令/配置摘录:
# install --mode=0755 /usr/share/pacemaker/alerts/alert_smtp.sh.sample /var/lib/pacemaker/alert_smtp.sh
# pcs alert create id=smtp_alert path=/var/lib/pacemaker/alert_smtp.sh options email_sender=donotreply@example.com29.2. 创建集群警报
- 要点:您可以创建集群警报。您配置的选项是特定于代理的配置值,这些值会被传递给您指定为额外环境变量的路径上的报警代理脚本。如果没有为 id 指定值,则会生成一个。
- 要点:流程
- 列表:创建集群警报: # pcs alert create path=path [id=alert-id] [description=description] [options [option=value]...] [meta [meta-option=value]...] 可能会配置多个报警代理,集群会对每个事件调用它们。报警代理只会在集群节点上调用。会为涉及 Pacemaker 远程节点的事件调用它们,但不会在这些节点上调用它们。
- 列表:以下示例创建了一个简单的警报,它将对每个事件调用 myscript.sh。 # pcs alert create id=my_alert path=/path/to/myscript.sh
- 列表:创建和修改集群警报
- 命令/配置摘录:
# pcs alert create path=path [id=alert-id] [description=description] [options [option=value]...] [meta [meta-option=value]...]
# pcs alert create id=my_alert path=/path/to/myscript.sh29.3. 显示、修改和删除集群警报
- 要点:您可以使用各种 pcs 命令显示、修改和删除集群警报。
- 要点:显示配置的集群警报
- 命令/配置摘录:
# pcs alert [config]
# pcs alert update alert-id [path=path] [description=description] [options [option=value]...] [meta [meta-option=value]...]29.4. 配置集群警报接收者
- 要点:使用一个或多个接收者配置警报。集群为每个接收者单独调用代理。接收者可以是警报代理可识别的任何内容:IP 地址、电子邮件地址、文件名或特定代理支持的任何内容。
- 要点:为配置的集群警报添加接收者
- 命令/配置摘录:
# pcs alert recipient add alert-id value=recipient-value [id=recipient-id] [description=description] [options [option=value]...] [meta [meta-option=value]...]
# pcs alert recipient add my-alert value=my-alert-recipient id=my-recipient-id options value=some-address29.5. 配置集群警报 meta 选项
- 要点:配置警报 meta 选项,以控制集群如何调用报警代理,包括超时值、时间戳格式和每个代理或接收者启用/禁用设置。
- 要点:以下示例流程为报警代理及其接收者配置集群警报 meta 选项。此流程配置调用 myscript.sh 脚本并为警报添加两个接收者的警报,从而导致每个事件调用脚本两次。
- 列表:配置一个调用脚本 myscript.sh 并使用 15 秒超时的警报。 # pcs alert create id=my-alert path=/path/to/myscript.sh meta timeout=15s
- 列表:添加一个ID 为 my-alert-recipient1 的警报接收者,使用格式为 %D %H:%M 的时间戳将调用传递给接收者 someuser@example.com 。 # pcs alert recipient add my-alert value=someuser@example.com id=my-alert-recipient1 meta timestamp-format="%D %H:%M"
- 列表:添加一个 ID 为 my-alert-recipient2 的警报接收者,使用格式为 %c 的时间戳将调用传递给接收者 otheruser@example.com。 # pcs alert recipient add my-alert value=otheruser@example.com id=my-alert-recipient2 meta timestamp-format="%c"
- 命令/配置摘录:
# pcs alert create id=my-alert path=/path/to/myscript.sh meta timeout=15s
# pcs alert recipient add my-alert value=someuser@example.com id=my-alert-recipient1 meta timestamp-format="%D %H:%M"- 表格样本(共 4 行):
- meta-Attribute | 默认值 | 描述
- enabled | true | 如果警报设置为 false,则不会使用警报。如果为该报警的接收者设置为 true,则不会使用该接收者。
- timestamp-format | %H:%M:%S.%06N | 将事件时间戳发送到代理时集群使用的格式。指定与 date(1)命令一起使用的字符串。
- timeout | 30s | 警报代理在终止前完成执行的时间限制。
29.6. 以 pcs 命令显示配置的集群警报
- 要点:您可以使用-- output-format=cmd 选项将集群警报导出为一系列 pcs 命令。这可用于在不同系统中编写脚本、自动化或复制相同的配置。
- 要点:流程
- 列表:将配置的警报显示为一系列 pcs 命令: # pcs alert config --output-format=cmd 输出示例 pcs alert create smtp alert_id_1 host=smtp.example.com to=admin@example.com pcs alert create snmp alert_id_2 host=snmp.example.com community=public
- 命令/配置摘录:
# pcs alert config --output-format=cmd
pcs alert create smtp alert_id_1 host=smtp.example.com to=admin@example.com pcs alert create snmp alert_id_2 host=snmp.example.com community=public- 注意:注意 您可以使用三种格式之一显示配置的集群警报: 文本 :以纯文本形式显示输出。这是默认格式。 JSON :以机器可读的 JSON 格式显示输出,这对于脚本处理和自动化很有用。 cmd :显示输出作为一系列 pcs 命令,您可以使用它们在不同系统上重新创建相同的警报或其他集群配置部分。
29.7. 创建和修改集群警报
- 要点:您可以创建警报、添加接收者、修改警报、删除警报并在每个步骤显示配置的警报。
- 要点:虽然您必须在集群中的每个节点上安装警报代理,但您只需要运行 pcs 命令一次。
- 列表:创建简单警报。由于没有指定报警 ID 值,系统会创建 alert 的报警 ID 值。 # pcs alert create path=/my/path
- 列表:向警报添加一个接收者 rec_value 。由于这个命令没有指定接收者 ID,因此 alert-recipient 的值被用作接收者 ID。 # pcs alert recipient add alert value=rec_value
- 列表:向警报添加第二个接收者 rec_value2 。此命令为接收者指定 my-recipient 的接收者 ID。 # pcs alert recipient add alert value=rec_value2 id=my-recipient
- 列表:添加第二个警报,警报 ID 为 my-alert。 # pcs alert create id=my-alert path=/path/to/script description=alert_description options option1=value1 opt=val meta timeout=50s timestamp-format="%H%B%S"
- 列表:为第二个报警添加一个接收者值为 my-other-recipient 的接收者。因为没有指定接收者 ID,系统会提供接收者 ID my-alert-recipient。 # pcs alert recipient add my-alert value=my-other-recipient
- 列表:修改警报 my-alert 的警报值。 # pcs alert update my-alert options option1=newvalue1 meta timestamp-format="%H%M%S"
- 命令/配置摘录:
# pcs alert create path=/my/path
# pcs alert recipient add alert value=rec_value29.8. 编写集群警报代理
- 要点:Pacemaker 集群警报有三种类型:节点警报、隔离警报和资源警报。传递给报警代理的环境变量可能会由于报警类型而有所不同。
- 要点:在编写报警代理时,您必须考虑以下问题。
- 列表:警告代理可以在没有接收者的情况下被调用(如果没有配置任何接收者),因此代理必须能够处理这种情况,即使它只在那种情况下才会退出。用户可以修改配置阶段,并在以后添加一个接收者。
- 列表:如果为报警配置了多个接收者,则会为每个接收者调用一次报警代理。如果代理无法同时运行,则应该只使用单个的接收者进行配置。不过,代理可以自由地将接收者解析为一个列表。
- 列表:当发生集群事件时,所有报警作为单独的进程同时被触发。根据配置了多少报警和接收方以及报警代理中的操作,可能会发生严重的负载突发。可以编写代理来考虑这一点,例如将资源密集型操作排队到其他实例中,而不是直接运行它们。
- 列表:报警代理以 hacluster 用户身份运行,该用户具有最小权限集。如果代理需要额外的特权,建议配置 sudo ,以允许代理以具有适当特权的另一个用户的身份运行必要的命令。
- 列表:请小心地验证和清理用户配置的参数,如 CRM_alert_timestamp (其内容由用户配置的 timestamp-format 指定)、CRM_alert_recipient 和所有报警选项。这是防止配置错误所必需的。此外,如果某些用户可以在不具有 hacluster 级别权限访问集群节点的情况下修改了 CIB,则这也是一个潜在的安全问题,您应该避免注入代码的可能性。
- 列表:如果集群包含资源,而对资源操作的 on-fail 参数设为 fence ,则失败时会有多个隔离通知,每个设置了此参数的资源都有一个通知,另外还有一个通知。pacemaker-fenced 和 pacemaker-controld 将发送通知。pacemaker 在这种情况下只能执行一个实际隔离操作,无论发送了多少条通知。
- 注意:注意 报警接口设计为与 ocf:pacemaker:ClusterMon 资源使用的外部脚本接口向后兼容。为了保持这种兼容性,传递给报警代理的环境变量会带有 CRM_notify_ 和 CRM_alert_ 前缀。兼容性方面的一个问题是 ClusterMon 资源以 root 用户身份运行外部脚本,而报警代理则以 hacluster 用户身份运行。
- 表格样本(共 15 行):
- 环境变量 | 描述
- CRM_alert_kind | 报警类型(节点、隔离或资源)
- CRM_alert_version | 发送报警的 Pacemaker 版本
- CRM_alert_recipient | 配置的接收者
第 30 章 多站点 Pacemaker 集群
- 要点:站点之间的网络问题可能会导致脑裂的情况,因为节点无法验证远程状态。距离也使同步 HA 复杂。要解决这个问题,Pacemaker 支持使用 Booth 集群票据管理器的多站点集群。
30.1. Booth 集群票据管理器概述
- 要点:Booth 是一个分布式票据管理器,它在独立于连接的站点集群的网络中运行。它会创建一个松散的覆盖集群,即站点集群上面的 Booth formation。此层有助于为各个 Booth 票据提供共识决策。
- 要点:Booth ticket 是 Boothship 中的单例,代表一个对时间敏感、可移动的授权单元。资源可以被配置为需要运行某个 ticket。这样可保证资源一次只在一个站点运行,并为其提供 ticket。
30.2. 使用 Pacemaker 配置多站点集群
- 要点:您可以使用以下流程,配置一个使用 Booth 票据管理器的多站点配置。
- 要点:这些示例命令使用以下协议:
- 列表:集群 1 由节点 cluster1-node1 和 cluster1-node2 组成
- 列表:集群 1 具有为其分配的浮动 IP 地址 192.168.11.100
- 列表:集群 2 由 cluster2-node1 和 cluster2-node2 组成
- 列表:集群 2 具有为其分配的浮动 IP 地址 192.168.22.100
- 列表:仲裁节点是 arbitrator-node ,其 IP 地址为 192.168.99.100
- 列表:此配置使用的 Booth ticket 的名称是 apacheticket
- 命令/配置摘录:
[root@cluster1-node1 ~]# dnf install -y booth-site [root@cluster1-node2 ~]# dnf install -y booth-site [root@cluster2-node1 ~]# dnf install -y booth-site [root@cluster2-node2 ~]# dnf install -y booth-site
[root@arbitrator-node ~]# dnf install -y pcs booth-core booth-arbitrator- 注意:注意 您不能在集群的任何节点上手动启动或启用 Booth,因为 Booth 作为这些集群中的 Pacemaker 资源运行。
- 注意:注意 在授予 ticket 前,不需要定义 ticket 约束。最初向集群授予一个票据后,Booth 会接管票据管理,除非您使用 pcs booth ticket revoke 命令手动覆盖了此票据。有关 pcs booth 管理命令的详情,请在您的系统上使用 pcs booth --help 命令。
30.3. 删除 Booth 票据
- 要点:使用 pcs booth ticket remove 删除 Booth 集群票据后,或使用 pcs booth pull 拉取更新的配置后,票据状态将保留在 Cluster Information Base (CIB)中。
- 要点:当您配置票据约束时,这可能会导致问题,因为即使在票据被删除后,也可以授予票据约束。因此,集群可能会冻结或隔离一个节点。要防止这种情况,您可以使用 pcs booth ticket cleanup 命令从 CIB 中删除 Booth 票据。
- 列表:您已配置了使用 Booth ticket Manager 的多站点配置。具体说明请参阅 使用 Pacemaker 配置多站点集群。
- 列表:配置的示例使用以下安排: 集群 1 由节点 cluster1-node1 和 cluster1-node2 组成。 集群 2 由节点 cluster2-node1 和 cluster2-node2 组成。 仲裁节点被命名为 arbitrator-node。 此配置使用的 Booth 票据的名称是 apacheticket。
- 列表:集群 1 由节点 cluster1-node1 和 cluster1-node2 组成。
- 列表:集群 2 由节点 cluster2-node1 和 cluster2-node2 组成。
- 列表:仲裁节点被命名为 arbitrator-node。
- 列表:此配置使用的 Booth 票据的名称是 apacheticket。
- 命令/配置摘录:
[cluster1-node1 ~]# pcs booth ticket standby apacheticket
[cluster1-node1 ~]# pcs booth ticket remove apacheticket第 31 章 将非 corosync 节点整成到集群中:pacemaker_remote 服务
- 要点:pacemaker_remote 服务将不运行 corosync 的节点集成到集群中。Pacemaker 管理 pacemaker_remote 资源,就像在任何其他集群节点上一样。
- 要点:pacemaker_remote 服务提供的功能如下:
- 列表:pacemaker_remote 服务允许您扩展到红帽支持超过 32 个节点的限制。
- 列表:pacemaker_remote 服务允许您将虚拟环境作为集群资源来管理,还可以将虚拟环境中的单个服务作为集群资源来管理。
- 列表:集群节点 - 运行高可用性服务(pacemaker 和 corosync)的节点。
- 列表:远程节点 - 运行 pacemaker_remote 的节点,来远程集成到集群中,而不需要 corosync 集群成员资格。远程节点被配置为使用 ocf:pacemaker:remote 资源代理的集群资源。
- 列表:客户机节点 - 运行 pacemaker_remote 服务的虚拟客户机节点。虚拟客体资源由集群管理,它由集群启动,并作为远程节点集成到集群中。
- 列表:pacemaker_remote - 一个能够在 Pacemaker 集群环境中的远程节点和 KVM 客户机节点中执行远程应用程序管理的服务守护进程。这个服务是 Pacemaker 的本地 executor 守护进程(pacemaker-execd)的改进版本,能够在没有运行 corosync 的节点中远程管理资源。
31.1. pacemaker_remote 节点的主机和客户机身份验证
- 要点:Pacemaker 支持使用带有预共享密钥(PSK)的传输层安全(TLS)或 X.509 证书的 TLS,在集群节点和 pacemaker_remote 节点间保护连接。
- 要点:带有 PSK 加密的 TLS
- 列表:使用 pcs cluster node add-guest 命令配置客户机节点时
- 列表:使用 pcs cluster node add-remote 命令配置远程节点时
- 列表:使用 pcs cluster node add-guest 或 pcs cluster node add-remote 命令创建远程连接。这会为客户机或远程节点配置 authkey。以下示例创建远程节点并配置其 authkey : [root@clusternode1 ~]# pcs cluster node add-remote remote1
- 列表:通过在所有集群节点和 Pacemaker 远程节点上的 /etc/sysconfig/pacemaker 文件中设置以下变量,来转换创建的连接以使用 SSL/TLS 证书: PCMK_ca_file 包含可信证书颁发机构的 PEM 格式文件的位置,用于验证客户端或服务器证书。必须为 hacluster 用户或 haclient 组授予读取权限。 PCMK_cert_file 包含连接的服务器端签名证书的 PEM 格式文件的位置。必须为 hacluster 用户或 haclient 组授予读取权限。 PCMK_crl_file (可选) PEM 格式的证书撤销列表文件的位置。 PCMK_key_file PEM 格式文件的位置,其中…
- 列表:可选:从集群和远程节点中删除任何 /etc/pacemaker/authkey 文件。Pacemaker 配置时优先选择证书,但如果节点上没有正确配置证书,则删除 authkey 文件会阻止回退到 PSK 加密。
- 列表:配置 Pacemaker 远程节点
- 命令/配置摘录:
[root@clusternode1 ~]# pcs cluster node add-remote remote131.2. 配置 KVM 客户机节点
- 要点:Pacemaker 客户机节点是运行 pacemaker_remote 服务的虚拟客户机节点。虚拟客户机节点由集群管理。
- 要点:客户端节点资源选项
- 列表:配置 VirtualDomain 资源。
- 列表:在每一虚拟机上输入以下命令来安装 pacemaker_remote 软件包,启动 pcsd 服务并启用它在启动时运行,并允许 TCP 端口 3121 通过防火墙。 # dnf install pacemaker-remote resource-agents pcs # systemctl start pcsd.service # systemctl enable pcsd.service # firewall-cmd --add-port 3121/tcp --permanent # firewall-cmd --add-port 2224/tcp --permanent # firewall-cmd --reload
- 列表:为每个虚拟机分配一个静态网络地址和唯一主机名,适用于所有节点。
- 列表:如果您还没有这样做,在要整合为最优节点的节点上验证 pcs。 # pcs host auth nodename
- 列表:使用以下命令将现有 VirtualDomain 资源转换为客户机节点。这个命令必须在集群节点上运行,而不是在要添加的客户端节点上运行。除了转换资源外,这个命令会将 /etc/pacemaker/authkey 复制到客户机节点上,并在客户机节点上启动并启用 pacemaker_remote 守护进程。客户机节点的节点名称(您可以随意定义)可以与节点的主机名不同。 # pcs cluster node add-guest nodename resource_id [options]
- 列表:创建 VirtualDomain 资源后,您可以像对待集群中的任何其他节点一样对待客户机节点。例如,您可以创建资源并在客户机节点中运行的资源上放置资源约束,如下命令可在集群节点中运行。您可以在组群中包含客户机节点,它们允许您对存储设备、文件系统和虚拟机进行分组。 # pcs resource create webserver apache configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s # pcs constraint location webserver prefers nodename
- 命令/配置摘录:
# dnf install pacemaker-remote resource-agents pcs # systemctl start pcsd.service # systemctl enable pcsd.service # firewall-cmd --add-port 3121/tcp --permanent # firewall-cmd --add-port 2224/tcp --permanent # firewall-cmd --reload
# pcs host auth nodename- 表格样本(共 5 行):
- 项 | Default(默认) | 描述
- remote-node | <none> | 此资源定义的客户机节点的名称。此设置启用资源作为客户机节点,并定义其唯一标识符。警告 :这个值不得与任何资源或节点 ID 重叠。
- remote-port | 3121 | 配置一个自定义端口,用于到 pacemaker_remote 的客户机连接。
- remote-addr | pcs host auth 命令提供的地址 | 要连接的 IP 地址或主机名。
31.3. 配置 Pacemaker 远程节点
- 要点:远程节点被定义为将 ocf:pacemaker:remote 作为资源代理的集群资源。您可以使用 pcs cluster node add-remote 命令创建此资源。
- 要点:下表描述了您可以为 remote 资源配置的资源选项。
- 表格样本(共 4 行):
- 项 | Default(默认) | 描述
- reconnect_interval | 0 | 在到远程节点活跃连接断开后,在尝试重新连接到远程节点前等待的时间(以秒为单位)。这个等待是重复的。如果在等待时间过后重新连接失败,会在观察等待时间后进行一个新的重新连接尝试。当使用这个选项时,Pacemaker 会在每次等待的时间段内一直尝试退出并连接到远程节点。
- server | 使用 pcs host auth 命令指定的地址 | 要连接的服务器。这可以是 IP 地址或主机名。
- port | 要连接的 TCP 端口。
31.4. 远程节点配置概述
- 要点:配置 Pacemaker 远程节点并将其整合到现有集群中。
- 要点:流程
- 列表:在您要配置为远程节点的节点上,允许通过本地防火墙与集群相关的服务。 # firewall-cmd --permanent --add-service=high-availability success # firewall-cmd --reload success 注意 如果您直接使用 iptables,或者 firewalld 以外的其它防火墙解决方案,请打开以下端口: TCP 端口 2224 和 3121。
- 列表:在远程节点上安装 pacemaker_remote 守护进程。 # dnf install -y pacemaker-remote resource-agents pcs
- 列表:在远程节点上启动并启用 pcsd。 # systemctl start pcsd.service # systemctl enable pcsd.service
- 列表:如果您还没有这样做,请在要添加为远程节点的节点上验证 pcs。 # pcs host auth remote1
- 列表:使用以下命令在集群中添加远程节点资源。此命令还会将所有相关配置文件同步到新节点上,启动节点,并将其配置为在引导时启动 pacemaker_remote。这个命令必须运行在集群节点中,而不必在要添加的远程节点中运行。 # pcs cluster node add-remote remote1
- 列表:在集群中添加 远程 资源后,您可以像对待集群中的任何其他节点一样对待远程节点。例如,您可以创建资源并在远程节点中运行的资源上放置资源约束,如下命令可在集群节点中运行。 # pcs resource create webserver apache configfile=/etc/httpd/conf/httpd.conf op monitor interval=30s # pcs constraint location webserver prefers remote1 警告 资源组、colocation 约束或顺序约束中永远不会涉及远程节点连接资源。
- 命令/配置摘录:
# firewall-cmd --permanent --add-service=high-availability
success- 注意:注意 如果您直接使用 iptables,或者 firewalld 以外的其它防火墙解决方案,请打开以下端口: TCP 端口 2224 和 3121。
- 注意:警告 资源组、colocation 约束或顺序约束中永远不会涉及远程节点连接资源。
31.5. 更改默认端口位置
- 要点:如果您需要更改 Pacemaker 或 pacemaker_remote 的默认端口位置,您可以设置影响这两个守护进程的 PCMK_remote_port 环境变量。
- 要点:流程
- 列表:通过将环境变量放在 /etc/sysconfig/pacemaker 文件中来启用环境变量: #==#==# Pacemaker Remote ... # # Specify a custom port for Pacemaker Remote connections PCMK_remote_port=3121 当更改特定客户机节点或远程节点使用的默认端口时,必须在该节点的 /etc/sysconfig/pacemaker 文件中设置 PCMK_remote_port 变量,创建客户机节点或远程节点连接的集群资源也必须使用同样的端口号来配置(对客户机节点使用 remote-port 元数据选项,对远程节点使用 port 选项)。
- 命令/配置摘录:
\#==#==# Pacemaker Remote ... # # Specify a custom port for Pacemaker Remote connections PCMK_remote_port=312131.6. 使用 pacemaker_remote 节点升级系统
- 要点:在活跃节点上停止 pacemaker_remote 服务会触发安全的资源迁移进行维护。关闭后,集群会尝试立即重新连接。如果服务在 monitor 超时前没有重启,集群会将资源标记为失败。
- 要点:如果要避免在活跃的 Pacemaker 远程节点上停止 pacemaker_remote 服务时监控失败,您可以在执行任何可能停止 pacemaker_remote 的系统管理前使用以下步骤使节点退出集群。
- 列表:使用 pcs resource disable resourcename 命令停止节点的连接资源,这样可将所有服务移出该节点。连接资源是远程节点的 ocf:pacemaker:remote 资源,通常为客户机节点的 ocf💓VirtualDomain 资源。对于客户机节点,此命令也会停止虚拟机,因此虚拟机必须在集群外启动(例如,使用 virsh)以执行任何维护。 # pcs resource disable resourcename
- 列表:执行所需的维护。
- 列表:当准备好将节点返回集群时,使用 pcs resource enable 命令重新启用该资源。 # pcs resource enable resourcename
- 命令/配置摘录:
# pcs resource disable resourcename
# pcs resource enable resourcename31.7. 验证 Pacemaker 远程节点不再必要隔离
- 要点:在 RHEL 10 上,fence-remote-without-quorum 集群属性默认设置为 false。这样可确保当管理分区丢失仲裁时,远程节点不会不必要的隔离。您可以通过临时更改配置来允许隔离来验证此行为。
- 要点:先决条件
- 列表:正在运行的 RHEL 高可用性集群至少有三个集群节点和一个远程节点。
- 列表:配置为在远程节点上运行的资源。
- 列表:为所有节点配置隔离。
- 列表:配置集群以复制原始行为: 将 no-quorum-policy 属性设置为 freeze。 将 fence-remote-without-quorum 属性设置为 true。 注意 在 RHEL 10 中,默认值为 false。此步骤明确覆盖默认值,以模拟旧的行为进行验证。 [root@node1 ~]# pcs property set no-quorum-policy=freeze [root@node1 ~]# pcs property set fence-remote-without-quorum=true
- 列表:将 no-quorum-policy 属性设置为 freeze。
- 列表:将 fence-remote-without-quorum 属性设置为 true。 注意 在 RHEL 10 中,默认值为 false。此步骤明确覆盖默认值,以模拟旧的行为进行验证。 [root@node1 ~]# pcs property set no-quorum-policy=freeze [root@node1 ~]# pcs property set fence-remote-without-quorum=true
- 命令/配置摘录:
[root@node1 ~]# pcs property set no-quorum-policy=freeze [root@node1 ~]# pcs property set fence-remote-without-quorum=true
[root@hvirt-325 ~]# iptables -I INPUT -p udp --dport=5405 -j DROP- 注意:注意 在 RHEL 10 中,默认值为 false。此步骤明确覆盖默认值,以模拟旧的行为进行验证。
第 32 章 执行集群维护
- 要点:要在集群节点上执行维护,您可能需要停止或移动集群中运行的资源和服务。在某些情况下,您可以在不影响服务的情况下停止集群软件。Pacemaker 提供了多种方法来支持系统维护。
32.1. 把节点设置为待机模式
- 要点:当集群节点处于待机模式时,节点将不再能够托管资源。该节点上所有当前活跃的资源都将移至另一节点。
- 要点:以下命令将指定节点设置为待机模式。如果指定了 --all 选项,这个命令会将所有节点置于待机模式。
- 列表:将指定节点设置为待机模式: # pcs node standby node | --all
- 列表:从待机模式中删除指定节点。运行此命令后,指定节点就可以托管资源。如果您指定了 the -all 选项,这个命令会将所有节点从待机模式中删除: # pcs node unstandby node | --all 请注意,当运行 pcs node standby 命令时,这会阻止资源在指定节点上运行。当您运行 pcs node unstandby 命令时,这允许资源在指定节点上运行。这不一定将资源回指定节点 ; 此时可以在哪里运行这些资源取决于您最初配置的资源。
- 命令/配置摘录:
# pcs node standby node | --all
# pcs node unstandby node | --all32.2. 手动移动集群资源
- 要点:您可以覆盖集群并强制资源从其当前位置移动。当您要执行此操作时有两个问题。
- 要点:要将节点上运行的所有资源移动到另一个节点,需要使该节点处于待机模式。有关将集群节点置于 standby 节点的详情,请参考 将节点置于 standby 模式。
- 列表:当某个节点处于维护状态时,您需要将该节点上运行的所有资源移至不同节点
- 列表:当需要移动单独指定的资源时
- 列表:您可以使用 pcs resource move 命令将资源从当前运行的节点中移出,如从 当前节点移动资源 中所述。
- 列表:您可以使用 pcs resource relocate run 命令将资源移至首选节点,具体由当前的集群状态、约束、资源位置和其他设置来决定。有关这个命令的详情,请参考 将资源移动到首选节点。
- 列表:如果您指定了 pcs resource move 命令的 --promoted 参数,则约束仅适用于提升资源实例。
- 列表:如果您指定 pcs resource move 命令的 --strict 参数,则命令将失败,如果命令中指定的其他资源不受影响。
- 命令/配置摘录:
# pcs resource move resource_id [destination_node] [--promoted] [--strict] [--wait[=n]]
# pcs resource relocate run [resource1] [resource2] ...32.3. 禁用、启用和禁止集群资源
- 要点:除了 pcs resource move 和 pcs resource relocate 命令外,您还可以使用各种其他命令来控制集群资源的行为。
32.3.1. 禁用集群资源
- 要点:禁用集群资源以进行维护、故障排除或配置更改,而无需从集群中删除。禁用停止资源,并防止自动重启,直到重新启用为止。
- 要点:模拟资源禁用操作
- 列表:pcs resource disable --safe 命令仅在没有其他资源受到影响时禁用资源(例如,迁移到另一节点)。pcs resource secure-disable 命令是此命令的别名。
- 列表:pcs resource disable --safe --no-strict 命令仅在没有其他资源停止或降级时禁用资源。
- 列表:停止正在运行的资源,并阻止集群重启它: # pcs resource disable resource_id [--wait[=n]]
- 命令/配置摘录:
# pcs resource disable resource_id [--wait[=n]]32.3.2. 启用集群资源
- 要点:启用资源以允许集群启动它。根据配置,资源可能会保持停止状态。use-- wait=n 暂停资源启动(重新返回 0)或超时过期(返回 1)。默认超时为 60 分钟。
- 要点:流程
- 列表:使用以下命令来允许集群启动资源: # pcs resource enable resource_id [--wait[=n]]
- 命令/配置摘录:
# pcs resource enable resource_id [--wait[=n]]32.3.3. 防止资源在特定节点上运行
- 要点:您可以防止资源在指定节点上运行,如果未指定节点,则可以在当前节点上运行。
- 要点:流程
- 列表:防止资源在指定节点上运行,如果没有指定节点,则在当前节点上运行: # pcs resource ban resource_id [node] [--promoted] [lifetime=lifetime] [--wait[=n]] 注意 运行 pcs resource ban 命令时,这会向资源添加 -INFINITY 位置约束,以防止其在指定节点上运行。您可以运行 pcs resource clear 或 pcs constraint delete 命令来删除约束。这不一定将资源回指定节点 ; 此时可以在哪里运行这些资源取决于您最初配置的资源。有关资源约束的详情,请参阅 确定资源可在哪些节点上运行。
- 列表:如果您指定 pcs resource ban 命令的 --promoted 参数,则约束的范围仅限于提升的角色,您必须指定 promotable_id 而不是 resource_id。
- 列表:您可选择为 pcs resource ban 命令配置 lifetime 参数,以指示约束应保留的时间。
- 列表:您可以选择为 pcs resource ban 命令配置 --wait[=n] 参数,以指示在返回 0(如果资源已启动)或 1 (如果资源尚未启动)之前,在目标节点上等待资源启动的秒数。如果没有指定 n,则使用默认资源超时。
- 命令/配置摘录:
# pcs resource ban resource_id [node] [--promoted] [lifetime=lifetime] [--wait[=n]]- 注意:注意 运行 pcs resource ban 命令时,这会向资源添加 -INFINITY 位置约束,以防止其在指定节点上运行。您可以运行 pcs resource clear 或 pcs constraint delete 命令来删除约束。这不一定将资源回指定节点 ; 此时可以在哪里运行这些资源取决于您最初配置的资源。有关资源约束的详情,请参阅 确定资源可在哪些节点上运行。
32.3.4. 强制资源在当前节点上启动
- 要点:使用 pcs resource debug-start 强制资源在当前节点上启动以进行调试。此命令输出并忽略集群建议。不要将此用于正常操作;Pacemaker 管理启动集群资源。
- 要点:流程
- 列表:使用 debug-start 命令强制指定资源在当前节点上启动: # pcs resource debug-start resource_id
- 命令/配置摘录:
# pcs resource debug-start resource_id32.4. 将资源设置为非受管模式
- 要点:当资源处于 unmanaged 模式时,该资源仍然处于配置中,但 Pacemaker 不管理该资源。
- 要点:流程
- 列表:将指示的资源设置为 非受管 模式: # pcs resource unmanage resource1 [resource2] ...
- 列表:将 resources 设置为 managed 模式,这是默认状态: # pcs resource manage resource1 [resource2] ... 您可以使用 pcs resource manage 或 pcs resource unmanage 命令来指定资源组的名称。命令将对组中的所有资源执行操作,以便您可以通过单个命令将组中的所有资源设置为 managed 或 unmanaged 模式,然后单独管理包含的资源。
- 命令/配置摘录:
# pcs resource unmanage resource1 [resource2] ...
# pcs resource manage resource1 [resource2] ...32.5. 将集群设置为维护模式
- 要点:当集群处于维护模式时,除非有特别说明,集群不会启动或停止任何服务。当维护模式完成后,集群会对任何服务的当前状态进行完整性检查,然后停止或启动任何需要它的状态。
- 要点:要将集群设置为维护模式,请使用以下命令将 maintenance-mode 集群属性设置为 true。
- 命令/配置摘录:
# pcs property set maintenance-mode=true
# pcs property set maintenance-mode=false32.6. 更新 RHEL 高可用性集群
- 要点:可以使用两种通用方法之一,单独或作为一个整体更新组成 RHEL High Availability Add-On 的软件包:
- 要点:其他资源
- 列表:滚动更新:从服务中删除一个节点,更新其软件,然后将其重新集成到集群中。这可让集群在更新每个节点时继续提供服务和管理资源。
- 列表:更新整个集群:停止整个集群,对所有节点应用更新,然后重新启动集群。
- 列表:将软件更新应用到 RHEL 高可用性或弹性存储集群的推荐做法
- 注意:警告 当为 Red Hat Enterprise Linux High Availability 集群执行软件更新流程时,请确保在启动更新前,任何将进行更新的节点都不是集群的活跃成员。
32.7. 升级远程节点和客户机节点
- 要点:在活动节点上停止 pacemaker_remote 服务会触发安全的资源迁移,从而启用无缝维护。但是,集群会尝试立即重新连接。如果服务没有在监控超时内重启,集群会检测到失败。
- 要点:为了避免 pacemaker_remote 服务在活跃的 Pacemaker 远程节点上停止时监控失败,请在执行任何可能停止 pacemaker_remote 的系统管理之前,使用以下流程将节点从集群中退出。
- 列表:使用 pcs resource disable resourcename 命令停止节点的连接资源,这样可将所有服务移出该节点。连接资源是远程节点的 ocf:pacemaker:remote 资源,通常为客户机节点的 ocf💓VirtualDomain 资源。对于客户机节点,此命令也会停止虚拟机,因此虚拟机必须在集群外启动(例如,使用 virsh)以执行任何维护。 # pcs resource disable resourcename
- 列表:执行所需的维护。
- 列表:当准备好将节点返回集群时,使用 pcs resource enable 命令重新启用该资源。 # pcs resource enable resourcename
- 命令/配置摘录:
# pcs resource disable resourcename
# pcs resource enable resourcename32.8. 在 RHEL 集群中迁移虚拟机
- 要点:红帽不支持对活跃集群节点进行实时迁移。要迁移虚拟机,请停止集群服务使节点离线,迁移虚拟机并重启服务。详情请参阅 RHEL 高可用性集群的支持政策 - 虚拟化集群成员的一般条件。
- 要点:以下步骤概述了从集群中删除虚拟机、迁移虚拟机以及将虚拟机恢复到集群的步骤。
- 列表:如果需要在停止或移动虚拟机上运行的资源或软件进行迁移前进行准备,请执行这些步骤。
- 列表:在虚拟机上运行以下命令来停止虚拟机上的集群软件。 # pcs cluster stop
- 列表:执行虚拟机的实时迁移。
- 列表:在虚拟机上启动集群服务。 # pcs cluster start
- 命令/配置摘录:
# pcs cluster stop
# pcs cluster start- 注意:注意 执行此步骤前,请考虑删除集群节点对集群仲裁的影响。例如,如果您有一个三节点集群,并且删除了一个节点,则集群将无法使用任何节点失败。这是因为,如果三节点集群中的一个节点已停机,则删除第二个节点将会丢失仲裁。
32.9. 通过 UUID 识别集群
- 要点:在创建集群时,它接收第三方工具(如配置管理数据库)的唯一 UUID,用于区分具有相同名称的集群。使用 pcs cluster config [show] 命令显示集群 UUID。
- 要点:流程
- 列表:在现有集群中添加 UUID: # pcs cluster config uuid generate
- 列表:为具有现有 UUID 的集群重新生成 UUID: # pcs cluster config uuid generate --force
- 命令/配置摘录:
# pcs cluster config uuid generate
# pcs cluster config uuid generate --force32.10. 重命名集群
- 要点:您可以使用 pcs cluster rename 命令更改现有集群的名称。
- 要点:流程
- 列表:要重命名集群,请从任何集群节点运行 pcs cluster rename 命令。将 <new-name > 替换为您要分配给集群的新名称: # pcs cluster rename <new-name>
- 命令/配置摘录:
# pcs cluster rename <new-name>第 33 章 删除集群配置
- 要点:当不再需要集群时,从系统永久删除所有 Pacemaker 和 Corosync 集群配置,或者必须从头开始重新构建。
- 要点:先决条件
- 列表:您有 root 访问权限或具有 sudo 权限的非 root 用户帐户。
- 列表:pcs 命令行工具已安装。
- 列表:可选:在节点上完全停止集群。 # pcs cluster stop 停止集群会降低清理不完整的风险。
- 列表:删除所有集群配置并禁用集群服务。 # pcs cluster destroy
- 列表:验证集群服务不再运行。 # pcs status 如果成功删除集群,命令会报告没有配置集群。
- 列表:可选:确认集群服务已被停止。 # systemctl status pacemaker corosync 这两个服务都应该不活跃或未找到。
- 命令/配置摘录:
# pcs cluster stop
# pcs cluster destroy- 注意:重要 删除集群配置是不可逆的。完成后,节点不再是任何集群的一部分,在没有重新配置的情况下无法恢复。
第 34 章 配置灾难恢复集群
- 要点:要为高可用性集群提供灾难恢复,请配置两个集群:主站点集群和灾难恢复集群。
- 要点:在通常情况下,主集群在生产环境模式下运行资源。灾难恢复集群还配置了所有资源,且以降级模式运行或根本不运行。例如,在主集群中以提升模式运行数据库,且以降级模式在灾难恢复集群中运行。这个设置中的数据库将被配置,以便数据从主站点与灾难恢复网站同步。这是通过数据库配置本身进行的,而不是通过 pcs 命令界面完成。
34.1. 灾难恢复集群的注意事项
- 要点:在计划和配置要使用 pcs 命令管理并监控的灾难恢复网站时,请注意以下注意事项。
- 列表:灾难恢复网站必须是一个集群。这样便可使用和主要站点相同的工具和相似过程配置它。
- 列表:主集群和灾难恢复集群由独立的 pcs cluster setup 命令创建。
- 列表:必须配置集群及其资源,以便同步数据并可进行故障转移。
- 列表:恢复站点中的集群节点的名称与主站点中的节点的名称相同。
- 列表:在要运行 pcs 命令的节点上,必须针对两个集群中每个节点的 pcs 用户 hacluster 进行身份验证。
34.2. 显示恢复集群的状态
- 要点:您可以配置一个主集群和灾难恢复集群,以便您可以显示两个集群的状态。
- 要点:在本例中:
- 列表:主集群将命名为 PrimarySite,它由 z1.example.com 和 z2.example.com 组成。
- 列表:灾难恢复站点集群将被命名为 DRsite,由节点 z3.example.com 和 z4.example.com 组成。
- 列表:身份验证将用于这两个集群的所有节点。 [root@z1 ~]# pcs host auth z1.example.com z2.example.com z3.example.com z4.example.com -u hacluster -p password z1.example.com: Authorized z2.example.com: Authorized z3.example.com: Authorized z4.example.com: Authorized
- 列表:创建用作集群的主集群并为集群启动集群服务的集群。 [root@z1 ~]# pcs cluster setup PrimarySite z1.example.com z2.example.com --start {...} Cluster has been successfully set up. Starting cluster on hosts: 'z1.example.com', 'z2.example.com'...
- 列表:创建用作灾难恢复集群的集群,,为集群启动集群服务。 [root@z1 ~]# pcs cluster setup DRSite z3.example.com z4.example.com --start {...} Cluster has been successfully set up. Starting cluster on hosts: 'z3.example.com', 'z4.example.com'...
- 列表:在主集群中的一个节点中,将第二个集群配置为恢复站点。该恢复站点由其中一个节点的名称定义。 [root@z1 ~]# pcs dr set-recovery-site z3.example.com Sending 'disaster-recovery config' to 'z3.example.com', 'z4.example.com' z3.example.com: successful distribution of the file 'disaster-recovery config' z4.example.com: successful distribution of the file 'disaster-recover…
- 命令/配置摘录:
[root@z1 ~]# pcs host auth z1.example.com z2.example.com z3.example.com z4.example.com -u hacluster -p password
z1.example.com: Authorized z2.example.com: Authorized z3.example.com: Authorized z4.example.com: Authorized- 注意:注意 配置灾难恢复集群不会自动配置资源或复制数据。这些项目必须由用户手动配置。
附录 A. 解释资源代理 OCF 返回码
- 要点:Pacemaker 资源代理符合 Open Cluster Framework(OCF)Resource Agent API。
- 要点:当代理返回代码时,集群要做的第一件事是针对预期结果检查返回码。如果结果与预期值不匹配,则操作被视为失败,并启动恢复操作。
- 表格样本(共 4 行):
- 类型 | 描述 | 集群采取的操作
- soft | 发生了短暂错误。 | 重新启动资源或将其移到新位置。
- hard | 发生了一个可能特定于当前节点的非短暂错误。 | 将资源移到其他地方,并阻止其在当前节点上被重试。
- fatal | 发生了一个对所有集群节点都常见的非短暂错误(例如,指定了一个错误的配置)。 | 停止资源,并阻止其在任何集群节点上启动。
完整目录
- 使用红帽高可用性附加组件创建和维护 Pacemaker 集群
- 对红帽文档提供反馈
- 第 1 章 高可用性附加组件概述
- 1.1. Pacemaker 架构组件
- 1.2. Pacemaker 配置和管理工具
- 1.3. 集群和 Pacemaker 配置文件
- 第 2 章 RHEL web 控制台的 HA 集群管理附加组件入门
- 2.1. 为 RHEL web 控制台安装并启用 HA 集群管理附加组件
- 2.2. 授予 HA 集群管理权限
- 第 3 章 使用 Pacemaker 创建红帽高可用性集群
- 3.1. 先决条件
- 3.2. 安装集群软件
- 3.3. 安装 pcp-zeroconf 软件包(推荐)
- 3.4. 创建高可用性集群
- 3.5. 创建使用多个链接的高可用性集群
- 3.6. 配置隔离
- 3.7. 备份和恢复集群配置
- 3.8. 为高可用性附加组件启用端口
- 3.9. 使用 IBM z/VM 实例将红帽高可用性集群配置为集群成员
- 3.10. 其他资源
- 第 4 章 在红帽高可用性集群中配置主动/被动 Apache HTTP 服务器
- 4.1. 在 Pacemaker 集群中使用 XFS 文件系统配置一个 LVM 卷
- 4.2. 配置 Apache HTTP 服务器
- 4.3. 创建资源和资源组
- 4.4. 测试资源配置
- 第 5 章 在红帽高可用性集群中配置主动/被动模式的 NFS 服务器
- 5.1. 在 Pacemaker 集群中使用 XFS 文件系统配置一个 LVM 卷
- 5.2. 配置一个 NFS 共享
- 5.3. 为集群中的 NFS 服务器配置资源和资源组
- 5.4. 测试 NFS 资源配置
- 第 6 章 将配置更改保存到工作文件中
- 第 7 章 显示集群状态
- 第 8 章 修改、显示和导出 corosync.conf 文件
- 8.1. 使用 pcs 命令修改 corosync.conf 文件
- 8.2. 使用 pcs 命令显示 corosync.conf 文件
- 8.3. 导出 corosync.conf 文件
- 第 9 章 在 Red Hat High Availability 集群中配置隔离功能
- 9.1. 显示可用的隔离代理及其选项
- 9.2. 创建隔离设备
- 9.3. 隔离设备的常规属性
- 9.4. 隔离延迟
- 9.5. 测试隔离设备
- 9.6. 配置隔离级别
- 9.7. 删除隔离级别
- 9.8. 清除隔离级别
- 9.9. 验证隔离级别中的节点和设备
- 9.10. 在隔离拓扑中指定节点
- 9.11. 配置冗余电源的隔离
- 9.12. 管理隔离设备
- 9.12.1. 显示配置的隔离设备
- 9.12.2. 使用 pcs 命令导出隔离设备
- 9.12.3. 导出隔离级别配置
- 9.12.4. 修改和删除隔离设备
- 9.12.5. 手动隔离一个集群节点
- 9.12.6. 禁用隔离设备
- 9.12.7. 防止节点使用隔离设备
- 9.13. 其他资源
- 第 10 章 在高可用性集群中配置 SBD 隔离
- 10.1. SBD 隔离概述
- 10.2. 配置仅限 watchdog 的 SBD 隔离
- 10.3. 为选择隔离创建可见的 watchdog 设备
- 10.4. 使用 QDevice 在 2 节点集群中配置仅限 watchdog 的 SBD 隔离
- 10.5. 配置 poison-pill SBD 隔离
- 10.6. poison-pill 隔离中的时间配置注意事项
- 第 11 章 配置集群资源
- 11.1. 资源创建示例
- 11.2. 删除配置的资源
- 11.3. 资源代理标识符
- 11.4. 显示资源和资源参数
- 11.5. 为集群资源和元素添加描述
- 11.6. 配置资源 meta 选项
- 11.7. 设置 meta 选项
- 11.8. 更改资源选项的默认值
- 11.9. 更改一组资源选项的默认值
- 11.10. 显示当前配置的资源默认设置
- 11.11. 配置资源组
- 11.12. 显示资源依赖项
- 11.13. 其他资源
- 第 12 章 确定资源可在哪些节点上运行
- 12.1. 配置位置限制
- 12.1.1. 配置基本位置约束
- 12.1.2. 使用正则表达式配置位置约束
- 12.1.3. 使用扩展正则表达式配置位置约束
- 12.1.4. 显示位置限制
- 12.2. 将资源发现限制为节点子集
- 12.3. 配置位置约束策略
- 12.4. 配置资源以首选其当前节点
- 12.1. 配置位置限制
- 第 13 章 确定运行集群资源的顺序
- 13.1. 配置必须的排序
- 13.2. 配置公告顺序
- 13.3. 配置排序的资源集
- 13.4. 为不由 Pacemaker 管理的资源依赖项配置启动顺序
- 13.4.1. 为外部服务配置启动顺序
- 13.4.2. 为外部依赖项配置启动顺序
- 13.4.3. 为远程块存储配置启动顺序
- 第 14 章 Colocating 集群资源
- 14.1. 指定资源的强制放置
- 14.2. 指定资源的公告放置
- 14.3. 资源共存集合
- 第 15 章 使用 pcs 命令导出资源约束
- 第 16 章 使用节点属性配置特定于节点的值
- 第 17 章 使用规则决定资源位置
- 17.1. Pacemaker 规则
- 17.1.1. 节点属性表达式
- 17.1.2. 基于时间/日期的表达式
- 17.1.3. 日期规格
- 17.2. 使用规则配置 Pacemaker 位置约束
- 17.3. 删除一个 Pacemaker 规则
- 17.1. Pacemaker 规则
- 第 18 章 管理集群资源
- 18.1. 使用 pcs 命令导出集群资源
- 18.2. 修改资源参数
- 18.3. 清除集群资源的失败状态
- 18.4. 在集群中移动资源
- 18.5. 配置和管理集群资源标签
- 18.5.1. 为管理标记集群资源,按类别标记
- 18.5.2. 删除标记的集群资源
- 18.5.3. 显示和导出集群资源标签
- 第 19 章 创建在多个节点上活跃的集群资源(克隆的资源)
- 19.1. 创建和删除克隆的资源
- 19.2. 配置克隆资源限制
- 19.3. 可升级克隆资源
- 19.3.1. 创建可升级的克隆资源
- 19.3.2. 配置可升级资源限制
- 19.3.3. 失败时降级升级的资源
- 第 20 章 管理集群节点
- 20.1. 停止集群服务
- 20.2. 启用和禁用集群服务
- 20.3. 添加集群节点
- 20.4. 删除集群节点
- 20.5. 将节点添加到带有多个链接的集群中
- 20.6. 在现有集群中添加和修改链接
- 20.6.1. 在现有集群中添加和删除链接
- 20.6.2. 使用多个链接修改集群中的链接
- 20.6.3. 使用单个链接修改集群中的链接地址
- 20.6.4. 使用单一链接修改集群中链接的选项
- 20.6.5. 不可能在添加新链接时修改链接
- 20.7. 配置节点健康策略
- 20.8. 使用许多资源配置大型集群
- 第 21 章 为 Pacemaker 集群设置用户权限
- 21.1. 设置通过网络访问节点的权限
- 21.2. 使用 ACL 设置本地权限
- 第 22 章 资源监控操作
- 22.1. 配置资源监控操作
- 22.2. 修改资源监控选项
- 22.3. 配置全局资源操作默认
- 22.4. 配置多个监控操作
- 22.5. 禁用一个监控操作
- 第 23 章 Pacemaker 集群属性
- 23.1. 集群属性和选项概述
- 23.2. 设置和删除集群属性
- 23.3. 查询集群属性设置
- 23.4. 使用 pcs 命令导出集群属性
- 第 24 章 配置资源以在清理节点关闭时保持停止
- 24.1. 集群属性配置资源以在清理节点关闭时保持停止
- 24.2. 设置 shutdown-lock 集群属性
- 第 25 章 配置节点放置策略
- 25.1. 使用属性和放置策略
- 25.2. Pacemaker 资源分配
- 25.2.1. 节点首选项
- 25.2.2. 节点容量
- 25.2.3. 资源分配首选项
- 25.3. 资源放置策略指南
- 25.4. NodeUtilization 资源代理
- 第 26 章 将虚拟域配置为资源
- 26.1. 虚拟域资源选项
- 26.2. 创建虚拟域资源
- 第 27 章 配置集群仲裁(quorum)
- 27.1. 配置仲裁选项
- 27.2. 修改仲裁选项
- 27.3. 显示制裁配置和状态
- 27.4. 运行非仲裁的集群
- 27.5. 其他资源
- 第 28 章 配置仲裁设备
- 28.1. 安装制裁设备软件包
- 28.2. 配置仲裁设备
- 28.3. 管理仲裁设备服务
- 28.4. 管理集群中的仲裁设备
- 第 29 章 为集群事件触发脚本
- 29.1. 安装并配置示例警报代理
- 29.1.1. 先决条件
- 29.1.2. 配置一个使用 alert_file.sh 警报代理的警报
- 29.1.3. 配置一个使用 alert_snmp.sh 警报代理的警报
- 29.1.4. 配置一个使用 alert_smtp.sh 警报代理的警报
- 29.2. 创建集群警报
- 29.3. 显示、修改和删除集群警报
- 29.4. 配置集群警报接收者
- 29.5. 配置集群警报 meta 选项
- 29.6. 以 pcs 命令显示配置的集群警报
- 29.7. 创建和修改集群警报
- 29.8. 编写集群警报代理
- 29.1. 安装并配置示例警报代理
- 第 30 章 多站点 Pacemaker 集群
- 30.1. Booth 集群票据管理器概述
- 30.2. 使用 Pacemaker 配置多站点集群
- 30.3. 删除 Booth 票据
- 第 31 章 将非 corosync 节点整成到集群中:pacemaker_remote 服务
- 31.1. pacemaker_remote 节点的主机和客户机身份验证
- 31.2. 配置 KVM 客户机节点
- 31.3. 配置 Pacemaker 远程节点
- 31.4. 远程节点配置概述
- 31.5. 更改默认端口位置
- 31.6. 使用 pacemaker_remote 节点升级系统
- 31.7. 验证 Pacemaker 远程节点不再必要隔离
- 第 32 章 执行集群维护
- 32.1. 把节点设置为待机模式
- 32.2. 手动移动集群资源
- 32.3. 禁用、启用和禁止集群资源
- 32.3.1. 禁用集群资源
- 32.3.2. 启用集群资源
- 32.3.3. 防止资源在特定节点上运行
- 32.3.4. 强制资源在当前节点上启动
- 32.4. 将资源设置为非受管模式
- 32.5. 将集群设置为维护模式
- 32.6. 更新 RHEL 高可用性集群
- 32.7. 升级远程节点和客户机节点
- 32.8. 在 RHEL 集群中迁移虚拟机
- 32.9. 通过 UUID 识别集群
- 32.10. 重命名集群
- 第 33 章 删除集群配置
- 第 34 章 配置灾难恢复集群
- 34.1. 灾难恢复集群的注意事项
- 34.2. 显示恢复集群的状态
- 附录 A. 解释资源代理 OCF 返回码
