14.2. 在集群中配置 IP 故障切换
作为集群管理员,您可以在整个集群中或在其中的一部分节点(由标签选项器定义)中配置 IP 故障转移。您还可以在集群中配置多个 IP 故障转移部署,每个 IP 故障转移部署相互独立。
IP 故障转移部署确保故障转移 pod 在符合限制或使用的标签的每个节点上运行。
此 pod 运行 Keepalived,它可以监控端点,并在第一个节点无法访问服务或端点时使用 Virtual Router Redundancy Protocol(VRRP)从一个节点切换到另一个节点的虚拟 IP(VIP)。
对于生产环境,设置一个选择器(selector)
,用于选择至少两个节点,并设置与所选节点数量相等的副本
。
先决条件
-
以具有
cluster-admin
权限的用户身份登录集群。 - 已创建一个 pull secret。
仅限 Red Hat OpenStack Platform (RHOSP):
- 您在目标环境中安装了 RHOSP 客户端 (RHCOS 文档)。
-
您还下载了 RHOSP
openrc.sh
rc 文件 (RHCOS 文档)。
流程
创建 IP 故障转移服务帐户:
oc create sa ipfailover
$ oc create sa ipfailover
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
hostNetwork
更新安全性上下文约束(SCC):oc adm policy add-scc-to-user privileged -z ipfailover
$ oc adm policy add-scc-to-user privileged -z ipfailover
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm policy add-scc-to-user hostnetwork -z ipfailover
$ oc adm policy add-scc-to-user hostnetwork -z ipfailover
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 仅限 Red Hat OpenStack Platform (RHOSP):完成以下步骤,使在 RHOSP 端口上可以访问故障转移 VIP 地址。
使用 RHOSP CLI 在 RHOSP 集群的
allowed_address_pairs
参数中显示默认的 RHOSP API 和 VIP 地址:openstack port show <cluster_name> -c allowed_address_pairs
$ openstack port show <cluster_name> -c allowed_address_pairs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
*Field* *Value* allowed_address_pairs ip_address='192.168.0.5', mac_address='fa:16:3e:31:f9:cb' ip_address='192.168.0.7', mac_address='fa:16:3e:31:f9:cb'
*Field* *Value* allowed_address_pairs ip_address='192.168.0.5', mac_address='fa:16:3e:31:f9:cb' ip_address='192.168.0.7', mac_address='fa:16:3e:31:f9:cb'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为 IP 故障转移部署设置不同的 VIP 地址,并通过在 RHOSP CLI 中输入以下命令使 RHOSP 端口上的地址访问。不要将任何默认的 RHOSP API 和 VIP 地址设置为 IP 故障转移部署的故障转移 VIP 地址。
在 RHOSP 端口中添加
1.1.1.1
故障转移 IP 地址作为允许的地址的示例。openstack port set <cluster_name> --allowed-address ip-address=1.1.1.1,mac-address=fa:fa:16:3e:31:f9:cb
$ openstack port set <cluster_name> --allowed-address ip-address=1.1.1.1,mac-address=fa:fa:16:3e:31:f9:cb
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建部署 YAML 文件,为您的部署配置 IP 故障切换。请参阅后续步骤中的"IP 故障转移配置的部署 YAML 示例"。
在 IP 故障转移部署中指定以下规格,以便将故障转移 VIP 地址传递给
OPENSHIFT_HA_VIRTUAL_IPS
环境变量:将
1.1.1.1
VIP 地址添加到OPENSHIFT_HA_VIRTUAL_IPS
的示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow
创建部署 YAML 文件来配置 IP 故障切换。
注意对于 Red Hat OpenStack Platform (RHOSP),您不需要重新创建部署 YAML 文件。您已作为之前说明的一部分创建了此文件。
IP 故障转移配置的部署 YAML 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- IP 故障转移部署的名称。
- 2
- 要复制的 IP 地址范围列表。必须提供.例如,
1.2.3.4-6,1.2.3.9
。 - 3
- 为 VRRP 创建的组数量。如果没有设置,则会为通过
OPENSHIFT_HA_VIP_GROUPS
变量指定的每个虚拟 IP 范围创建一个组。 - 4
- IP 故障切换用于发送 VRRP 流量的接口名称。默认情况下使用
eth0
。 - 5
- IP 故障转移 pod 会尝试在每个 VIP 上打开到此端口的 TCP 连接。如果建立连接,则服务将被视为正在运行。如果此端口设为
0
,则测试会始终通过。默认值为80
。 - 6
- 用于设置虚拟路由器 ID 的偏移值。使用不同的偏移值可以在同一集群中存在多个 IP 故障转移配置。默认偏移值为
0
,允许的范围是0
到255
。 - 7
- 要创建的副本数。这必须与 IP 故障转移部署配置中的
spec.replicas
值匹配。默认值为2
。 - 8
iptables
链的名称,用于自动添加允许 VRRP 流量的iptables
规则。如果没有设置值,则不会添加iptables
规则。如果链不存在,则不会创建链,Keepalived 在单播模式下运行。默认为INPUT
。- 9
- 当状态发生变化时运行的脚本的 pod 文件系统的完整路径名称。
- 10
- 定期运行的脚本的 pod 文件系统中的完整路径名称,以验证应用是否正在运行。
- 11
- 处理新的具有更高优先级主机的策略。默认值为
preempt_delay 300
,这会导致,在有一个较低优先级的 master 提供 VIP 时,Keepalived 实例在 5 分钟后会接管 VIP。 - 12
- 检查脚本运行的期间(以秒为单位)。默认值为
2
。 - 13
- 在创建部署之前创建 pull secret,否则您将在创建部署时收到错误。