17.4. 替换 Controller 节点
要替换 Controller 节点,请确定您要替换的节点的索引。
- 如果节点是虚拟节点,请确定包含故障磁盘的节点,然后从备份中恢复磁盘。确保用于故障服务器上 PXE 引导的 NIC 的 MAC 地址在磁盘替换后保持不变。
- 如果该节点是裸机节点,请替换磁盘,利用您的 overcloud 配置准备新磁盘,然后对新硬件上执行节点内省。
完成下方的示例步骤,将 overcloud-controller-1 节点替换为 overcloud-controller-3 节点。overcloud-controller-3 节点的 ID 是 75b25e9a-948d-424a-9b3b-f0ef70a6eacf。
要将节点替换为现有的 ironic 节点,请在传出节点上启用维护模式,以便 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
步骤
source
stackrc文件:$ source ~/stackrc确定
overcloud-controller-1节点的索引:$ INSTANCE=$(openstack server list --name overcloud-controller-1 -f value -c ID)确定与实例关联的裸机节点:
$ NODE=$(openstack baremetal node list -f csv --quote minimal | grep $INSTANCE | cut -f1 -d,)把节点设为维护模式:
$ openstack baremetal node maintenance set $NODE如果 Controller 节点是虚拟节点,请在 Controller 主机上运行以下命令,从备份中替换虚拟磁盘:
$ cp <VIRTUAL_DISK_BACKUP> /var/lib/libvirt/images/<VIRTUAL_DISK>将
<VIRTUAL_DISK_BACKUP>替换为故障虚拟磁盘备份的路径,然后将<VIRTUAL_DISK>替换为要替换的虚拟磁盘的名称。如果您没有传出节点的备份,必须使用新的虚拟化节点。
如果 Controller 节点是裸机节点,请完成下列步骤,将磁盘替换为新的裸机磁盘:
- 更换物理硬盘或固态硬盘驱动器。
- 使用与故障节点相同的配置来准备节点。
列出未关联的节点,并确定新节点的 ID:
$ openstack baremetal node list --unassociated使用
control配置集标记新节点:(undercloud) $ openstack baremetal node set --property capabilities='profile:control,boot_option:local' 75b25e9a-948d-424a-9b3b-f0ef70a6eacf