16.3. Compute ノードの削除または交換
状況によっては、オーバークラウドから Compute ノードを削除する必要があります。たとえば、問題のある Compute ノードを置き換える必要がある場合などです。Compute ノードを削除すると、スケールアウト操作中にインデックスが再利用されないように、ノードのインデックスがデフォルトで拒否リストに追加されます。
オーバークラウドデプロイメントからノードを削除した後、削除された Compute ノードを置き換えることができます。
前提条件
削除するノードでは、ノードが新しいインスタンスをスケジュールできないようにするために、Compute サービスが無効になっています。Compute サービスが無効になっていることを確認するには、次のコマンドを使用します。
(overcloud)$ openstack compute service listCompute サービスが無効になっていない場合は、無効にします。
(overcloud)$ openstack compute service set <hostname> nova-compute --disableヒント--disable-reasonオプションを使用して、サービスを無効にする理由についての簡単な説明を追加します。これは、Compute サービスを再デプロイする場合に役立ちます。- Compute ノードのワークロードは、他の Compute ノードに移行されました。詳しくは、Migrating virtual machine instances between Compute nodes を参照してください。
インスタンス HA が有効になっている場合は、次のいずれかのオプションを選択します。
-
Compute ノードにアクセスできる場合は、
rootユーザーとして Compute ノードにログインし、shutdown -h nowコマンドを使用してクリーンシャットダウンを実行します。 Compute ノードにアクセスできない場合は、
rootユーザーとして Controller ノードにログインし、Compute ノードの STONITH デバイスを無効にして、ベアメタルノードをシャットダウンします。[root@controller-0 ~]# pcs stonith disable <stonith_resource_name> [stack@undercloud ~]$ source stackrc [stack@undercloud ~]$ openstack baremetal node power off <UUID>
-
Compute ノードにアクセスできる場合は、
手順
source コマンドでアンダークラウド設定を読み込みます。
(overcloud)$ source ~/stackrcオーバークラウドスタックの UUID を特定します。
(undercloud)$ openstack stack list削除する Compute ノードの UUID またはホスト名を特定します。
(undercloud)$ openstack server list(オプション)
--update-plan-onlyオプションを指定してovercloud deployコマンドを実行し、テンプレートからの最新の設定でプランを更新します。これにより、Compute ノードを削除する前に、オーバークラウドの設定が最新の状態になります。$ 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 |...]注記オーバークラウドノードの拒否リストを更新した場合は、この手順が必要です。オーバークラウドノードを拒否リストに追加する方法の詳細については、Blacklisting nodes を参照してください。
スタックから Compute ノードを削除します。
$ openstack overcloud node delete --stack <overcloud> \ <node_1> ... [node_n]-
<overcloud>は、オーバークラウドスタックの名前または UUID に置き換えてください。 <node_1>(およびオプションとして[node_n]までのすべてのノード) を、削除する Compute ノードの Compute サービスのホスト名または 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.このメッセージは無視しても問題ありません。
-
- Compute ノードが削除されるのを待ちます。
削除した各ノードのネットワークエージェントを削除します。
(overcloud)$ for AGENT in $(openstack network agent list \ --host <scaled_down_node> -c ID -f value) ; \ do openstack network agent delete $AGENT ; doneノードの削除が完了したら、オーバークラウドスタックのステータスを確認します。
(undercloud)$ openstack stack listExpand 表16.2 結果 Status 説明 UPDATE_COMPLETE削除操作は正常に完了しました。
UPDATE_FAILED削除操作が失敗しました。
削除操作が失敗する一般的な理由は、削除するノードの IPMI インターフェイスに到達できないことです。
削除操作が失敗した場合は、Compute ノードを手動で削除する必要があります。詳細は、Removing a Compute node manually from the overcloud を参照してください。
インスタンス HA が有効な場合は、以下の操作を実行します。
ノードの 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ノードの STONITH デバイスを削除します。
$ sudo pcs stonith delete <device-name>
オーバークラウドで削除された Compute ノードを置き換えない場合は、ノード数を含む環境ファイルの
ComputeCountパラメーターを減らします。このファイルは、通常node-info.yamlという名前です。たとえば、ノードを 1 つ削除する場合、ノード数を 4 から 3 に減らします。parameter_defaults: ... ComputeCount: 3ノード数を減らすと、
openstack overcloud deployを実行しても director は新規ノードをプロビジョニングしません。オーバークラウドデプロイメントで削除された Compute ノードを置き換える場合は、削除された Compute ノードの交換 を参照してください。
16.3.1. Compute ノードを手動で削除する リンクのコピーリンクがクリップボードにコピーされました!
openstack overcloud node delete コマンドが到達不能なノードのために失敗した場合は、オーバークラウドからの Compute ノードの削除を手動で完了する必要があります。
前提条件
-
Compute ノードの削除または置換 手順を実行すると、ステータス
UPDATE_FAILEDが返されました。
手順
オーバークラウドスタックの UUID を特定します。
(undercloud)$ openstack stack list手動で削除するノードの UUID を特定します。
(undercloud)$ openstack baremetal node list削除するノードをメンテナンスモードに移動します。
(undercloud)$ openstack baremetal node maintenance set <node_uuid>注記Compute サービスがその状態をベアメタルサービスと同期するのを待ちます。これには最大 4 分かかる場合があります。
source コマンドでオーバークラウド設定を読み込みます。
(undercloud)$ source ~/overcloudrc手動で削除する Compute ノード上のすべての podman コンテナーを停止します。
$ sudo systemctl stop tripleo_*削除したノードのネットワークエージェントを削除します。
(overcloud)$ for AGENT in $(openstack network agent list \ --host <scaled_down_node> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done-
<scaled_down_node>を、削除するノードの名前に置き換えます。
-
ノードが新しいインスタンスをスケジュールできないようにするために、オーバークラウド上の削除されたノードで Compute サービスが無効化されていることを確認します。
(overcloud)$ openstack compute service listCompute サービスが無効化されていない場合は、無効化します。
(overcloud)$ openstack compute service set <hostname> nova-compute --disableヒント--disable-reasonオプションを使用して、サービスを無効にする理由についての簡単な説明を追加します。これは、Compute サービスを再デプロイする場合に役立ちます。ノードから Compute サービスを削除します。
(overcloud)$ openstack compute service delete <service_id>削除した Compute サービスを、Placement サービスのリソースプロバイダーから除外します。
(overcloud)$ openstack resource provider list (overcloud)$ openstack resource provider delete <uuid>source コマンドでアンダークラウド設定を読み込みます。
(overcloud)$ source ~/stackrcスタックから Compute ノードを削除します。
(undercloud)$ openstack overcloud node delete --stack <overcloud> <node>-
<overcloud>は、オーバークラウドスタックの名前または UUID に置き換えてください。 <node>を、削除する Compute ノードの Compute サービスホスト名または 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.このメッセージは無視しても問題ありません。
-
- オーバークラウドノードが削除されるのを待ちます。
ノードの削除が完了したら、オーバークラウドスタックのステータスを確認します。
(undercloud)$ openstack stack listExpand 表16.3 結果 Status 説明 UPDATE_COMPLETE削除操作は正常に完了しました。
UPDATE_FAILED削除操作が失敗しました。
メンテナンスモード中にオーバークラウドノードの削除に失敗した場合は、問題はハードウェアにある可能性があります。
インスタンス HA が有効な場合は、以下の操作を実行します。
ノードの 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ノードの STONITH デバイスを削除します。
$ sudo pcs stonith delete <device-name>
オーバークラウドで削除された Compute ノードを置き換えない場合は、ノード数を含む環境ファイルの
ComputeCountパラメーターを減らします。このファイルは、通常node-info.yamlという名前です。たとえば、ノードを 1 つ削除する場合、ノード数を 4 から 3 に減らします。parameter_defaults: ... ComputeCount: 3 ...ノード数を減らすと、
openstack overcloud deployを実行しても director は新規ノードをプロビジョニングしません。オーバークラウドデプロイメントで削除された Compute ノードを置き換える場合は、削除された Compute ノードの交換 を参照してください。
16.3.2. 削除された Compute ノードの交換 リンクのコピーリンクがクリップボードにコピーされました!
オーバークラウドデプロイメントで削除された Compute ノードを置き換えるには、新しい Compute ノードを登録して検査するか、削除した Compute ノードを再度追加します。また、ノードをプロビジョニングするようにオーバークラウドを設定する必要があります。
手順
オプション: 削除された Compute ノードのインデックスを再利用するには、Compute ノードが削除されたときに拒否リストを置き換えるロールの
RemovalPoliciesModeパラメーターとRemovalPoliciesパラメーターを設定します。parameter_defaults: <RoleName>RemovalPoliciesMode: update <RoleName>RemovalPolicies: [{'resource_list': []}]削除された Compute ノードを置き換えます。
- 新しい Compute ノードを追加するには、新しいノードを登録、検査、およびタグ付けして、プロビジョニングの準備をします。詳細については、Configuring a basic overcloud を参照してください。
手動で削除した Compute ノードを再度追加するには、ノードをメンテナンスモードから削除します。
(undercloud)$ openstack baremetal node maintenance unset <node_uuid>
-
既存のオーバークラウドのデプロイに使用した
openstack overcloud deployコマンドを再実行します。 - デプロイメントプロセスが完了するまで待ちます。
ディレクターが新しい Compute ノードを正常に登録したことを確認します。
(undercloud)$ openstack baremetal node list手順 1 を実行して、
update用のロールのRemovalPoliciesModeを設定した場合は、ロールのRemovalPoliciesModeをデフォルト値のappendにリセットして、Compute ノードが削除されたときに Compute ノードインデックスを現在の拒否リストに追加する必要があります。parameter_defaults: <RoleName>RemovalPoliciesMode: append-
既存のオーバークラウドのデプロイに使用した
openstack overcloud deployコマンドを再実行します。