検索

16.3. コンピュートノードの削除または置き換え

download PDF

状況によっては、オーバークラウドからコンピュートノードを削除する必要があります。たとえば、クラウドをスケールダウンするには、問題のあるコンピュートノードを置き換えるか、コンピュートノードのグループを削除する必要がある場合があります。コンピュートノードを削除すると、スケールアウト操作中にインデックスが再利用されないように、ノードのインデックスがデフォルトで拒否リストに追加されます。

オーバークラウドデプロイメントからノードを削除した後、削除されたコンピュートノードを置き換えることができます。

前提条件

  • 削除するノードでは、ノードが新しいインスタンスをスケジュールできないようにするために、コンピュートサービスが無効になっています。Compute サービスが無効になっていることを確認するには、以下のコマンドを使用して Compute サービスを一覧表示します。

    (overcloud)$ openstack compute service list

    Compute サービスが無効になっていない場合は、Compture サービスを無効にします。

    (overcloud)$ openstack compute service set <hostname> nova-compute --disable
  • <hostname> を、無効にするコンピュートノードのホスト名に置き換えます。

    ヒント

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

  • コンピュートノードのワークロードは、他のコンピュートノードに移行されました。詳しくは、Migrating virtual machine instances between Compute nodes を参照してください。
  • インスタンス HA が有効になっている場合は、次のいずれかのオプションを選択します。

    • Compute ノードにアクセスできる場合は、root ユーザーとして Compute ノードにログインし、shutdown -h now コマンドを使用してクリーンシャットダウンを実行します。
    • Compute ノードにアクセスできない場合は、root ユーザーとしてコントローラーノードにログインし、Compute ノードの STONITH デバイスを無効にして、ベアメタルノードをシャットダウンします。

      $ sudo pcs stonith disable <compute_UUID>
    • source コマンドで stackrc アンダークラウド認証情報ファイルを読み込み、ベアメタルノードの電源をオフにします。

      $ source ~/stackrc
      (undercloud)$ openstack baremetal node power off <compute_UUID>
  • <compute_UUID> を、削除するコンピュートノードの UUID に置き換えます。

手順

  1. stackrc アンダークラウド認証情報ファイルを入手します。

    $ source ~/stackrc
  2. オーバークラウドスタックの名前を特定します。

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

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

    (undercloud)$ openstack overcloud deploy --stack <overcloud> --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 [...]

    &lt ;overcloud&gt; をオーバークラウドスタックの名前に置き換えます。

    注記

    オーバークラウドノードのブロックリストを更新した場合は、オーバークラウドプランを更新する必要があります。オーバークラウドノードを拒否リストに追加する方法は、ノードのブロックリスト を参照してください。

  5. スタックからコンピュートノードを削除します。

    (undercloud)$ openstack overcloud node delete --stack <overcloud> \
     <node_1> ... [node_n]
    • &lt ;overcloud&gt; をオーバークラウドスタックの名前に置き換えます。
    • <node_1> (およびオプションとして [node_n] までのすべてのノード) を、削除するコンピュートノードのコンピュートサービスのホスト名または UUID に置き換えます。UUID とホスト名を混在させて使用しないでください。UUID だけ、またはホスト名だけを使用します。

      注記

      ノードの電源がすでにオフになっている場合、このコマンドは WARNING メッセージを返します。

      Ansible failed, check log at /var/lib/mistral/overcloud/ansible.log
      WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.

      電源がオフになっているノード(ノード)による問題を手動で対処するには、到達不可能なコンピュートノードの削除の完了の ステップ 1 から 8 を完了してから、この手順の次のステップに進みます。

  6. コンピュートノードが削除されるまで待ちます。
  7. 削除した各ノードのネットワークエージェントを削除します。

    (undercloud)$ source ~/overcloudrc
    (overcloud)$ for AGENT in $(openstack network agent list \
      --host <scaled_down_node> -c ID -f value) ; \
      do openstack network agent delete $AGENT ; done

    &lt ;scaled down node&gt; を、削除したノードのホスト名に置き換えます。

  8. コマンドの出力を確認します。RHOSP 16.1.7 以前のバグにより、エージェントを削除できなかったことを示すメッセージが表示される可能性があります。

    Bad agent request: OVN agents cannot be deleted.

    ボー エージェント要求メッセージが表示され ない場合は、次の手順に進みます。

    バッド エージェント要求メッセージが表示 された場合は、ネットワークエージェントの削除(バグの回避策)を参照し てください。回避策の手順が完了したら、ここに戻り、次のステップに進みます。

  9. ノードの削除が完了したら、オーバークラウドスタックのステータスを確認します。

    (overcloud)$ source ~/stackrc
    (undercloud)$ openstack stack list
    表16.2 結果
    ステータス説明

    UPDATE_COMPLETE

    コンピュートノードの削除が正常に完了しました。次のステップに進みます。

    UPDATE_FAILED

    コンピュートノードの削除に失敗しました。

    コンピュートノードの削除に失敗する一般的な理由は、削除するノードの IPMI インターフェイスに到達できないことです。

    削除に失敗した場合は、手動でプロセスを完了する必要があります。到達不能なコンピュートノードの削除が完了したら、コンピュートノード の削除を完了します。

  10. インスタンス HA が有効な場合は、以下の操作を実行します。

    1. コンピュートノードの Pacemaker リソースをクリーンアップします。

      $ sudo pcs resource delete <compute_UUID>
      $ sudo cibadmin -o nodes --delete --xml-text '<node id="<compute_UUID>"/>'
      $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<compute_UUID>"/>'
      $ sudo cibadmin -o status --delete --xml-text '<node_state id="<compute_UUID>"/>'
      $ sudo cibadmin -o status --delete-all --xml-text '<node id="<compute_UUID>"/>' --force
    2. ノードの STONITH デバイスを削除します。

      $ sudo pcs stonith delete <compute_UUID>
  11. オーバークラウドで削除されたコンピュートノードを置き換えない場合は、ノード数を含む環境ファイルの ComputeCount パラメーターを減らします。このファイルは、通常 node-info.yaml という名前です。たとえば、ノードを 1 つ削除する場合、ノード数を 4 から 3 に減らします。

    parameter_defaults:
      ...
      ComputeCount: 3

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

    オーバークラウドデプロイメントで削除されたコンピュートノードを置き換える場合は、Replacing a removed Compute node を参照してください。

16.3.1. 到達不能なコンピュートノードの削除の完了

openstack overcloud node delete コマンドが到達不能なノードのために失敗した場合は、オーバークラウドからのコンピュートノードの削除を手動で完了する必要があります。

前提条件

手順

  1. オーバークラウドスタックの UUID を特定します。

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

    (undercloud)$ openstack baremetal node list
  3. 削除するノードをメンテナンスモードに設定します。

    (undercloud)$ openstack baremetal node maintenance set <UUID>
    • <UUID> を、メンテナンスモードにするノードの UUID に置き換えます。
  4. コンピュートサービスがその状態をベアメタルサービスと同期するのを待ちます。これには最大 4 分かかる場合があります。
  5. source コマンドでオーバークラウド設定を読み込みます。

    (undercloud)$ source ~/overcloudrc
  6. ノードが新しいインスタンスをスケジュールできないように、オーバークラウド上の削除されたノードでコンピュートサービスが無効になっていることを確認します。

    (overcloud)$ openstack compute service list

    コンピュートサービスが無効になっていない場合は、無効にします。

    (overcloud)$ openstack compute service set <hostname> nova-compute --disable
    • <hostname> は、コンピュートノードのホスト名に置き換えます。

      ヒント

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

  7. 削除したコンピュートノードから Compute サービスを削除します。

    (overcloud)$ openstack compute service delete <service_id>
    • &lt ;service_id&gt; を、削除済みのノードで実行していた Compute サービスの ID に置き換えます。
  8. 削除した Compute サービスを、Placement サービスのリソースプロバイダーから除外します。

    (overcloud)$ openstack resource provider list
    (overcloud)$ openstack resource provider delete <UUID>
  9. source コマンドでアンダークラウド設定を読み込みます。

    (overcloud)$ source ~/stackrc
  10. スタックからコンピュートノードを削除します。

    (undercloud)$ openstack overcloud node delete --stack <overcloud> <node>
    • <overcloud> は、オーバークラウドスタックの名前または UUID に置き換えてください。
    • <node> を、削除するコンピュートノードのコンピュートサービスホスト名または UUID に置き換えます。

      注記

      ノードの電源がすでにオフになっている場合、このコマンドは WARNING メッセージを返します。

      Ansible failed, check log at `/var/lib/mistral/overcloud/ansible.log`
      WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.

      このメッセージは無視しても問題ありません。

  11. オーバークラウドノードが削除されるまで待ちます。
  12. source コマンドでオーバークラウド設定を読み込みます。

    (undercloud)$ source ~/overcloudrc
  13. 削除したノードのネットワークエージェントを削除します。

    (overcloud)$ for AGENT in $(openstack network agent list \
      --host <scaled_down_node> -c ID -f value) ; \
      do openstack network agent delete $AGENT ; done
    • &lt ;scaled_down_node&gt; を削除したノードの名前に置き換えます。
  14. コマンドの出力を確認します。RHOSP 16.1.7 以前のバグにより、エージェントを削除できなかったことを示すメッセージが表示される可能性があります。

    Bad agent request: OVN agents cannot be deleted.

    このメッセージが表示されない場合は、次の手順に進みます。

    このメッセージが表示される場合は、ネットワークエージェントの削除:バグの回避策 の 手順を実行してください。回避策の手順が完了したら、ここに戻り、次のステップに進みます。

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

    (overcloud)$ source ~/stackrc
  16. ノードの削除が完了したら、オーバークラウドスタックのステータスを確認します。

    (undercloud)$ openstack stack list
    表16.3 結果
    ステータス説明

    UPDATE_COMPLETE

    コンピュートノードの削除が正常に完了しました。次のステップに進みます。

    UPDATE_FAILED

    コンピュートノードの削除に失敗しました。

    ノードがメンテナンスモードの際にコンピュートノードの削除に失敗した場合には、問題がハードウェアにある可能性があります。ハードウェアを確認します。

  17. インスタンス HA が有効な場合は、以下の操作を実行します。

    1. ノードの Pacemaker リソースをクリーンアップします。

      $ sudo pcs resource delete <scaled_down_node>
      $ sudo cibadmin -o nodes --delete --xml-text '<node id="<scaled_down_node>"/>'
      $ sudo cibadmin -o fencing-topology --delete --xml-text '<fencing-level target="<scaled_down_node>"/>'
      $ sudo cibadmin -o status --delete --xml-text '<node_state id="<scaled_down_node>"/>'
      $ sudo cibadmin -o status --delete-all --xml-text '<node id="<scaled_down_node>"/>' --force
    2. ノードの STONITH デバイスを削除します。

      $ sudo pcs stonith delete <device-name>
  18. オーバークラウドで削除されたコンピュートノードを置き換えない場合は、ノード数を含む環境ファイルの ComputeCount パラメーターを減らします。このファイルは、通常 node-info.yaml という名前です。たとえば、ノードを 1 つ削除する場合、ノード数を 4 から 3 に減らします。

    parameter_defaults:
      ...
      ComputeCount: 3
      ...

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

    オーバークラウドデプロイメントで削除されたコンピュートノードを置き換える場合は、Replacing a removed Compute node を参照してください。

16.3.2. ネットワークエージェントの削除:バグの回避策

コンピュートノードを削除したら、関連付けられたネットワークエージェントを削除する必要があります。デプロイメントで RHOSP 16.1.7 以前の場合、バグにより、ネットワークエージェントを予想通りに削除できなくなります。BZ1788336-ovn-controllers are listed as agents but cannot be removed を参照してください。

このバグにより、指示に従ってエージェントを削除しようとすると、Networking サービスに以下のエラーメッセージが表示されます。

Bad agent request: OVN agents cannot be deleted.

そのエラーメッセージが表示された場合は、以下の手順を実行してエージェントを削除します。

前提条件

  • 以下のエラーメッセージで示されるように、コンピュートノードの削除に失敗した後にネットワークエージェントを削除しようとしました。

    Bad agent request: OVN agents cannot be deleted.

手順

  1. オーバークラウドノードを一覧表示します。

    (undercloud)$ openstack server list
  2. root 権限を持つユーザーとしてコントローラーノードにログインします。

    $ ssh heat-admin@controller-0.ctlplane
  3. ovn_controller コンテナーの ovn-sbctl コマンドへのアクセスを簡素化するコマンドエイリアスを設定していない場合は、コマンドエイリアスを設定します。詳細については、OVN トラブルシューティングコマンドのエイリアスの作成 を参照してください。
  4. ovn-controller.log ファイルから IP アドレスを取得します。

    $ sudo less /var/log/containers/openvswitch/ovn-controller.log

    ovn-controller.log が空の場合は、ovn-controller.log.1 を試してみてください。

  5. IP アドレスが正しいことを確認します。

    $ ovn-sbctl list encap |grep -a3 <IP_address_from_ovn-controller.log>

    <IP_address_from_ovn-controller.log> をコントローラーログファイルの IP アドレスに置き換えます。

  6. IP アドレスを含むシャーシを削除します。

    $ ovn-sbctl chassis-del <chassis-name>

    <chassis-id> を、前の手順の ovn-sbctl list encap コマンドの出力からの chassis_name 値に置き換えます。

  7. Chassis_Private テーブルをチェックして、シャーシが削除されたことを確認します。

    $ ovn-sbctl find Chassis_private chassis="[]"
  8. chasis が表示される場合は、以下のコマンドでそれぞれを削除します。

    $ ovn-sbctl destroy Chassis_Private <listed_name>

    &lt ;listed_name&gt; を、削除するシャーシの名前に置き換えます。

  9. 手順に戻り、コンピュートノードの削除を完了します。

16.3.3. 削除されたコンピュートノードの交換

オーバークラウドデプロイメントで削除されたコンピュートノードを置き換えるには、新しいコンピュートノードを登録して検査するか、削除したコンピュートノードを再度追加します。また、ノードをプロビジョニングするようにオーバークラウドを設定する必要があります。

手順

  1. オプション: 削除されたコンピュートノードのインデックスを再利用するには、コンピュートノードが削除されたときに拒否リストを置き換えるロールの RemovalPoliciesMode パラメーターと RemovalPolicies パラメーターを設定します。

    parameter_defaults:
      <RoleName>RemovalPoliciesMode: update
      <RoleName>RemovalPolicies: [{'resource_list': []}]
  2. 削除されたコンピュートノードを置き換えます。

    • 新しいコンピュートノードを追加するには、新しいノードを登録、検査、およびタグ付けして、プロビジョニングの準備をします。詳細については、Configuring a basic overcloud を参照してください。
    • 手動で削除したコンピュートノードを再度追加するには、ノードをメンテナンスモードから削除します。

      $ openstack baremetal node maintenance unset <node_uuid>
  3. 既存のオーバークラウドのデプロイに使用した openstack overcloud deploy コマンドを再実行します。
  4. デプロイメントプロセスが完了するまで待ちます。
  5. ディレクターが新しいコンピュートノードを正常に登録したことを確認します。

    $ openstack baremetal node list
  6. 手順 1 を実行して、update 用のロールの RemovalPoliciesMode を設定した場合は、ロールの RemovalPoliciesMode をデフォルト値の append にリセットして、コンピュートノードが削除されたときにコンピュートノードインデックスを現在の拒否リストに追加する必要があります。

    parameter_defaults:
      <RoleName>RemovalPoliciesMode: append
  7. 既存のオーバークラウドのデプロイに使用した openstack overcloud deploy コマンドを再実行します。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.