Red Hat Training

A Red Hat training course is available for Red Hat OpenStack Platform

8.9. 从一个 Overcloud Compute 节点中迁移虚拟机

在一些情况下,您可以在 Overcloud Compute 节点上执行维护操作。为了避免下线时间,按照以下方法把 Compute 节点上的虚拟机迁移到 Overcloud 中的另外一个 Compute 节点上。

过程 8.1. 设置 Compute 节点的 SSH 密钥

所有 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
    

过程 8.2. 从 Compute 节点上迁移虚拟机

  1. 在 director 上,source overcloudrc,并获得当前的 nova 服务列表:
    $ source ~/stack/overcloudrc
    $ nova service-list
    
  2. 在要迁移的节点上禁用 nova-compute 服务。
    $ nova service-disable [hostname] nova-compute
    
    这会防止新的虚拟机在它上面运行。
  3. 开始把虚拟机从节点上迁移实例的过程:
    $ nova host-servers-migrate [hostname]
    
  4. 使用以下命令可以查看迁移过程的当前状态:
    $ nova migration-list
    
  5. 当每个实例的迁移过程完成后,它在 nova 中的状态将变为 VERIFY_RESIZE。您将可以确认迁移已成功完成,或把它恢复到原来的状态。要确认进行迁移,使用以下命令:
    $ nova resize-confirm [server-name]
    
这会从一个主机上迁移所有实例。现在,您就可以在没有实例下线的情况下执行维护操作。要把主机重新返回到启用的状态,运行以下命令:
$ nova service-enable [hostname] nova-compute