17.3. 为 Controller 节点替换准备集群
在替换旧节点前,您必须确保节点上没有运行 Pacemaker,然后将该节点从 Pacemaker 集群中删除。
步骤
要查看 Controller 节点的 IP 地址列表,请运行以下命令:
(undercloud) $ openstack server list -c Name -c Networks +------------------------+-----------------------+ | Name | Networks | +------------------------+-----------------------+ | overcloud-compute-0 | ctlplane=192.168.0.44 | | overcloud-controller-0 | ctlplane=192.168.0.47 | | overcloud-controller-1 | ctlplane=192.168.0.45 | | overcloud-controller-2 | ctlplane=192.168.0.46 | +------------------------+-----------------------+如果旧节点仍然可以连接,请登录其中一个剩余的节点,并停止旧节点上的 pacemaker。在本例中,请停止 overcloud-controller-1 上的 pacemaker:
(undercloud) $ ssh heat-admin@192.168.0.47 "sudo pcs status | grep -w Online | grep -w overcloud-controller-1" (undercloud) $ ssh heat-admin@192.168.0.47 "sudo pcs cluster stop overcloud-controller-1"注意如果旧节点在物理上不可用或者已经停止,则不必进行前面的操作,因为该节点上 pacemaker 已经停止。
在旧节点上停止 Pacemaker 后,从 pacemaker 集群中删除旧节点。以下示例命令登录到
overcloud-controller-0以删除overcloud-controller-1:(undercloud) $ ssh heat-admin@192.168.0.47 "sudo pcs cluster node remove overcloud-controller-1"如果要替换的节点无法访问(例如,由于硬件故障),请运行
pcs命令并使用附加--skip-offline和--force选项从集群中强制删除该节点:(undercloud) $ ssh heat-admin@192.168.0.47 "sudo pcs cluster node remove overcloud-controller-1 --skip-offline --force"从 pacemaker 集群中删除旧节点后,再从 pacemaker 中的已知主机列表中删除该节点:
(undercloud) $ ssh heat-admin@192.168.0.47 "sudo pcs host deauth overcloud-controller-1"无论节点是否可访问,都可运行该命令。
要确保新 Controller 节点在替换后使用正确的 STONITH 隔离设备,请输入以下命令从节点中删除旧设备:
(undercloud) $ ssh heat-admin@192.168.0.47 "sudo pcs stonith delete <stonith_resource_name>"-
将
<stonith_resource_name>替换为与旧节点对应的 STONITH 资源的名称。资源名称使用<resource_agent>-<host_mac>格式。您可以在fence.yaml文件的FencingConfig部分查找资源代理和主机 MAC 地址。
-
将
overcloud 数据库必须在替换过程中继续运行。为了确保 Pacemaker 不会在此过程中停止 Galera,可选择一个运行中的 Controller 节点,然后使用该 Controller 节点的 IP 地址在 undercloud 上运行以下命令:
(undercloud) $ ssh heat-admin@192.168.0.47 "sudo pcs resource unmanage galera-bundle"