Menu Close
16.3. コンピュートノードの削除
オーバークラウドからコンピュートノードを削除する必要がある状況が出てくる可能性があります。たとえば、問題のあるコンピュートノードを置き換える必要がある場合などです。
オーバークラウドからコンピュートノードを削除する前に、負荷をそのノードから別のコンピュートノードに移行してください。詳しくは、「 コンピュートノード間の仮想マシンインスタンスの移行 」を参照してください。
前提条件
-
Placement サービスにクエリーを行うには、アンダークラウドに
python3-osc-placement
パッケージをインストールします。 インスタンス HA が有効な場合は、以下のオプションのいずれかを選択します。
-
コンピュートノードにアクセスできる場合は、
root
ユーザーとしてコンピュートノードにログインし、shutdown-h now コマンドでクリーンシャットダウンを実行します
。 コンピュートノードにアクセスできない場合には、
root
ユーザーとしてコントローラーノードにログインし、コンピュートノードの STONITH デバイスを無効にしてベアメタルノードをシャットダウンします。[root@controller-0 ~]# pcs stonith disable <stonith_resource_name> [stack@undercloud ~]$ source stackrc [stack@undercloud ~]$ openstack baremetal node power off <UUID>
-
コンピュートノードにアクセスできる場合は、
手順
source コマンドでオーバークラウド設定を読み込みます。
$ source ~/overcloudrc
オーバークラウド上で削除するノードの Compute サービスを無効にし、ノードで新規インスタンスがスケジューリングされないようにします。
(overcloud)$ openstack compute service list (overcloud)$ openstack compute service set <hostname> nova-compute --disable
ヒント--disable-reason
オプションを使用して、サービスを無効にする理由についての簡単な説明を追加します。これは、Compute サービスを後で再デプロイする場合に役立ちます。source コマンドでアンダークラウド設定を読み込みます。
(overcloud)$ source ~/stackrc
オーバークラウドスタックの UUID を特定します。
(undercloud)$ openstack stack list
削除するノードの UUID またはホスト名を特定します。
(undercloud)$ openstack server list
(オプション)
--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 |...]
注記オーバークラウドノードのブラックリストを更新した場合は、このステップが必要です。オーバークラウドノードのブラックリスト登録の詳細については、「ノードのブラックリスト登録」を参照してください。
スタックからコンピュートノードを削除します。
$ openstack overcloud node delete --stack <overcloud> \ <node_1> ... [node_n]
-
<overcloud>
を、オーバークラウドスタックの名前または UUID に置き換えてください。 <node1>
(およびオプションとして[node_n]
までのすべてのノード) を、削除するコンピュートノードの 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.
このメッセージは無視しても問題ありません。
-
openstack overcloud node delete
コマンドが完全に終了したことを確認します。(undercloud)$ openstack stack list
削除の操作が完了すると、
オーバークラウド
スタックのステータスはUPDATE_COMPLETE
と表示されます。削除するノードの IPMI インターフェースに到達できない場合には、
openstack overcloud node delete
コマンドが失敗し、スタックはUPDATE_FAILED
のステータスになります。ノードをメンテナンスモードに切り替え、openstack overcloud node delete
コマンドを再実行します。$ openstack baremetal node maintenance set <NODE_ID>
コンピュートの数を変更し、既存のオーバークラウドのデプロイに使用した
openstack overcloud deploy
コマンドを再度実行します。重要同じホスト名を使用して Compute サービスを再デプロイする場合は、再デプロイするノードに既存のサービスレコードを使用する必要があります。その場合は、この手順の残りのステップを省略して、「同じホスト名を使用した Compute サービスの再デプロイ」の手順に進んでください。
オーバークラウド環境のネットワークエージェントを確認します。
(overcloud)$ openstack network agent list
古いノードにエージェントが表示される場合には、そのエージェントを削除します。
(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>
を、削除するノードの名前に置き換えます。ノード数が含まれる環境ファイルの
ComputeCount
パラメーターを減らします。このファイルは、通常node-info.yaml
という名前です。たとえば、ノードを 2 つ削除する場合、ノード数を 5 から 3 に減らします。parameter_defaults: ... ComputeCount: 3 ...
ノード数を減らすと、
openstack overcloud deploy
を実行しても director は新規ノードをプロビジョニングしません。インスタンス 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 サービスの再デプロイ
無効にした Compute サービスを再デプロイするには、同じホスト名を持つコンピュートノードを再デプロイした後に、Compute サービスを再度有効にします。
手順
削除した Compute サービスを、Placement サービスのリソースプロバイダーから除外します。
(undercloud)$ source ~/overcloudrc (overcloud)$ openstack resource provider list (overcloud)$ openstack resource provider delete <uuid>
注記Placement サービスにクエリーを行うには、アンダークラウドに
python3-osc-placement
パッケージがインストールされている必要があります。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 | ...
再デプロイしたコンピュートノードのサービスの状態が
up
に変わったら、サービスを再度有効にします。(overcloud)$ openstack compute service set compute-1.localdomain nova-compute --enable