第 7 章 高可用性资源故障排除
如果资源失败,您必须调查问题的原因和位置,修复失败的资源,并选择性地清理资源。根据您的部署,资源失败的原因有很多,您必须调查资源来确定如何解决这个问题。
例如,您可以检查资源限制,以确保资源不会互相中断,并且资源可以相互连接。您还可以检查一个比其他 Controller 节点更频繁隔离的 Controller 节点,以识别可能的通信问题。
根据资源问题的位置,您可以选择以下选项之一:
- Controller 节点问题
- 如果对 Controller 节点的健康检查失败,这可能表示 Controller 节点之间的通信问题。要调查,请登录 Controller 节点,再检查服务是否已正确启动。
- 单个资源问题
-
如果 Controller 上的大多数服务都正常运行,您可以运行
pcs status命令并检查输出是否有特定 Pacemaner 资源失败的信息,或者运行systemctl命令来调查非 Pacemaker 资源失败。
7.1. 查看高可用性集群中的资源限制 复制链接链接已复制到粘贴板!
在调查资源问题前,您可以查看服务的启动限制,包括与每个资源所在的位置相关的约束、资源启动的顺序,以及资源是否必须与另一个资源在一起。
流程
使用以下选项之一:
要查看所有资源限制,请登录到任何 Controller 节点并运行
pcs constraint show命令:$ sudo pcs constraint show以下示例显示了 Controller 节点上的
pcs constraint show命令截断的输出:Location Constraints: Resource: galera-bundle Constraint: location-galera-bundle (resource-discovery=exclusive) Rule: score=0 Expression: galera-role eq true [...] Resource: ip-192.168.24.15 Constraint: location-ip-192.168.24.15 (resource-discovery=exclusive) Rule: score=0 Expression: haproxy-role eq true [...] Resource: my-ipmilan-for-controller-0 Disabled on: overcloud-controller-0 (score:-INFINITY) Resource: my-ipmilan-for-controller-1 Disabled on: overcloud-controller-1 (score:-INFINITY) Resource: my-ipmilan-for-controller-2 Disabled on: overcloud-controller-2 (score:-INFINITY) Ordering Constraints: start ip-172.16.0.10 then start haproxy-bundle (kind:Optional) start ip-10.200.0.6 then start haproxy-bundle (kind:Optional) start ip-172.19.0.10 then start haproxy-bundle (kind:Optional) start ip-192.168.1.150 then start haproxy-bundle (kind:Optional) start ip-172.16.0.11 then start haproxy-bundle (kind:Optional) start ip-172.18.0.10 then start haproxy-bundle (kind:Optional) Colocation Constraints: ip-172.16.0.10 with haproxy-bundle (score:INFINITY) ip-172.18.0.10 with haproxy-bundle (score:INFINITY) ip-10.200.0.6 with haproxy-bundle (score:INFINITY) ip-172.19.0.10 with haproxy-bundle (score:INFINITY) ip-172.16.0.11 with haproxy-bundle (score:INFINITY) ip-192.168.1.150 with haproxy-bundle (score:INFINITY)这个输出显示以下主要约束类型:
- 位置约束
列出可为其分配资源的位置:
-
第一个约束定义了一个规则,将 galera-bundle 资源设置为在
galera-role属性设置为true的节点上运行。 -
第二个位置约束指定 IP 资源 ip-192.168.24.15 仅在将
haproxy-role属性设置为true的节点上运行。这意味着集群将 IP 地址与haproxy服务相关联,这需要使服务可被访问。 - 第三个位置约束显示 ipmilan 资源在每个 Controller 节点上被禁用。
-
第一个约束定义了一个规则,将 galera-bundle 资源设置为在
- 排序约束
列出资源可以启动的顺序。本例演示了一个约束,将虚拟 IP 地址资源 IPaddr2 设置为在 HAProxy 服务之前启动。
注意排序约束仅适用于 IP 地址资源和 HAproxy。systemd 管理所有其他资源,因为 Compute 等服务预期会中断相依服务,如 Galera。
- 共处约束
- 列出哪些资源必须放在一起。所有虚拟 IP 地址都链接到 haproxy-bundle 资源。
要查看特定资源的限制,请登录到任何 Controller 节点并运行
pcs property show命令:$ sudo pcs property show输出示例:
Cluster Properties: cluster-infrastructure: corosync cluster-name: tripleo_cluster dc-version: 2.0.1-4.el9-0eb7991564 have-watchdog: false redis_REPL_INFO: overcloud-controller-0 stonith-enabled: false Node Attributes: overcloud-controller-0: cinder-volume-role=true galera-role=true haproxy-role=true rabbitmq-role=true redis-role=true rmq-node-attr-last-known-rabbitmq=rabbit@overcloud-controller-0 overcloud-controller-1: cinder-volume-role=true galera-role=true haproxy-role=true rabbitmq-role=true redis-role=true rmq-node-attr-last-known-rabbitmq=rabbit@overcloud-controller-1 overcloud-controller-2: cinder-volume-role=true galera-role=true haproxy-role=true rabbitmq-role=true redis-role=true rmq-node-attr-last-known-rabbitmq=rabbit@overcloud-controller-2在这个输出中,您可以验证资源限制是否已正确设置。例如,所有 Controller 节点的
galera-role属性都是true,这意味着galera-bundle资源仅在这些节点上运行。