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

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

重要

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

前提条件

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

手順

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

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

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

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

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

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

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

    (undercloud) $ openstack server list
  6. オーバークラウドスタックからノードを削除し、それに応じてプランを更新します。

    (undercloud) $ openstack overcloud node delete --stack <stack_uuid> [node1_uuid] [node2_uuid] [node3_uuid]
  7. openstack overcloud node delete コマンドが完全に終了したことを確認します。

    (undercloud) $ openstack stack list

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

    重要

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

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

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

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

    (overcloud) $ openstack resource provider list
    (overcloud) $ openstack resource provider delete <uuid>
  11. ノード数が含まれる環境ファイルの 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