5.2. 在 overcloud 上部署和测试隔离
隔离配置过程包括以下阶段:
- 查看 STONITH 和 Pacemaker 的状态。
-
生成
fencing.yaml文件。 - 重新部署 overcloud 并测试配置。
先决条件
确保您可以访问您在 director 中注册 Controller 节点时创建的 nodes.json 文件。此文件是您在部署过程中生成的 fence.yaml 文件所需的输入。
检查 STONITH 和 Pacemaker 的状态
- 以 heat-admin 用户身份登录每个 Controller 节点。
验证集群是否正在运行:
$ sudo pcs status输出示例:
Cluster name: openstackHA Last updated: Wed Jun 24 12:40:27 2015 Last change: Wed Jun 24 11:36:18 2015 Stack: corosync Current DC: lb-c1a2 (2) - partition with quorum Version: 1.1.12-a14efad 3 Nodes configured 141 Resources configured验证 STONITH 是否已禁用:
$ sudo pcs property show输出示例:
Cluster Properties: cluster-infrastructure: corosync cluster-name: openstackHA dc-version: 1.1.12-a14efad have-watchdog: false stonith-enabled: false
生成 fence.yaml 环境文件
选择以下选项之一:
如果使用 IPMI 或 Red Hat Virtualization(RHV)隔离代理,请运行以下命令来生成
fence.yaml环境文件:$ openstack overcloud generate fencing --output fencing.yaml nodes.json注意-
此命令将
ilo和drac电源管理详细信息转换为 IPMI 等效值。 -
确保
nodes.json文件包含节点上其中一个网络接口的 MAC 地址。有关更多信息,请参阅 Overcloud 的注册节点。 -
如果使用 RHV,请确保使用具有权限的角色来创建和启动虚拟机,如
UserVMManager。
-
此命令将
如果您使用不同的隔离代理,如 Storage Block Device(SBD)、
fence_kdump或 Redfish,请手动生成fence.yaml文件。注意如果使用预置备节点,还必须手动创建
fence.yaml文件。
有关支持的隔离代理的详情,请参考 第 5.1 节 “支持的隔离代理”。
重新部署 overcloud 并测试配置
运行
overcloud 部署命令并包含您生成的fence.yaml文件,以便在 Controller 节点上配置隔离:openstack overcloud deploy --templates \ -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \ -e ~/templates/network-environment.yaml \ -e ~/templates/storage-environment.yaml --control-scale 3 --compute-scale 3 --ceph-storage-scale 3 --control-flavor control --compute-flavor Compute --ceph-storage-flavor ceph-storage --ntp-server pool.ntp.org --neutron-network-type vxlan --neutron-tunnel-types vxlan \ -e fencing.yaml登录到 overcloud,并验证是否为每个 Controller 节点配置了隔离:
检查 Pacemaker 是否已配置为资源管理器:
$ source stackrc $ nova list | grep controller $ ssh heat-admin@<controller-x_ip> $ sudo pcs status |grep fence stonith-overcloud-controller-x (stonith:fence_ipmilan): Started overcloud-controller-y在本例中,Pacemaker 被配置为为
fence.yaml文件中指定的每个 Controller 节点使用 STONITH 资源。注意您不能在其控制的同一节点中配置
fence-resource进程。运行
pcs stonith show命令检查隔离资源属性:$ sudo pcs stonith show <stonith-resource-controller-x>STONITH 属性值必须与
fence.yaml 文件中的值匹配。
验证 Controller 节点上的隔离
要测试隔离是否正常工作,您可以通过关闭 Controller 节点上的所有端口并重启服务器来触发隔离。
登录到 Controller 节点:
$ source stackrc $ nova list |grep controller $ ssh heat-admin@<controller-x_ip>切换到 root 用户并在每个端口中运行
iptables命令:$ sudo -i iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT && iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT && iptables -A INPUT -p tcp -m state --state NEW -m tcp --dport 5016 -j ACCEPT && iptables -A INPUT -p udp -m state --state NEW -m udp --dport 5016 -j ACCEPT && iptables -A INPUT ! -i lo -j REJECT --reject-with icmp-host-prohibited && iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT && iptables -A OUTPUT -p tcp --sport 5016 -j ACCEPT && iptables -A OUTPUT -p udp --sport 5016 -j ACCEPT && iptables -A OUTPUT ! -o lo -j REJECT --reject-with icmp-host-prohibited重要此步骤丢弃到 Controller 节点的所有连接,这会导致服务器重启。
在不同的 Controller 节点中找到 Pacemaker 日志文件的隔离事件:
$ ssh heat-admin@<controller-x_ip> $ less /var/log/cluster/corosync.log (less): /fenc*如果 STONITH 服务对控制器执行隔离操作,则日志文件会显示隔离事件。
-
等待几分钟,然后通过运行
pcs status命令验证重新引导的 Controller 节点是否已在集群中再次运行。