10.2. Ceph Storage ノードのスケールダウンと置き換え

場合によっては、Ceph クラスターをスケールダウンしたり、Ceph Storage ノードを置き換える(例: Ceph Storage ノードに問題がある場合など)必要が出てくる場合があります。いずれの場合も、データの損失を避けるために、オーバークラウドから削除する Ceph Storage ノードを無効にしてリバランスする必要があります。

注記

以下の手順では、『Red Hat Ceph Storage Administration Guide』からのステップを使用して、手動で Ceph Storage ノードを削除します。Ceph Storage ノードの手動削除に関する詳細は、「コンテナー内で実行される Ceph デーモンの開始、停止、および再起動」および「コマンドラインインターフェースを使用した Ceph OSD の削除」を参照してください。

手順

  1. コントローラーノードに heat-admin ユーザーとしてログインします。director の stack ユーザーには、heat-admin ユーザーにアクセスするための SSH キーがあります。
  2. 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
  3. 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
  4. Ceph Storage クラスターがリバランスを開始します。このプロセスが完了するまで待機してください。以下のコマンドを使用して、ステータスを確認できます。

    [heat-admin@overcloud-controller-0 ~]$ sudo podman exec ceph-mon-<HOSTNAME> ceph -w
  5. Ceph クラスターのリバランスが完了したら、削除する Ceph Storage ノード (ここでは overcloud-cephstorage-0) に heat-admin ユーザーとしてログインし、ノードを停止します。

    [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl disable ceph-osd@0
    [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl disable ceph-osd@1
  6. OSD を停止します。

    [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@0
    [heat-admin@overcloud-cephstorage-0 ~]$ sudo systemctl stop ceph-osd@1
  7. コントローラーノードにログインしたら、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
  8. 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
  9. クラスターから 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
  10. ノードからログアウトして、stack ユーザーとしてアンダークラウドに戻ります。

    [heat-admin@overcloud-controller-0 ~]$ exit
    [stack@director ~]$
  11. director が再度プロビジョニングしないように、Ceph Storage ノードを無効にします。

    [stack@director ~]$ openstack baremetal node list
    [stack@director ~]$ openstack baremetal node maintenance set UUID
  12. Ceph Storage ノードを削除するには、ローカルのテンプレートファイルを使用して、director の overcloud スタックへの更新が必要です。最初にオーバークラウドスタックの UUID を特定します。

    $ openstack stack list
  13. 削除する Ceph Storage ノードの UUID を特定します。

    $ openstack server list
  14. スタックからノードを削除し、それに応じてプランを更新します。

    $ openstack overcloud node delete --stack overcloud <NODE_UUID>
重要

オーバークラウドの作成時に追加の環境ファイルを渡した場合には、予定外の変更がオーバークラウドに加えられないように、ここで -e オプションを使用して環境ファイルを再度渡します。詳しい情報は、『 director のインストールと 使用方法』の「オーバークラウド環境 の変更」を参照してください。

director のオーケストレーションが完了したら、バックエンドをテストします。

  1. stack が更新を完了するまで待機します。heat stack-list --show-nested コマンドを使用して、stack の更新を監視します。
  2. 新規ノードを 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
注記

ロールごとのノード数を定義する方法の詳細は、「ロールへのノードとフレーバーの割り当て」を参照してください。

  1. 環境ファイルを更新したら、オーバークラウドを再デプロイします。

    $ openstack overcloud deploy --templates -e <ENVIRONMENT_FILES>

    director は、新しいノードをプロビジョニングし、新しいノードの詳細を用いて stack 全体を更新します。

  2. heat-admin ユーザーとしてコントローラーノードにログインし、Ceph Storage ノードのステータスを確認します。

    [heat-admin@overcloud-controller-0 ~]$ sudo ceph status
  3. osdmap セクションの値がクラスターで必要なノード数と一致していることを確認します。削除した Ceph Storage ノードは新規ノードに置き換えられます。