Red Hat Training

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

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

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

重要

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

前提条件

  • Placement サービスのパッケージ python2-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 ~/stackrc
  4. オーバークラウドスタックの UUID を特定します。

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

    (undercloud)$ openstack server list
  6. (オプション) --update-plan-only オプションを指定して overcloud deploy コマンドを実行し、テンプレートからの最新の設定でプランを更新します。これにより、コンピュートノードを削除する前に、オーバークラウドの設定が最新の状態になります。

    $ 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 <overcloud> \
     <node_1> ... [node_n]
    • <overcloud> を、オーバークラウドスタックの名前または UUID に置き換えてください。
    • <node1> (およびオプションとして [node_n] までのすべてのノード) を、削除するコンピュートノードの Compute サービスのホスト名または 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. ノード数が含まれる環境ファイルの 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