11.9. Controller ノード置き換え後のクリーンアップ
ノードの交換が完了したら、コントローラークラスターを完成させることができます。
手順
- Controller ノードにログインします。
Galera クラスターの Pacemaker 管理を有効にし、新規ノード上で Galera を起動します。
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource refresh galera-bundle [tripleo-admin@overcloud-controller-0 ~]$ sudo pcs resource manage galera-bundle
フェンシングの有効化:
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs property set stonith-enabled=true
最終のステータスチェックを実行して、サービスが正しく実行されていることを確認します。
[tripleo-admin@overcloud-controller-0 ~]$ sudo pcs status
注記エラーが発生したサービスがある場合には、
pcs resource refresh
コマンドを使用して問題を解決し、そのサービスを再起動します。director を終了します。
[tripleo-admin@overcloud-controller-0 ~]$ exit
オーバークラウドと対話できるようにするために、source コマンドで
overcloudrc
ファイルを読み込みます。$ source ~/overcloudrc
オーバークラウド環境のネットワークエージェントを確認します。
(overcloud) $ openstack network agent list
古いノードにエージェントが表示される場合には、そのエージェントを削除します。
(overcloud) $ for AGENT in $(openstack network agent list --host overcloud-controller-1.localdomain -c ID -f value) ; do openstack network agent delete $AGENT ; done
必要に応じて、新規ノード上の L3 エージェントホストにルーターを追加します。以下のコマンド例では、UUID に 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 を使用して L3 エージェントに
r1
という名称のルーターを追加しています。(overcloud) $ openstack network agent add router --l3 2d1c1dc1-d9d4-4fa9-b2c8-f29cd1a649d4 r1
cinder サービスを掃除します。
cinder サービスをリスト表示します。
(overcloud) $ openstack volume service list
Controller ノードにログインし、
cinder-api
コンテナーに接続し、cinder-manage service remove
コマンドを使用して、残っているサービスを削除します。[tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-backup <host> [tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it cinder_api cinder-manage service remove cinder-scheduler <host>
RabbitMQ クラスターをクリーンアップします。
- Controller ノードにログインします。
podman exec
コマンドを使用して bash を起動し、RabbitMQ クラスターのステータスを確認します。[tripleo-admin@overcloud-controller-0 ~]$ sudo podman exec -it rabbitmq-bundle-podman-0 bash [root@overcloud-controller-0 /]$ rabbitmqctl cluster_status
置き換えられた Controller ノードをクリアするには、
rabbitmqctl
コマンドを使用します。[root@controller-0 /]$ rabbitmqctl forget_cluster_node <node_name>
-
ブートストラップ Controller ノードを置き換えた場合は、置き換えプロセス後に環境ファイル
~/templates/bootstrap-controller.yaml
を削除するか、既存の環境ファイルからpacemaker_short_bootstrap_node_name
およびmysql_short_bootstrap_node_name
パラメーターを削除する必要があります。このステップにより、これ以降の置き換えで director が Controller ノード名をオーバーライドしようとするのを防ぎます。詳細は、ブートストラップコントローラーノードの交換 を参照してください。 オーバークラウドで Object Storage サービス (swift) を使用している場合は、オーバークラウドノードを更新した後、swift リングを同期する必要があります。次の例のようなスクリプトを使用して、リングファイルを既存のコントローラーノード (この例ではコントローラーノード 0) からすべてのコントローラーノードに配布し、それらのノードで Object Storage サービスコンテナーを再起動します。
#!/bin/sh set -xe SRC="tripleo-admin@overcloud-controller-0.ctlplane" ALL="tripleo-admin@overcloud-controller-0.ctlplane tripleo-admin@overcloud-controller-1.ctlplane tripleo-admin@overcloud-controller-2.ctlplane"
リングファイルの現在のセットを取得します。
ssh "${SRC}" 'sudo tar -czvf - /var/lib/config-data/puppet-generated/swift_ringbuilder/etc/swift/{*.builder,*.ring.gz,backups/*.builder}' > swift-rings.tar.gz
リングをすべてのノードにアップロードし、それらを正しい場所に配置して、swift サービスを再起動します。
for DST in ${ALL}; do cat swift-rings.tar.gz | ssh "${DST}" 'sudo tar -C / -xvzf -' ssh "${DST}" 'sudo podman restart swift_copy_rings' ssh "${DST}" 'sudo systemctl restart tripleo_swift*' done