5.3. Ansible を使用した一方向ミラーリングの設定
以下の手順では、ceph-ansible
を使用して site-a
と呼ばれるプライマリーストレージクラスターでイメージの一方向レプリケーションを、site-b
と呼ばれるセカンダリーストレージクラスターに設定します。以下の例では、data
はミラーリングされるイメージが含まれるプールの名前です。
前提条件
- Red Hat Ceph Storage クラスターを実行する 2 つ。
- Ceph クライアントノード。
- 同じ名前のプールが両方のクラスターに存在する。
- ジャーナルベースのミラーリングでは、プール内のイメージで排他的ロックとジャーナリングを有効にする必要があります。
一方向レプリケーションを使用する場合は、複数のセカンダリーストレージクラスターにミラーリングできます。
手順
イメージの元のクラスターで、イメージの排他的ロックおよびジャーナリング機能を有効にします。
新規イメージの場合は、
--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
既存のイメージ の場合は、
rbd feature enable
コマンドを使用します。構文
rbd feature enable POOL_NAME/IMAGE_NAME FEATURE_NAME
例
[root@rbd-client ~]# rbd feature enable data/image1 exclusive-lock,journaling
デフォルトですべての新規イメージの排他的ロックおよびジャーナリングを有効にするには、以下の設定を Ceph 設定ファイルに追加します。
rbd_default_features = 125
site-a
クラスターで、以下の手順を実行します。モニターノードで、
rbd-mirror
デーモンがクラスターへの接続に使用するユーザーを作成します。この例では、site-a
ユーザーを作成し、そのキーをsite-a.client.site-a.keyring
という名前のファイルに出力します。構文
ceph auth get-or-create client.CLUSTER_NAME mon 'profile rbd' osd 'profile rbd pool=data' -o /etc/ceph/CLUSTER_NAME.client.USER_NAME.keyring
例
[root@mon ~]# ceph auth get-or-create client.site-a mon 'profile rbd' osd 'profile rbd pool=data' -o /etc/ceph/site-a.client.site-a.keyring
-
Ceph 設定ファイルおよび新たに作成された鍵ファイルをモニターノードから
site-b
のモニターおよびクライアントノードにコピーします。 -
Ceph 設定ファイルの名前を
ceph.conf
から CLUSTER-NAME.conf に変更します。この例では、ファイルは/etc/ceph/site-a.conf
です。
site-b
クラスターで、以下の手順を実行します。-
Ansible 管理ノードで、Ansible インベントリーファイルに
[rbdmirrors]
グループを追加します。通常のインベントリーファイルは/etc/ansible/hosts
です。 [rbdmirrors]
グループの下に、rbd-mirror
デーモンが実行されるsite-b
クライアントノードの名前を追加します。デーモンは、イメージの変更をsite-a
からsite-b
にプルします。[rbdmirrors] ceph-client
/usr/share/ceph-ansible
ディレクトリーに移動します。[root@admin ~]# cd /usr/share/ceph-ansible
group_vars/rbdmirrors.yml.sample
からgroup_vars/rbdmirrors.yml
にコピーして、新しいrbdmirrors.yml
ファイルを作成します。[root@admin ceph-ansible]# cp group_vars/rbdmirrors.yml.sample group_vars/rbdmirrors.yml
-
group_vars/rbdmirrors.yml
ファイルを開いて編集します。 ceph_rbd_mirror_configure
をtrue
に設定します。ceph_rbd_mirror_pool
は、イメージをミラーリングするプールに設定します。この例では、data
はプールの名前です。ceph_rbd_mirror_configure: true ceph_rbd_mirror_pool: "data"
デフォルトでは、
ceph-ansible
はプール内の全イメージをミラーリングするプールモードを使用してミラーリングを設定します。ミラーリングが明示的に有効になっているイメージのみがミラーリングされるイメージモードを有効にします。イメージモードを有効にするには、ceph_rbd_mirror_mode
をimage
に設定します。ceph_rbd_mirror_mode: image
rbd-mirror
がプルするクラスターの名前を設定します。以下の例では、他のクラスターはsite-a
です。ceph_rbd_mirror_remote_cluster: "site-a"
Ansible 管理ノードで、
ceph_rbd_mirror_remote_user
を使用してキーのユーザー名を設定します。キーの作成時に使用した同じ名前を使用します。この例では、ユーザーの名前はclient.site-a
です。ceph_rbd_mirror_remote_user: "client.site-a"
ceph-ansible ユーザーとして、Ansible Playbook を実行します。
ベアメタルデプロイメント
[user@admin ceph-ansible]$ ansible-playbook site.yml --limit rbdmirrors -i hosts
コンテナーデプロイメント
[ansible@admin ceph-ansible]$ ansible-playbook site-container.yml --limit rbdmirrors -i hosts
-
Ansible 管理ノードで、Ansible インベントリーファイルに
site-a
クラスターとsite-b
クラスターの両方で、必要なイメージのミラーリングを明示的に有効にします。構文
ジャーナルベースのミラーリング
rbd mirror image enable POOL/IMAGE
スナップショットベースのミラーリング
rbd mirror image enable POOL/IMAGE snapshot
例
[root@mon ~]# rbd mirror image enable data/image1 [root@mon ~]# rbd mirror image enable data/image1 snapshot
注記新規イメージをピアクラスターにミラーリングする場合は常にこの手順を繰り返します。
ミラーリングのステータスを確認します。
site-b
クラスターの Ceph Monitor ノードから以下のコマンドを実行します。例
ジャーナルベースのミラーリング
[root@mon ~]# 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: 2019-04-22 13:19:27
スナップショットベースのミラーリング
[root@mon ~]# 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
注記サイト間の接続によって、ミラーリングでイメージの同期に時間がかかる場合があります。