17.4. 替换 Controller 节点

要替换 Controller 节点,请确定您要替换的节点的索引。

  • 如果节点是虚拟节点,请确定包含故障磁盘的节点,然后从备份中恢复磁盘。确保用于故障服务器上 PXE 引导的 NIC 的 MAC 地址在磁盘替换后保持不变。
  • 如果该节点是裸机节点,请替换磁盘,利用您的 overcloud 配置准备新磁盘,然后对新硬件上执行节点内省。
  • 如果节点是带有隔离功能的高可用性集群的一部分,您可能需要单独恢复 Galera 节点。有关更多信息,请参阅文章 Galera 的工作原理以及如何在 Red Hat OpenStack Platform 中救援 Galera 集群

完成下方的示例步骤,将 overcloud-controller-1 节点替换为 overcloud-controller-3 节点。overcloud-controller-3 节点的 ID 是 75b25e9a-948d-424a-9b3b-f0ef70a6eacf

重要

要将节点替换为现有的裸机节点,请在传出节点上启用维护模式,以便 director 不会自动重新置备节点。

重要

替换 overcloud Controller 可能会在节点间造成 swift 环不一致。这可能导致 Object Storage 服务可用性下降。这是个已知的问题。如果发生了这种情况,请使用 SSH 登录到之前存在的 Controller 节点,部署更新的环,然后重启 Object Storage 容器:

(undercloud) [stack@undercloud-0 ~]$ source stackrc
(undercloud) [stack@undercloud-0 ~]$ nova list
...
| 3fab687e-99c2-4e66-805f-3106fb41d868 | controller-1 | ACTIVE | -          | Running     | ctlplane=192.168.24.17 |
| a87276ea-8682-4f27-9426-6b272955b486 | controller-2 | ACTIVE | -          | Running     | ctlplane=192.168.24.38 |
| a000b156-9adc-4d37-8169-c1af7800788b | controller-3 | ACTIVE | -          | Running     | ctlplane=192.168.24.35 |
...

(undercloud) [stack@undercloud-0 ~]$ for ip in 192.168.24.17 192.168.24.38 192.168.24.35; do ssh $ip 'sudo podman restart swift_copy_rings ; sudo podman restart $(sudo podman ps -a --format="{{.Names}}" --filter="name=swift_*")'; done

步骤

  1. source stackrc 文件:

    $ source ~/stackrc
  2. 确定 overcloud-controller-1 节点的索引:

    $ INSTANCE=$(openstack server list --name overcloud-controller-1 -f value -c ID)
  3. 确定与实例关联的裸机节点:

    $ NODE=$(openstack baremetal node list -f csv --quote minimal | grep $INSTANCE | cut -f1 -d,)
  4. 把节点设为维护模式:

    $ openstack baremetal node maintenance set $NODE
  5. 如果 Controller 节点是虚拟节点,请在 Controller 主机上运行以下命令,从备份中替换虚拟磁盘:

    $ cp <VIRTUAL_DISK_BACKUP> /var/lib/libvirt/images/<VIRTUAL_DISK>

    <VIRTUAL_DISK_BACKUP> 替换为故障虚拟磁盘备份的路径,然后将 <VIRTUAL_DISK> 替换为要替换的虚拟磁盘的名称。

    如果您没有传出节点的备份,必须使用新的虚拟化节点。

    如果 Controller 节点是裸机节点,请完成下列步骤,将磁盘替换为新的裸机磁盘:

    1. 更换物理硬盘或固态硬盘驱动器。
    2. 使用与故障节点相同的配置来准备节点。
  6. 列出未关联的节点,并确定新节点的 ID:

    $ openstack baremetal node list --unassociated
  7. 使用 control 配置集标记新节点:

    (undercloud) $ openstack baremetal node set --property capabilities='profile:control,boot_option:local' 75b25e9a-948d-424a-9b3b-f0ef70a6eacf