6.4. コマンドラインインターフェイスを使用した双方向ミラーリングの設定

この手順では、プライマリーストレージクラスターとセカンダリーストレージクラスターとの間に、プールの双方向レプリケーションを設定します。

注記

双方向レプリケーションを使用する場合にミラーリングできるのは、2 つのストレージクラスター間だけです。

注記

このセクションの例には、プライマリーイメージでプライマリーストレージクラスターを site-a として、そのイメージをレプリケートするセカンダリーストレージクラスターを site-b として参照し、2 つのストレージクラスターを区別します。これらの例で使用されるプール名は data と呼ばれます。

前提条件

  • 少なくとも、正常に実行されている Red Hat Ceph Storage クラスター 2 台。
  • 各ストレージクラスターの Ceph クライアントノードへの Root レベルのアクセス。
  • 管理者レベル権限が割り当てられた CephX ユーザー。

手順

  1. 両方のサイトで cephadm シェルにログインします。

    [root@site-a ~]# cephadm shell
    [root@site-b ~]# cephadm shell

  2. site-a プライマリークラスターで、以下のコマンドを実行します。

    [ceph: root@site-a /]# ceph orch apply rbd-mirror --placement=host01

    注記

    nodename は、ミラーリングを設定するホストです。

  3. site-b で、セカンダリークラスターでミラーデーモンのデプロイメントをスケジュールします。

    構文

    ceph orch apply rbd-mirror --placement=NODENAME

    [ceph: root@site-b /]# ceph orch apply rbd-mirror --placement=host04

    注記

    nodename は、セカンダリークラスターでミラーリングを設定するホストです。

  4. site-a のイメージのジャーナリング機能を有効にします。

    1. 新規イメージの場合は、--image-feature オプションを使用します。

      構文

      rbd create IMAGE_NAME --size MEGABYTES --pool POOL_NAME --image-feature FEATURE FEATURE

      [ceph: root@site-a /]# rbd create image1 --size 1024 --pool data --image-feature exclusive-lock,journaling

      注記

      exclusive-lock がすでに有効にされている場合は、ジャーナリング のみを引数として使用します。それ以外の場合は、以下のエラーが返されます。

      one or more requested features are already enabled
      (22) Invalid argument
    2. 既存のイメージ の場合は、rbd feature enable コマンドを使用します。

      構文

      rbd feature enable POOL_NAME/IMAGE_NAME FEATURE, FEATURE

      [ceph: root@site-a /]# rbd feature enable data/image1 exclusive-lock, journaling

    3. デフォルトで、すべての新しいイメージでジャーナリングを有効にします。

      構文

      ceph config set global rbd_default_features SUM_OF_FEATURE_NUMERIC_VALUES
      ceph config show HOST01 rbd_default_features

      [ceph: root@site-a /]# ceph config set global rbd_default_features 125
      [ceph: root@site-a /]# ceph config show mon.host01 rbd_default_features

  5. 両方のストレージクラスターで、ミラーリングモード (pool または image モード) を選択します。

    1. プールモード の有効化:

      構文

      rbd mirror pool enable POOL_NAME MODE

      [ceph: root@site-a /]# rbd mirror pool enable data pool
      [ceph: root@site-b /]# rbd mirror pool enable data pool

      この例では、data という名前のプール全体のミラーリングを有効にします。

    2. イメージモード の有効化:

      構文

      rbd mirror pool enable POOL_NAME MODE

      [ceph: root@site-a /]# rbd mirror pool enable data image
      [ceph: root@site-b /]# rbd mirror pool enable data image

      この例では、data という名前のプールでイメージモードのミラーリングを有効にします。

      注記

      プールの特定イメージのミラーリングを有効にするには、Red Hat Ceph Storage Block Device GuideEnabling image mirroring セクションを参照してください。

    3. 両方のサイトでミラーリングが正常に有効になっていることを確認します。

      構文

      rbd mirror pool info POOL_NAME

      [ceph: root@site-a /]# rbd mirror pool info data
      Mode: pool
      Site Name: c13d8065-b33d-4cb5-b35f-127a02768e7f
      
      Peer Sites: none
      
      [ceph: root@site-b /]# rbd mirror pool info data
      Mode: pool
      Site Name: a4c667e2-b635-47ad-b462-6faeeee78df7
      
      Peer Sites: none

  6. Ceph クライアントノードで、ストレージクラスターのピアをブートストラップします。

    1. Ceph ユーザーアカウントを作成し、ストレージクラスターのピアをプールに登録します。

      構文

      rbd mirror pool peer bootstrap create --site-name PRIMARY_LOCAL_SITE_NAME POOL_NAME > PATH_TO_BOOTSTRAP_TOKEN

      [ceph: root@rbd-client-site-a /]# rbd mirror pool peer bootstrap create --site-name site-a data > /root/bootstrap_token_site-a

      注記

      以下の bootstrap コマンド例では、client.rbd-mirror.site-a および client.rbd-mirror-peer Ceph ユーザーを作成します。

    2. ブートストラップトークンファイルを site-b ストレージクラスターにコピーします。
    3. site-b ストレージクラスターでブートストラップトークンをインポートします。

      構文

      rbd mirror pool peer bootstrap import --site-name SECONDARY_LOCAL_SITE_NAME --direction rx-tx POOL_NAME PATH_TO_BOOTSTRAP_TOKEN

      [ceph: root@rbd-client-site-b /]# rbd mirror pool peer bootstrap import --site-name site-b --direction rx-tx data /root/bootstrap_token_site-a

      注記

      ピアのブートストラップ時には双方向ミラーリングがデフォルトであるため、--direction 引数はオプションです。

  7. ミラーリングのステータスを確認するには、プライマリーサイトおよびセカンダリーサイトの Ceph Monitor ノードから以下のコマンドを実行します。

    構文

    rbd mirror image status POOL_NAME/IMAGE_NAME

    [ceph: root@mon-site-a /]# rbd mirror image status data/image1
    image1:
      global_id:   a4c667e2-b635-47ad-b462-6faeeee78df7
      state:       up+stopped
      description: local image is primary
      service:     host03.glsdbv on host03.ceph.redhat.com
      last_update: 2021-09-16 10:55:58
      peer_sites:
        name: a
        state: up+stopped
        description: replaying, {"bytes_per_second":0.0,"entries_behind_primary":0,"entries_per_second":0.0,"non_primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1},"primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1}}
        last_update: 2021-09-16 10:55:50

    ここでは uprbd-mirror デーモンが実行中で、stopped は、このイメージが別のストレージクラスターからのレプリケーション先ではないことを意味します。これは、イメージがこのストレージクラスターのプライマリーであるためです。

    [ceph: root@mon-site-b /]# rbd mirror image status data/image1
    image1:
      global_id:   a4c667e2-b635-47ad-b462-6faeeee78df7
      state:       up+replaying
      description: replaying, {"bytes_per_second":0.0,"entries_behind_primary":0,"entries_per_second":0.0,"non_primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1},"primary_position":{"entry_tid":3,"object_number":3,"tag_tid":1}}
      service:     host05.dtisty on host05
      last_update: 2021-09-16 10:57:20
      peer_sites:
        name: b
        state: up+stopped
        description: local image is primary
        last_update: 2021-09-16 10:57:28

    イメージが up+replaying の場合には、ミラーリングが正常に機能します。ここでは uprbd-mirror デーモンが実行中で、replaying は、このイメージが別のストレージクラスターからのレプリケーション先であることを意味します。

    注記

    サイト間の接続によって、ミラーリングでイメージの同期に時間がかかる場合があります。

関連情報