10.3. ベアメタルノードのスケールダウン
オーバークラウド内のベアメタルノードの数を縮小するには、ノード定義ファイルでスタックから削除するノードにタグを付け、オーバークラウドを再デプロイしてから、オーバークラウドからベアメタルノードを削除します。
前提条件
- アンダークラウドの正常なインストール。詳細は、Installing director on the undercloud を参照してください。
- オーバークラウドの正常なデプロイメント。詳細は、プリプロビジョニングされたノードを使用した基本的なオーバークラウドの設定 を参照してください。
Object Storage ノードを置き換える場合は、削除するノードから新しい置き換えノードにデータを複製します。新しいノードでレプリケーションのパスが完了するまで待機します。
/var/log/swift/swift.log
ファイルで複製パスの進捗を確認することができます。パスが完了すると、Object Storage サービス (swift) は、以下の例のようにエントリーをログに追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Mar 29 08:49:05 localhost object-server: Object replication complete. Mar 29 08:49:11 localhost container-server: Replication run OVER Mar 29 08:49:13 localhost account-server: Replication run OVER
Mar 29 08:49:05 localhost object-server: Object replication complete. Mar 29 08:49:11 localhost container-server: Replication run OVER Mar 29 08:49:13 localhost account-server: Replication run OVER
手順
-
アンダークラウドホストに
stack
ユーザーとしてログインします。 stackrc
アンダークラウド認証情報ファイルを入手します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow source ~/stackrc
$ source ~/stackrc
-
スケールダウンするロールについて、
overcloud-baremetal-deploy.yaml
ファイルのcount
パラメーターの数を減らします。 -
スタックから削除する各ノードの
hostname
とname
を定義します (ロールのinstances
属性で定義されていない場合)。 削除するノードに属性
provisioned: false
を追加します。たとえば、スタックからノードovercloud-objectstorage-1
を削除するには、overcloud-baremetal-deploy.yaml
ファイルに以下のスニペットを追加します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - name: ObjectStorage count: 3 instances: - hostname: overcloud-objectstorage-0 name: node00 - hostname: overcloud-objectstorage-1 name: node01 # Removed from cluster due to disk failure provisioned: false - hostname: overcloud-objectstorage-2 name: node02 - hostname: overcloud-objectstorage-3 name: node03
- name: ObjectStorage count: 3 instances: - hostname: overcloud-objectstorage-0 name: node00 - hostname: overcloud-objectstorage-1 name: node01 # Removed from cluster due to disk failure provisioned: false - hostname: overcloud-objectstorage-2 name: node02 - hostname: overcloud-objectstorage-3 name: node03
オーバークラウドの再デプロイ後、
provisioned: false
属性で定義したノードがスタックには存在しなくなります。ただし、これらのノードは provisioned の状態で稼働したままです。注記スタックから一時的にノードを削除する場合は、属性
provisioned: false
を使用してオーバークラウドをデプロイした後に、属性provisioned: true
でオーバークラウドをデプロイすると、ノードをスタックに戻すことができます。オーバークラウドからノードを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment \ /home/stack/templates/overcloud-baremetal-deploy.yaml
$ openstack overcloud node delete \ --stack <stack> \ --baremetal-deployment \ /home/stack/templates/overcloud-baremetal-deploy.yaml
<stack>
を、ベアメタルノードがプロビジョニングされるスタックの名前に置き換えます。指定しない場合、デフォルトはovercloud
です。注記スタックから削除するノードを、
openstack overcloud node delete
コマンドのコマンド引数に含めないでください。
ironic ノードを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack baremetal node delete <ironic_node_uuid>
$ openstack baremetal node delete <ironic_node_uuid>
<
;ironic_node_uuid>
; をノードの UUID に置き換えます。削除したノードのネットワークエージェントを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow for AGENT in $(openstack network agent list \ --host <ironic_node_uuid> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done
(overcloud)$ for AGENT in $(openstack network agent list \ --host <ironic_node_uuid> -c ID -f value) ; \ do openstack network agent delete $AGENT ; done
オーバークラウドノードをプロビジョニングして、デプロイメントコマンドに含める heat 環境ファイルを更新して生成します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
$ openstack overcloud node provision \ --stack <stack> \ --output <deployment_file> \ /home/stack/templates/overcloud-baremetal-deploy.yaml
-
<deployment_file>
は、デプロイメントコマンドに含めるために生成する heat 環境ファイルの名前に置き換えます (例:/home/stack/templates/overcloud-baremetal-deployed.yaml)
。
-
プロビジョニングコマンドによって生成された
overcloud-baremetal-deployed.yaml
ファイルを他の環境ファイルと共にスタックに追加し、オーバークラウドをデプロイします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud deploy \ ...
$ openstack overcloud deploy \ ... -e /usr/share/openstack-tripleo-heat-templates/environments \ -e /home/stack/templates/overcloud-baremetal-deployed.yaml \ --disable-validations \ ...
10.3.1. Compute ノードを手動で削除する
openstack overcloud node delete
コマンドが到達不能なノードのために失敗した場合には、オーバークラウドからのコンピュートノードの削除を手動で完了する必要があります。
前提条件
-
ベアメタルノードのスケールダウン 手順を実行すると、
UPDATE_FAILED
のステータスが返されました。
手順
source コマンドでアンダークラウド設定を読み込みます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow source ~/stackrc
(overcloud)$ source ~/stackrc
openstack tripleo launch heat
コマンドを使用して、エフェメラル Heat プロセスを起動します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db
(undercloud)$ openstack tripleo launch heat --heat-dir /home/stack/overcloud-deploy/overcloud/heat-launcher --restore-db
このコマンドは、heat プロセスを起動した後に終了します。heat プロセスは、引き続き podman Pod としてバックグラウンドで実行されます。
podman pod ps
コマンドを使用して、ephemeral-heat
プロセスが実行されていることを確認します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo podman pod ps
(undercloud)$ sudo podman pod ps POD ID NAME STATUS CREATED INFRA ID # OF CONTAINERS 958b141609b2 ephemeral-heat Running 2 minutes ago 44447995dbcf 3
export
コマンドを使用して、OS_CLOUD
環境をエクスポートします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow export OS_CLOUD=heat
(undercloud)$ export OS_CLOUD=heat
インストールされているスタックを一覧表示するには、
openstack stack list
コマンドを使用します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack stack list
(undercloud)$ openstack stack list +--------------------------------------+------------+---------+-----------------+----------------------+--------------+ | ID | Stack Name | Project | Stack Status | Creation Time | Updated Time | +--------------------------------------+------------+---------+-----------------+----------------------+--------------+ | 761e2a54-c6f9-4e0f-abe6-c8e0ad51a76c | overcloud | admin | CREATE_COMPLETE | 2022-08-29T20:48:37Z | None | +--------------------------------------+------------+---------+-----------------+----------------------+--------------+
export
コマンドを使用して、OS_CLOUD
環境をエクスポートします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow export OS_CLOUD=undercloud
(undercloud)$ export OS_CLOUD=undercloud
手動で削除するノードの UUID を特定します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack baremetal node list
(undercloud)$ openstack baremetal node list
削除するノードをメンテナンスモードに移動します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack baremetal node maintenance set <node_uuid>
(undercloud)$ openstack baremetal node maintenance set <node_uuid>
- コンピュートサービスがその状態をベアメタルサービスと同期するのを待ちます。これには最大 4 分かかる場合があります。
source コマンドでオーバークラウド設定を読み込みます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow source ~/overcloudrc
(undercloud)$ source ~/overcloudrc
削除したノードのネットワークエージェントを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow for AGENT in $(openstack network agent list --host <scaled_down_node> -c ID -f value) ; do openstack network agent delete $AGENT ; done
(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>
を、削除するノードの名前に置き換えます。
-
ノードが新しいインスタンスをスケジュールできないように、オーバークラウド上の削除されたノードでコンピュートサービスが無効になっていることを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack compute service list
(overcloud)$ openstack compute service list
Compute サービスが無効化されていない場合は、無効化します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack compute service set <hostname> nova-compute --disable
(overcloud)$ openstack compute service set <hostname> nova-compute --disable
削除した Compute サービスを、Placement サービスのリソースプロバイダーから除外します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack resource provider list openstack resource provider delete <uuid>
(overcloud)$ openstack resource provider list (overcloud)$ openstack resource provider delete <uuid>
- 削除するコンピュートノードに root ユーザーとしてログインします。
Red Hat サブスクリプション管理に登録されているシステムのシステムプロファイルを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow subscription-manager remove --all subscription-manager unregister subscription-manager clean
# subscription-manager remove --all # subscription-manager unregister # subscription-manager clean
注記コンピュートノードにアクセスできない場合は、Red Hat カスタマーポータルでシステムプロファイルを削除できます。詳細は、Red Hat Subscription Management (RHSM)に登録されているシステムのシステムプロファイルを削除する方法 を参照してください。
source コマンドでアンダークラウド設定を読み込みます。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow source ~/stackrc
(overcloud)$ source ~/stackrc
スタックから Compute ノードを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack overcloud node delete --stack <overcloud> <node> --baremetal-deployment <baremetal_deployment_file>
(undercloud)$ openstack overcloud node delete --stack <overcloud> <node> --baremetal-deployment <baremetal_deployment_file>
-
<overcloud>
は、オーバークラウドスタックの名前または UUID に置き換えてください。 -
<node>
を、削除する Compute ノードの Compute サービスホスト名または UUID に置き換えます。 <
;baremetal_deployment_file>
は、ベアメタルのデプロイメントファイルの名前に置き換えます。注記ノードの電源がすでにオフになっている場合、このコマンドは
WARNING
メッセージを返します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow Ansible failed, check log at `~/ansible.log` WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.
Ansible failed, check log at `~/ansible.log` WARNING: Scale-down configuration error. Manual cleanup of some actions may be necessary. Continuing with node removal.
このメッセージは無視しても問題ありません。
-
- オーバークラウドノードが削除されるのを待ちます。
export
コマンドを使用して、OS_CLOUD
環境をエクスポートします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow export OS_CLOUD=heat
(undercloud)$ export OS_CLOUD=heat
ノードの削除が完了したら、オーバークラウドスタックのステータスを確認します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow openstack stack list
(undercloud)$ openstack stack list
表10.2 結果 ステータス 説明 UPDATE_COMPLETE
削除操作は正常に完了しました。
UPDATE_FAILED
削除操作が失敗しました。
メンテナンスモード中にオーバークラウドノードの削除に失敗した場合は、問題はハードウェアにある可能性があります。
インスタンス HA が有効な場合は、以下の操作を実行します。
ノードの Pacemaker リソースをクリーンアップします。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 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
$ 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 デバイスを削除します。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo pcs stonith delete <device-name>
$ sudo pcs stonith delete <device-name>
オーバークラウドで削除された Compute ノードを置き換えない場合は、ノード数を含む環境ファイルの
ComputeCount
パラメーターを減らします。通常、このファイルの名前はovercloud-baremetal-deploy.yaml
です。たとえば、ノードを 1 つ削除する場合、ノード数を 4 から 3 に減らします。Copy to Clipboard Copied! Toggle word wrap Toggle overflow parameter_defaults: ... ComputeCount: 3 ...
parameter_defaults: ... ComputeCount: 3 ...
ノード数を減らすと、
openstack overcloud deploy
を実行しても director は新規ノードをプロビジョニングしません。注記デプロイメントから削除した後にコンピュートノードを置き換えるには、ベアメタルノードのスケールアップ を参照してください。