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

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

注記

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

注記

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

前提条件

  • 少なくとも、正常に実行されている Red Hat Ceph Storage クラスター 2 台。
  • 各ストレージクラスターの Ceph クライアントノードへの Root レベルのアクセス。
  • 管理者レベル権限が割り当てられた CephX ユーザー。
  • ジャーナルベースのミラーリングでは、プール内のイメージで排他的ロックとジャーナリングを有効にする必要があります。

手順

  1. site-a ストレージクラスターに接続されたクライアントノードおよび site-b ストレージクラスターに接続されたクライアントノードに rbd-mirror パッケージをインストールします。

    Red Hat Enterprise Linux 7

    [root@rbd-client ~]# yum install rbd-mirror

    Red Hat Enterprise Linux 8

    [root@rbd-client ~]# dnf install rbd-mirror

    注記

    パッケージは Red Hat Ceph Storage Tools リポジトリーによって提供されます。

  2. イメージ上で排他的ロックおよびジャーナリング機能を有効にします。

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

      構文

      rbd create IMAGE_NAME --size MEGABYTES --pool POOL_NAME --image-feature FEATURE [,FEATURE]

      [root@rbd-client ~]# rbd create image1 --size 1024 --pool data --image-feature exclusive-lock,journaling

    2. 既存のイメージ の場合は、rbd feature enable コマンドを使用します。

      構文

      rbd feature enable POOL_NAME/IMAGE_NAME FEATURE [,FEATURE]

      [root@rbd-client ~]# rbd feature enable data/image1 exclusive-lock,journaling

    3. デフォルトですべての新規イメージの排他的ロックおよびジャーナリングを有効にするには、以下の設定を Ceph 設定ファイルに追加します。

      rbd_default_features = 125
  3. ミラーリングモード (pool または image モード) を選択します。

    重要

    スナップショットベースのミラーリングには、イメージモードを使用します。

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

      構文

      rbd mirror pool enable POOL_NAME MODE

      [root@rbd-client ~]# rbd mirror pool enable data pool

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

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

      構文

      rbd mirror pool enable POOL_NAME MODE

      [root@rbd-client ~]# rbd mirror pool enable data image

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

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

      構文

      rbd mirror pool info POOL_NAME

      [root@rbd-client ~]# rbd mirror pool info data
      Mode: image
      Site Name: 94cbd9ca-7f9a-441a-ad4b-52a33f9b7148
      
      Peer Sites: none

  4. site-a クラスターで、以下の手順を実行します。

    1. Ceph クライアントノードで、ユーザーを作成します。

      構文

      ceph auth get-or-create client.PRIMARY_CLUSTER_NAME mon 'profile rbd-mirror' osd 'profile rbd' -o /etc/ceph/ceph.PRIMARY_CLUSTER_NAME.keyring

      [root@rbd-client-site-a ~]# ceph auth get-or-create client.rbd-mirror.site-a mon 'profile rbd-mirror' osd 'profile rbd' -o /etc/ceph/ceph.client.rbd-mirror.site-a.keyring

    2. キーリングを site-b クラスターにコピーします。

      構文

      scp /etc/ceph/ceph.PRIMARY_CLUSTER_NAME.keyring root@SECONDARY_CLUSTER:_PATH_

      [root@rbd-client-site-a ~]# scp /etc/ceph/ceph.client.rbd-mirror.site-a.keyring root@rbd-client-site-b:/etc/ceph/

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

      1. ストレージクラスターのピアをプールに登録します。

        構文

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

        [root@rbd-client-site-a ~]# rbd mirror pool peer bootstrap create --site-name rbd-mirror.site-a data > /root/bootstrap_token_rbd-mirror.site-a

        注記

        bootstrap コマンドの例では、client.rbd-mirror-peer Ceph ユーザーを作成します。

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

        構文

        scp PATH_TO_BOOTSTRAP_TOKEN root@SECONDARY_CLUSTER:/root/

        [root@rbd-client-site-a ~]# scp /root/bootstrap_token_site-a root@ceph-rbd2:/root/

  5. site-b クラスターで、以下の手順を実行します。

    1. クライアントノードで、ユーザーを作成します。

      構文

      ceph auth get-or-create client.SECONDARY_CLUSTER_NAME mon 'profile rbd-mirror' osd 'profile rbd' -o /etc/ceph/ceph.SECONDARY_CLUSTER_NAME.keyring

      [root@rbd-client-site-b ~]# ceph auth get-or-create client.rbd-mirror.site-b mon 'profile rbd-mirror' osd 'profile rbd' -o /etc/ceph/ceph.client.rbd-mirror.site-b.keyring

    2. キーリングを site-a クラスター (Ceph クライアントノード) にコピーします。

      構文

      scp /etc/ceph/ceph.SECONDARY_CLUSTER_NAME.keyring root@PRIMARY_CLUSTER:_PATH_

      [root@rbd-client-site-b ~]# scp /etc/ceph/ceph.client.rbd-mirror.site-b.keyring root@rbd-client-site-a:/etc/ceph/

    3. ブートストラップトークンをインポートします。

      構文

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

      [root@rbd-client-site-b ~]# rbd mirror pool peer bootstrap import --site-name rbd-mirror.site-b --direction rx-tx data /root/bootstrap_token_rbd-mirror.site-a

      注記

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

  6. プライマリーおよびセカンダリークライアントノードで rbd-mirror デーモンを有効にして起動します。

    構文

    systemctl enable ceph-rbd-mirror.target
    systemctl enable ceph-rbd-mirror@rbd-mirror.CLIENT_ID
    systemctl start ceph-rbd-mirror@rbd-mirror.CLIENT_ID

    CLIENT_ID は、先ほど作成した Ceph ユーザーに置き換えます。

    [root@rbd-client-site-a ~]# systemctl enable ceph-rbd-mirror.target
    [root@rbd-client-site-a ~]# systemctl enable ceph-rbd-mirror@rbd-mirror.site-a
    [root@rbd-client-site-a ~]# systemctl start ceph-rbd-mirror@rbd-mirror.site-a
    [root@rbd-client-site-a ~]# systemctl enable ceph-rbd-mirror@rbd-mirror.site-b
    [root@rbd-client-site-a ~]# systemctl start ceph-rbd-mirror@rbd-mirror.site-b

    上記の例では、プライマリークラスター site-a でユーザーを有効化されています。

    [root@rbd-client-site-b ~]# systemctl enable ceph-rbd-mirror.target
    [root@rbd-client-site-b ~]# systemctl enable ceph-rbd-mirror@rbd-mirror.site-a
    [root@rbd-client-site-b ~]# systemctl start ceph-rbd-mirror@rbd-mirror.site-a
    [root@rbd-client-site-b ~]# systemctl enable ceph-rbd-mirror@rbd-mirror.site-b
    [root@rbd-client-site-b ~]# systemctl start ceph-rbd-mirror@rbd-mirror.site-b

    上記の例では、ユーザーはセカンダリークラスター site-b で有効にされています。

    重要

    rbd-mirror デーモンには一意のクライアント ID が必要です。

  7. ミラーリングのステータスを確認するには、site-a および site-b クラスターの Ceph Monitor ノードから以下のコマンドを実行します。

    構文

    rbd mirror image status POOL_NAME/IMAGE_NAME

    ジャーナルベースのミラーリング

    [root@mon-site-a ~]# rbd mirror image status data/image1
    image1:
      global_id:   08027096-d267-47f8-b52e-59de1353a034
      state:       up+stopped 1
      description: local image is primary
      last_update: 2021-04-22 13:45:31

    スナップショットベースのミラーリング

    [root@mon-site-a ~]# rbd mirror image status data/image1
    image1:
      global_id:   47fd1aae-5f19-4193-a5df-562b5c644ea7
      state:       up+stopped 1
      description: local image is primary
      service:     admin on ceph-rbd1-vasi-43-5hwia4-node2
      last_update: 2022-01-20 12:42:54
      peer_sites:
        name: rbd-mirror.site-b
        state: up+replaying
        description: replaying, {"bytes_per_second":0.0,"bytes_per_snapshot":0.0,"local_snapshot_timestamp":1642693094,"remote_snapshot_timestamp":1642693094,"replay_state":"idle"}
        last_update: 2022-01-20 12:42:59
      snapshots:
        5 .mirror.primary.47fd1aae-5f19-4193-a5df-562b5c644ea7.dda146c6-5f21-4e75-ba93-660f6e57e301 (peer_uuids:[bfd09289-c9c9-40c8-b2d3-ead9b6a99a45])
    1 1
    ここでは uprbd-mirror デーモンが実行中で、stopped は、このイメージが別のストレージクラスターからのレプリケーション先ではないことを意味します。これは、イメージがこのストレージクラスターのプライマリーであるためです。

    ジャーナルベースのミラーリング

    [root@mon-site-b ~]# rbd mirror image status data/image1
    image1:
      global_id:   7d486c3f-d5a1-4bee-ae53-6c4f1e0c8eac
      state:       up+replaying 1
      description: replaying, master_position=[object_number=3, tag_tid=1, entry_tid=3], mirror_position=[object_number=3, tag_tid=1, entry_tid=3], entries_behind_master=0
      last_update: 2021-04-22 14:19:27

    スナップショットベースのミラーリング

    [root@mon-site-b ~]# rbd mirror image status data/image1
    image1:
      global_id:   06acc9e6-a63d-4aa1-bd0d-4f3a79b0ae33
      state:       up+replaying 1
      description: replaying, {"bytes_per_second":0.0,"bytes_per_snapshot":0.0,"local_snapshot_timestamp":1642689843,"remote_snapshot_timestamp":1642689843,"replay_state":"idle"}
      service:     admin on ceph-rbd2-vasi-43-5hwia4-node2
      last_update: 2022-01-20 12:41:57
    1 1
    イメージが up+replaying の場合には、ミラーリングが正常に機能します。ここでは uprbd-mirror デーモンが実行中で、replaying は、このイメージが別のストレージクラスターからのレプリケーション先であることを意味します。
    注記

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

関連情報