15.3. コンピュートノードの削除

オーバークラウドからコンピュートノードを削除する必要がある状況が出てくる可能性があります。たとえば、問題のあるコンピュートノードを置き換える必要がある場合などです。

重要

オーバークラウドからコンピュートノードを削除する前に、負荷をそのノードから別のコンピュートノードに移行してください。詳しくは、「 コンピュートノード間の仮想マシンインスタンスの移行 」を参照してください。

前提条件

  • Placement サービスパッケージ python3-osc-placement がアンダークラウドにインストールされていること。

手順

  1. source コマンドでオーバークラウド設定を読み込みます。

    $ source ~/overcloudrc
  2. オーバークラウド上で削除するノードの Compute サービスを無効にし、ノードで新規インスタンスがスケジューリングされないようにします。

    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service set <hostname> nova-compute --disable
    ヒント

    --disable-reason オプションを使用して、サービスを無効にする理由についての簡単な説明を追加します。これは、Compute サービスを後で再デプロイする場合に役立ちます。

  3. source コマンドでアンダークラウド設定を読み込みます。

    (overcloud) $ source ~/stackrc
  4. オーバークラウドスタックの UUID を特定します。

    (undercloud) $ openstack stack list
  5. 削除するノードの UUID またはホスト名を特定します。

    (undercloud) $ openstack server list
  6. デプロイメントに該当するすべての環境ファイルを含め、--update-plan-only オプションを指定してオーバークラウドを再デプロイします。

    $ openstack overcloud deploy --update-plan-only \
      --templates  \
      -e /usr/share/openstack-tripleo-heat-templates/environments/network-isolation.yaml \
      -e /home/stack/templates/network-environment.yaml \
      -e /home/stack/templates/storage-environment.yaml \
      -e /home/stack/templates/rhel-registration/environment-rhel-registration.yaml \
      [-e |...]
  7. スタックからノードを削除します。

    $ openstack overcloud node delete --stack [STACK_UUID] --templates -e [ENVIRONMENT_FILE] [NODE1_UUID] [NODE2_UUID] [NODE3_UUID]

    [node] をノードの UUID またはホスト名に置き換えてください。

    重要

    UUID とホスト名を混在させて使用しないでください。UUID だけ、またはホスト名だけを使用します。

  8. openstack overcloud node delete コマンドが完全に終了したことを確認します。

    (undercloud) $ openstack stack list

    削除の操作が完了すると、オーバークラウド スタックのステータスは UPDATE_COMPLETE と表示されます。

    重要

    同じホスト名を使用して Compute サービスを再デプロイする場合は、再デプロイするノードに既存のサービスレコードを使用する必要があります。その場合は、この手順の残りのステップを省略して、「同じホスト名を使用した Compute サービスの再デプロイ」の手順に進んでください。

  9. ノードから Compute サービスを削除します。

    (undercloud) $ source ~/overcloudrc
    (overcloud) $ openstack compute service list
    (overcloud) $ openstack compute service delete <service-id>
  10. ノードから Open vSwitch エージェントを削除します。

    (overcloud) $ openstack network agent list
    (overcloud) $ openstack network agent delete <openvswitch-agent-id>
  11. 削除した Compute サービスを、Placement サービスのリソースプロバイダーから除外します。

    (overcloud) $ openstack resource provider list
    (overcloud) $ openstack resource provider delete <uuid>
  12. ノード数が含まれる環境ファイルの ComputeCount パラメーターを減らします。このファイルは、通常 node-info.yaml という名前です。たとえば、ノードを 2 つ削除する場合、ノード数を 5 から 3 に減らします。

    parameter_defaults:
      ...
      ComputeCount: 3
      ...

    ノード数を減らすと、openstack overcloud deploy を実行しても director は新規ノードをプロビジョニングしません。

オーバークラウドからノードを削除して、別の目的でそのノードを再度プロビジョニングすることができます。

同じホスト名を使用した Compute サービスの再デプロイ

無効にした Compute サービスを再デプロイするには、同じホスト名を持つコンピュートノードを再デプロイした後に、Compute サービスを再度有効にします。

手順

  1. 削除した Compute サービスを、Placement サービスのリソースプロバイダーから除外します。

    (undercloud) $ source ~/overcloudrc
    (overcloud) $ openstack resource provider list
    (overcloud) $ openstack resource provider delete <uuid>
  2. Compute サービスのステータスを確認します。

    (overcloud) $ openstack compute service list --long
    ...
    | ID | Binary       | Host                  | Zone  | Status   | State | Updated At                 | Disabled Reason      |
    | 80 | nova-compute | compute-1.localdomain | nova  | disabled | up    | 2018-07-13T14:35:04.000000 | gets re-provisioned |
    ...
  3. 再デプロイしたコンピュートノードのサービスの状態が up に変わったら、サービスを再度有効にします。

    (overcloud) $ openstack compute service set compute-1.localdomain nova-compute --enable