7.5. 替换 Compute 节点
当一个 Compute 节点出现问题时,您可以使用一个正常的节点替换它。使用以下步骤替换 Compute 节点:
- 迁移 Compute 节点的工作负载
- 关闭当前的 Compute 节点
- 把 Compute 节点从 Overcloud 中删除
- 使用一个新的 Compute 节点来扩展 Overcloud
这个过程确保了替换节点的操作不会影响到任何虚拟机的可用性。
过程 7.1. 设置密钥
所有 Compute 节点都需要一个共享的 SSH 密钥,从而使每个主机的
nova
用户都可以在迁移的过程中访问这些节点。使用以下步骤在每个 Compute 节点上设置一个 SSH 密钥对。
- 创建一个 SSH 密钥:
$ ssh-keygen -t rsa -f nova_id_rsa
- 把 SSH 密钥复制到每个 Compute 节点上的
nova
用户的家目录中。 - 以
nova
用户登录到每个 Compute 节点,运行以下命令来设置密钥:NOVA_SSH=/var/lib/nova/.ssh mkdir ${NOVA_SSH} cp nova_id_rsa ${NOVA_SSH}/id_rsa chmod 600 ${NOVA_SSH}/id_rsa cp nova_id_rsa.pub ${NOVA_SSH}/id_rsa.pub cp nova_id_rsa.pub ${NOVA_SSH}/authorized_keys chown -R nova.nova ${NOVA_SSH} # enable login for nova user on compute hosts: usermod -s /bin/bash nova # add ssh keys of overcloud nodes into known hosts: ssh-keyscan -t rsa `os-apply-config --key hosts --type raw --key-default '' | awk '{print $1}'` >>/etc/ssh/ssh_known_hosts
过程 7.2. 从 Compute 节点上迁移虚拟机
- 从 director 上 source
overcloudrc
,并获得当前的 Nova 服务列表:$ source ~stack/overcloudrc $ nova service-list
- 在要迁移的节点上禁用
nova-compute
服务。$ nova service-disable [service-id] nova-compute
这会防止新的虚拟机在它上面运行。 - 开始把虚拟机从节点上迁移的过程:
# nova host-servers-migrate [service-id]
- 使用以下命令可以查看迁移过程的当前状态:
# nova migration-list
- 当每个虚拟机的迁移过程完成后,它在 Nova 中的状态将变为
VERIFY_RESIZE
。您将可以确认迁移已成功完成,或把它恢复到原来的状态。要确认进行迁移,使用以下命令:# nova resize-confirm [server-name]
- 最后,当所有迁移都已完成并被确认后,在 Nova 的 Compute 节点上删除(禁用)运行的服务:
# nova service-delete [service-id]
现在,您可以重启或关闭节点(使用 Ironic API);或把它从 overcloud 环境中删除。
过程 7.3. 从 Overcloud 中删除 Compute 节点
- 根据 第 7.4 节 “从 Overcloud 中删除节点” 中的介绍进行操作。
过程 7.4. 使用一个新的 Compute 节点来扩展 Overcloud
- 根据 第 7.3 节 “扩展 Overcloud” 中的介绍进行操作。