11.2. Ceph Storage ノードのスケールダウンと置き換え
場合によっては、Ceph クラスターのスケールダウン、または Ceph Storage ノードのを置き換え (Ceph Storage ノードに問題がある場合など) が必要となる可能性があります。いずれの場合も、データの損失を避けるために、オーバークラウドから削除する Ceph Storage ノードを無効にしてリバランスする必要があります。
以下の手順では、Red Hat Ceph Storage Administration Guideからのステップを使用して、手動で Ceph Storage ノードを削除します。Ceph Storage ノードの手動削除に関する詳細は、コンテナー内で実行される Ceph デーモンの開始、停止、および再起動 および コマンドラインインターフェイスを使用した Ceph OSD の削除 を参照してください。
手順
-
コントローラーノードに
heat-admin
ユーザーとしてログインします。director のstack
ユーザーには、heat-admin
ユーザーにアクセスするための SSH キーがあります。 OSD ツリーをリスト表示して、お使いのノードの OSD を検索します。たとえば、削除するノードには、以下の OSD が含まれる場合があります。
-2 0.09998 host overcloud-cephstorage-0 0 0.04999 osd.0 up 1.00000 1.00000 1 0.04999 osd.1 up 1.00000 1.00000
Ceph Storage ノードの OSD を無効化します。今回は、OSD ID は 0 と 1 です。
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd out 0 [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd out 1
Ceph Storage クラスターがリバランスを開始します。このプロセスが完了するまで待機してください。以下のコマンドを使用して、ステータスを確認できます。
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph -w
Ceph クラスターのリバランスが完了したら、削除する Ceph Storage ノード (ここでは
overcloud-cephstorage-0
) にheat-admin
ユーザーとしてログインし、ノードを停止し無効にします。[heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@0 [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@1 [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl disable ceph-osd@0 [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl disable ceph-osd@1
OSD を停止します。
[heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@0 [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@1
コントローラーノードにログインしたら、CRUSH マップから OSD を削除して、データを受信しないようにします。
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd crush remove osd.0 [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd crush remove osd.1
OSD 認証キーを削除します。
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph auth del osd.0 [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph auth del osd.1
クラスターから OSD を削除します。
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd rm 0 [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd rm 1
CRUSH マップからストレージノードを削除します。
[heat-admin@overcloud-controller-0 ~]$ sudo docker exec ceph-mon-<HOSTNAME> ceph osd crush rm <NODE> [heat-admin@overcloud-controller-0 ~]$ sudo ceph osd crush remove <NODE>
CRUSH ツリーを検索して、CRUSH マップに定義されている <NODE> の名前を確認できます。
[heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph osd crush tree | grep overcloud-osd-compute-3 -A 4 "name": "overcloud-osd-compute-3", "type": "host", "type_id": 1, "items": [] }, [heat-admin@overcloud-controller-0 ~]$
CRUSH ツリーで、アイテムリストが空であることを確認します。リストが空でない場合は、ステップ 7 を再度実施してください。
ノードからログアウトして、
stack
ユーザーとしてアンダークラウドに戻ります。[heat-admin@overcloud-controller-0 ~]$ exit [stack@director ~]$
director が再度プロビジョニングしないように、Ceph Storage ノードを無効にします。
[stack@director ~]$ openstack baremetal node list [stack@director ~]$ openstack baremetal node maintenance set UUID
Ceph Storage ノードを削除するには、ローカルのテンプレートファイルを使用して、director の
overcloud
スタックへの更新が必要です。最初にオーバークラウドスタックの UUID を特定します。$ openstack stack list
削除する Ceph Storage ノードの UUID を特定します。
$ openstack server list
スタックからノードを削除します。
(undercloud)$ openstack overcloud node delete --stack <overcloud> <node>
-
<overcloud>
は、オーバークラウドスタックの名前または UUID に置き換えてください。 -
&
lt;node&
gt; を、削除するノードのホスト名または UUID に置き換えます。
-
-
stack が更新を完了するまで待機します。
heat stack-list --show-nested
コマンドを使用して、stack の更新を監視します。 新規ノードを director のノードプールに追加して、Ceph Storage ノードとしてデプロイします。環境ファイル (ここでは
~/templates/storage-config.yaml
) のparameter_defaults
のCephStorageCount
パラメーターを使用して、オーバークラウド内の Ceph Storage ノードの合計数を定義します。parameter_defaults: ControllerCount: 3 OvercloudControlFlavor: control ComputeCount: 3 OvercloudComputeFlavor: compute CephStorageCount: 3 OvercloudCephStorageFlavor: ceph-storage CephMonCount: 3 OvercloudCephMonFlavor: ceph-mon
注記ロールごとのノード数を定義する方法の詳細は、「ロールへのノードとフレーバーの割り当て」を参照してください。
環境ファイルを更新したら、オーバークラウドを再デプロイします。
$ openstack overcloud deploy --templates -e <ENVIRONMENT_FILE>
director は、新しいノードをプロビジョニングし、新しいノードの詳細を用いて stack 全体を更新します。
heat-admin
ユーザーとしてコントローラーノードにログインし、Ceph Storage ノードのステータスを確認します。[heat-admin@overcloud-controller-0 ~]$ sudo ceph status
-
osdmap
セクションの値がクラスターで必要なノード数と一致していることを確認します。削除した Ceph Storage ノードは新規ノードに置き換えられます。