7.5. 替换 Compute 节点

当一个 Compute 节点出现问题时,您可以使用一个正常的节点替换它。使用以下步骤替换 Compute 节点:
  • 迁移 Compute 节点的工作负载
  • 关闭当前的 Compute 节点
  • 把 Compute 节点从 Overcloud 中删除
  • 使用一个新的 Compute 节点来扩展 Overcloud
这个过程确保了替换节点的操作不会影响到任何虚拟机的可用性。

过程 7.1. 设置密钥

所有 Compute 节点都需要一个共享的 SSH 密钥,从而使每个主机的 nova 用户都可以在迁移的过程中访问这些节点。使用以下步骤在每个 Compute 节点上设置一个 SSH 密钥对。
  1. 创建一个 SSH 密钥:
    $ ssh-keygen -t rsa -f nova_id_rsa
    
  2. 把 SSH 密钥复制到每个 Compute 节点上的 nova 用户的家目录中。
  3. 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 节点上迁移虚拟机

  1. 从 director 上 source overcloudrc,并获得当前的 Nova 服务列表:
    $ source ~stack/overcloudrc
    $ nova service-list
    
  2. 在要迁移的节点上禁用 nova-compute 服务。
    $ nova service-disable [service-id] nova-compute
    
    这会防止新的虚拟机在它上面运行。
  3. 开始把虚拟机从节点上迁移的过程:
    # nova host-servers-migrate [service-id]
    
  4. 使用以下命令可以查看迁移过程的当前状态:
    # nova migration-list
    
  5. 当每个虚拟机的迁移过程完成后,它在 Nova 中的状态将变为 VERIFY_RESIZE。您将可以确认迁移已成功完成,或把它恢复到原来的状态。要确认进行迁移,使用以下命令:
    # nova resize-confirm [server-name]
    
  6. 最后,当所有迁移都已完成并被确认后,在 Nova 的 Compute 节点上删除(禁用)运行的服务:
    # nova service-delete [service-id]
    
    现在,您可以重启或关闭节点(使用 Ironic API);或把它从 overcloud 环境中删除。

过程 7.3. 从 Overcloud 中删除 Compute 节点

过程 7.4. 使用一个新的 Compute 节点来扩展 Overcloud