7.8. オーバークラウドのコンピュートノードからの仮想マシンの移行

オーバークラウドのコンピュートノードでメンテナンスを行う場合があります。ダウンタイムを防ぐには、以下の手順に従ってそのコンピュートノード上の仮想マシンを同じオーバークラウド内の別のコンピュートノードに移行します。

手順7.1 コンピュートノードの SSH キーの設定

ホストの各 nova ユーザーが移行プロセス中にアクセスできるように、全コンピュートノードには共有 SSH キーが必要です。以下の手順を使用して、各コンピュートノードで SSH キーペアを設定します。
  1. SSH キーを生成します。
      $ ssh-keygen -t rsa -f nova_id_rsa
    
  2. 各コンピュートノード上の nova ユーザーのホームディレクトリーに、SSH キーをコピーします。
  3. nova ユーザーとして各コンピュートノードにログインして、以下のスクリプトを実行し、キーを設定します。
      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 コンピュートノードからの仮想マシンの移行

  1. director で、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