5.7. マルチサイト同期ポリシーの使用
ストレージ管理者は、バケットレベルでマルチサイト同期ポリシーを使用して、異なるゾーンのバケット間のデータ移動を制御できます。このようなポリシーは、バケット粒度同期ポリシーと呼ばれます。これまでは、ゾーン内のすべてのバケットが対称的に扱われていました。これは、各ゾーンに指定のバケットのミラーコピーが含まれ、バケットのコピーはすべてのゾーンで同一であることを意味します。同期プロセスでは、バケット同期ソースとバケット同期宛先が同じバケットを参照していることが前提となっています。
バケット同期ポリシーはデータのみに適用され、バケット同期ポリシーの存在に関係なく、マルチサイト内のすべてのゾーンでメタデータが同期されます。バケット同期ポリシーが allowed
または forbidden
の場合に作成、変更、または削除されたオブジェクトは、ポリシーが有効になったときに自動的に同期されません。これらのオブジェクトを同期するには、bucket sync run
コマンドを実行します。
ゾーングループレベルで複数の同期ポリシーが定義されている場合、同時に有効な状態にできるポリシーは 1 つだけです。必要に応じてポリシーを切り替えることができます。
同期ポリシーは、古いゾーングループ設定 (sync_from*
) よりも優先されます。同期ポリシーは、ゾーングループレベルで設定できます。これが設定されていると、ゾーングループレベルで旧スタイルの設定を置き換えますが、バケットレベルでも設定できます。
バケット同期ポリシーはアーカイブゾーンに適用されます。アーカイブゾーンからの移動は双方向ではなく、すべてのオブジェクトをアクティブゾーンからアーカイブゾーンに移動できます。ただし、アーカイブゾーンは読み取り専用であるため、アーカイブゾーンからアクティブゾーンにオブジェクトを移動することはできません。
ゾーングループのバケット同期ポリシーの例
[ceph: root@host01 /]# radosgw-admin sync info --bucket=buck { "sources": [ { "id": "pipe1", "source": { "zone": "us-east", "bucket": "buck:115b12b3-....4409.1" }, "dest": { "zone": "us-west", "bucket": "buck:115b12b3-....4409.1" }, ... } ], "dests": [ { "id": "pipe1", "source": { "zone": "us-west", "bucket": "buck:115b12b3-....4409.1" }, "dest": { "zone": "us-east", "bucket": "buck:115b12b3-....4409.1" }, ... }, { "id": "pipe1", "source": { "zone": "us-west", "bucket": "buck:115b12b3-....4409.1" }, "dest": { "zone": "us-west-2", "bucket": "buck:115b12b3-....4409.1" }, ... } ], ... }
前提条件
- Red Hat Ceph Storage クラスターが実行されている。
- Ceph Monitor ノードへの root レベルのアクセス。
- Ceph Object Gateway ソフトウェアのインストール。
5.7.1. マルチサイト同期ポリシーグループの状態
同期ポリシーでは、データフロー設定のリストを含む複数のグループと、パイプ設定のリストを定義することができます。データフローは、異なるゾーン間のデータの流れを定義します。複数のゾーンが互いにデータを同期する対称的なデータフローを定義でき、データが 1 つのゾーンから別のゾーンに一方向に移動する指向性データフローを定義できます。
パイプは、これらのデータフローを使用することができる実際のバケットと、それに関連付けられるプロパティーを定義します (例: ソースオブジェクト接頭辞)。
同期ポリシーグループには 3 つの状態があります。
-
enabled
- 同期が許可され、有効になっています。 -
allowed
- 同期が許可されています。 -
forbidden
- このグループで定義されている同期は、許可されません。
ゾーンがレプリケートされる場合、同期ポリシーを使用して特定のバケットのレプリケーションを無効にすることができます。ポリシーの競合を解決するには、次のセマンティクスに従う必要があります。
Zonegroup | Bucket | 結果 |
---|---|---|
enabled | enabled | enabled |
enabled | allowed | enabled |
enabled | forbidden | disabled |
allowed | enabled | enabled |
allowed | allowed | disabled |
allowed | forbidden | disabled |
forbidden | enabled | disabled |
forbidden | allowed | disabled |
forbidden | forbidden | disabled |
任意の同期ペア (SOURCE_ZONE、SOURCE_BUCKET)、(DESTINATION_ZONE、DESTINATION_BUCKET) を反映するように設定されている複数のグループポリシーの場合、次のルールが次の順序で適用されます。
-
1 つの同期ポリシーが
forbidden
の場合でも、同期はdisabled
になります。 -
同期を
allowed
にするには、少なくとも 1 つのポリシーをenabled
にする必要があります。
このグループの同期状態は、他のグループよりも優先されます。
ポリシーはバケットレベルで定義できます。バケットレベルの同期ポリシーはゾーングループポリシーのデータフローを継承するため、ゾーングループで許可されるもののサブセットのみを定義できます。
ワイルドカードゾーンおよびポリシーのワイルドカードバケットパラメーターは、すべての関連するゾーンまたは関連するバケットをすべて定義します。バケットポリシーのコンテキストでは、現在のバケットインスタンスを意味します。ゾーン全体がミラーリングされている障害復旧設定では、バケットに何も設定する必要がありません。ただし、きめ細かいバケット同期の場合は、ゾーングループレベルで (たとえば、ワイルドカードを使用して) パイプを許可 (status=allowed
) して同期するように設定することを推奨します。ただし、特定の同期はバケットレベル (status=enabled
) でのみ有効にします。必要に応じて、バケットレベルのポリシーで、データの移動を特定の関連ゾーンに制限することができます。
ゾーングループポリシーの変更は、ゾーングループマスターゾーンに適用する必要があり、期間更新とコミットが必要です。バケットポリシーへの変更は、ゾーングループマスターゾーンに適用する必要があります。Ceph Object Gateway はこれらの変更を動的に処理します。
S3 バケットレプリケーション API
S3 バケットレプリケーション API も実装され、ユーザーは異なるバケット間でレプリケーションルールを作成できるようになりました。AWS レプリケーション機能により、同じゾーン内のバケットレプリケーションが許可されますが、現時点では Ceph Object Gateway は許可しません。ただし、Ceph Object Gateway API には、特定のバケットを同期するゾーンをユーザーが選択できる Zone
配列も追加されました。
関連情報
- 詳細については、S3 バケットレプリケーション API を参照してください。
5.7.2. 現在のポリシーの取得
get
コマンドを使用して、現在のゾーングループ同期ポリシーまたは特定のバケットポリシーを取得できます。
前提条件
- Red Hat Ceph Storage クラスターが実行されている。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
手順
現在のゾーングループ同期ポリシーまたはバケットポリシーを取得します。特定のバケットポリシーを取得するには、
--bucket
オプションを使用します。構文
radosgw-admin sync policy get --bucket=BUCKET_NAME
例
[ceph: root@host01 /]# radosgw-admin sync policy get --bucket=mybucket
5.7.3. 同期ポリシーグループの作成
現在のゾーングループまたは特定のバケットの同期ポリシーグループを作成できます。
forbidden
から enabled
に変更になった同期ポリシーグループのバケット詳細レプリケーションの同期ポリシーを作成する場合は、同期プロセスを完了するために手動更新が必要になる場合があります。
たとえば、ポリシーが forbidden
になっているときにデータが bucket1
に書き込まれる場合は、ポリシーが enabled
に変更した後、データがゾーン間で適切に同期されない可能性があります。変更を適切に同期するには、同期ポリシーに対して bucket sync run
コマンドを実行します。この手順は、ポリシーが forbidden
ときにバケットが再シャーディングされる場合にも必要です。この場合、ポリシーを有効にした後に、bucket sync run
コマンドも使用する必要があります。
前提条件
- Red Hat Ceph Storage クラスターが実行されている。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
- アーカイブゾーンを作成する場合は、同期ポリシーグループの前にアーカイブゾーンが作成されていることを確認してください。
手順
同期ポリシーグループまたはバケットポリシーを作成します。バケットポリシーを作成するには、
--bucket
オプションを使用します。構文
radosgw-admin sync group create --bucket=BUCKET_NAME --group-id=GROUP_ID --status=enabled | allowed | forbidden
例
[ceph: root@host01 /]# radosgw-admin sync group create --group-id=mygroup1 --status=enabled
オプション: バケットの詳細なレプリケーションの同期プロセスを手動で完了します。
注記ポリシーにデータが書き込まれている場合、またはポリシーが
forbidden
になっているときにバケットが再シャーディングされた場合は、バケットの詳細なレプリケーションを備えたアーカイブゾーンの一部として使用する場合は、この手順が必須です。構文
radosgw-admin bucket sync run
例
[ceph: root@host01 /]# radosgw-admin bucket sync run
関連情報
アーカイブゾーンとバケットの詳細なレプリケーションの設定の詳細は、アーカイブゾーンの設定 を参照してください。
5.7.4. 同期ポリシーグループの変更
現在のゾーングループの既存の同期ポリシーグループまたは特定のバケットに対して変更できます。
forbidden
から enabled
に変更になった同期ポリシーグループのバケット詳細レプリケーションの同期ポリシーを変更する場合は、同期プロセスを完了するのに手動更新が必要になる場合があります。
たとえば、ポリシーが forbidden
になっているときにデータが bucket1
に書き込まれる場合は、ポリシーが enabled
に変更した後、データがゾーン間で適切に同期されない可能性があります。変更を適切に同期するには、同期ポリシーに対して bucket sync run
コマンドを実行します。この手順は、ポリシーが forbidden
ときにバケットが再シャーディングされる場合にも必要です。この場合、ポリシーを有効にした後に、bucket sync run
コマンドも使用する必要があります。
前提条件
- Red Hat Ceph Storage クラスターが実行されている。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
- アーカイブゾーンを変更する場合は、同期ポリシーグループよりも前にアーカイブゾーンが作成されていることを確認してください。
手順
同期ポリシーグループまたはバケットポリシーを変更します。バケットポリシーを変更するには、
--bucket
オプションを使用します。構文
radosgw-admin sync group modify --bucket=BUCKET_NAME --group-id=GROUP_ID --status=enabled | allowed | forbidden
例
[ceph: root@host01 /]# radosgw-admin sync group modify --group-id=mygroup1 --status=forbidden
オプション: バケットの詳細なレプリケーションの同期プロセスを手動で完了します。
注記ポリシーにデータが書き込まれている場合、またはポリシーが
forbidden
になっているときにバケットが再シャーディングされた場合は、バケットの詳細なレプリケーションを備えたアーカイブゾーンの一部として使用する場合は、この手順が必須です。構文
radosgw-admin bucket sync run
例
[ceph: root@host01 /]# radosgw-admin bucket sync run
関連情報
アーカイブゾーンとバケットの詳細なレプリケーションの設定の詳細は、アーカイブゾーンの設定 を参照してください。
5.7.5. 同期ポリシーグループの取得
group get
コマンドを使用して、グループ ID で現在の同期ポリシーグループを表示するか、特定のバケットポリシーを表示できます。
--bucket
オプションを指定しない場合は、バケットレベルのグループではなく、ゾーングループレベルで作成されたグループが取得されます。
前提条件
- Red Hat Ceph Storage クラスターが実行されている。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
手順
現在の同期ポリシーグループまたはバケットポリシーを表示します。特定のバケットポリシーを表示するには、
--bucket
オプションを使用します。構文
radosgw-admin sync group get --bucket=BUCKET_NAME --group-id=GROUP_ID
例
[ceph: root@host01 /]# radosgw-admin sync group get --group-id=mygroup
5.7.6. 同期ポリシーグループの削除
group remove
コマンドを使用して、グループ ID で現在の同期ポリシーグループを削除したり、特定のバケットポリシーを削除したりできます。
前提条件
- Red Hat Ceph Storage クラスターが実行されている。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
手順
現在の同期ポリシーグループまたはバケットポリシーを削除します。特定のバケットポリシーを削除するには、
--bucket
オプションを使用します。構文
radosgw-admin sync group remove --bucket=BUCKET_NAME --group-id=GROUP_ID
例
[ceph: root@host01 /]# radosgw-admin sync group remove --group-id=mygroup
5.7.7. 同期フローの作成
同期ポリシーグループまたは特定のバケットに、異なるタイプのフローを作成できます。
- 指向性同期フロー
- 対称同期フロー
group flow create
コマンドは、同期フローを作成します。すでに同期フローがある同期ポリシーグループまたはバケットに対して group flow create
コマンドを発行すると、コマンドは同期フローの既存の設定を上書きし、指定した設定を適用します。
オプション | 説明 | 必須/オプション |
---|---|---|
--bucket | 同期ポリシーを設定する必要があるバケットの名前。バケットレベルの同期ポリシーでのみ使用されます。 | 任意 |
--group-id | 同期グループの ID。 | 必須 |
--flow-id | フローの ID。 | 必須 |
--flow-type | 同期ポリシーグループまたは特定のバケットのフロータイプ (指向性または対称性)。 | 必須 |
--source-zone | 同期元となるソースゾーンを指定します。同期グループにデータを送信するゾーンです。同期グループのフロータイプが指向性である場合は必須です。 | 任意 |
--dest-zone | 同期先となる宛先ゾーンを指定します。同期グループからデータを受信するゾーンです。同期グループのフロータイプが指向性である場合は必須です。 | 任意 |
--zones | 同期グループの一部であるゾーン。ゾーンは、送信側ゾーンと受信側ゾーンの両方に言及します。ゾーンは "," で区切って指定します。同期グループのフロータイプが対称の場合は必須です。 | 任意 |
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
手順
指向性同期フローを作成または更新します。特定のバケットへの指向性同期フローを作成または更新するには、
--bucket
オプションを使用します。構文
radosgw-admin sync group flow create --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=directional --source-zone=SOURCE_ZONE --dest-zone=DESTINATION_ZONE
対称同期フローを作成または更新します。対称フロータイプに複数のゾーンを指定するには、
--zones
オプションにコンマ区切りのリストを使用します。構文
radosgw-admin sync group flow create --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME1,ZONE_NAME2
zones
は、フローに追加する必要があるすべてのゾーンのコンマ区切りのリストです。
5.7.8. 同期フローおよびゾーンの削除
group flow remove
コマンドは、同期ポリシーグループまたはバケットから同期フローまたはゾーンを削除します。
指向性フローを使用する同期ポリシーグループまたはバケットの場合は、group flow remove
コマンドによりフローが削除されます。対称フローを使用した同期ポリシーグループまたはバケットについては、group flow remove
コマンドを使用してフローから指定されたゾーンを削除したり、フローを削除したりできます。
前提条件
- Red Hat Ceph Storage クラスターが実行されている。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
手順
指向性同期フローを削除します。特定のバケットの指向性同期フローを削除するには、
--bucket
オプションを使用します。構文
radosgw-admin sync group flow remove --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=directional --source-zone=SOURCE_ZONE --dest-zone=DESTINATION_ZONE
対称同期フローから特定のゾーンを削除します。対称フローから複数のゾーンを削除するには、
--zones
オプションにコンマ区切りのリストを使用します。構文
radosgw-admin sync group flow remove --bucket=BUCKET_NAME --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME1,ZONE_NAME2
対称同期フローを削除します。ゾーングループレベルで同期フローを削除するには、
--bucket
オプションを削除します。構文
radosgw-admin sync group flow remove --group-id=GROUP_ID --flow-id=FLOW_ID --flow-type=symmetrical --zones=ZONE_NAME1,ZONE_NAME2
5.7.9. 同期グループパイプの作成または変更
ストレージ管理者は、パイプを定義して、設定したデータフローと、これらのデータフローに関連するプロパティーを使用できるバケットを指定できます。
sync group pipe create
コマンドを使用すると、パイプを作成できます。パイプは、特定のバケットまたはバケットのグループ間、または特定のゾーンまたはゾーンのグループ間のカスタム同期グループデータフローです。
コマンドは、以下のオプションを使用します。
オプション | 説明 | 必須/オプション |
---|---|---|
--bucket | 同期ポリシーを設定する必要があるバケットの名前。バケットレベルの同期ポリシーでのみ使用されます。 | 任意 |
--group-id | 同期グループの ID | 必須 |
--pipe-id | パイプの ID | 必須 |
--source-zones |
データを同期グループに送信するゾーン。値には一重引用符 (') を使用します。複数のゾーンを分離する場合はコンマで区切ります。データフロールールに一致するすべてのゾーンに、ワイルドカード | 必須 |
--source-bucket |
データを同期グループに追加する 1 つまたは複数のバケット。バケット名を指定しない場合は、 | 任意 |
--source-bucket-id | ソースバケットの ID。 | 任意 |
--dest-zones |
同期データを受け取る 1 つまたは複数のゾーン。値には一重引用符 (') を使用します。複数のゾーンを分離する場合はコンマで区切ります。データフロールールに一致するすべてのゾーンに、ワイルドカード | 必須 |
--dest-bucket |
同期データを受け取る 1 つまたは複数のバケット。バケット名を指定しない場合は、 | 任意 |
--dest-bucket-id | 宛先バケットの ID。 | 任意 |
--prefix |
バケットの接頭辞。ワイルドカード | 任意 |
--prefix-rm | フィルタリングにバケット接頭辞を使用しないでください。 | 任意 |
--tags-add | key=value ペアのコンマ区切りリスト。 | 任意 |
--tags-rm | タグの 1 つ以上の key=value ペアを削除します。 | 任意 |
--dest-owner | ソースからオブジェクトの宛先所有者。 | 任意 |
--storage-class | ソースからのオブジェクトのための宛先ストレージクラス。 | 任意 |
--mode |
システムモードまたはユーザーモードでそれぞれ | 任意 |
--uid | ユーザーモードでパーミッションの検証に使用されます。同期操作を発行するユーザー ID を指定します。 | 任意 |
ゾーングループレベルで特定のバケットの同期を有効/無効にしたい場合は、ゾーングループレベルの同期ポリシーを有効/無効に設定し、同じバケット名の --source-bucket
と --dest-bucket
、または bucket-id
(つまり --source-bucket-id
と --dest-bucket-id
) を使用して、バケットごとにパイプを作成します。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
手順
同期グループパイプを作成します。
create
コマンドは、関連するオプションのみを指定して同期グループパイプを作成することにより、コマンドを更新するためにも使用されます。構文
radosgw-admin sync group pipe create --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones='ZONE_NAME','ZONE_NAME2'... --source-bucket=SOURCE_BUCKET --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET --dest-bucket-id=DESTINATION_BUCKET_ID --prefix=SOURCE_PREFIX --prefix-rm --tags-add=KEY1=VALUE1,KEY2=VALUE2,.. --tags-rm=KEY1=VALUE1,KEY2=VALUE2, ... --dest-owner=OWNER_ID --storage-class=STORAGE_CLASS --mode=USER --uid=USER_ID
5.7.10. 同期グループパイプの変更または削除
ストレージ管理者は、sync group pipe modify
コマンドまたは sync group pipe remove
コマンドを使用して、特定のオプションを削除して同期グループパイプを変更できます。sync group pipe remove
コマンドを使用して、ゾーン、バケット、または同期グループパイプを完全に削除することもできます。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
手順
同期グループのパイプオプションを
modify
引数で変更します。構文
radosgw-admin sync group pipe modify --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones='ZONE_NAME','ZONE_NAME2'... --source-bucket=SOURCE_BUCKET1 --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET1 --dest-bucket-id=_DESTINATION_BUCKET-ID
注記ゾーンは必ず一重引用符 (') で囲んでください。ソースバケットには引用符は必要ありません。
例
[root@host01 ~]# radosgw-admin sync group pipe modify --group-id=zonegroup --pipe-id=pipe --dest-zones='primary','secondary','tertiary' --source-zones='primary','secondary','tertiary' --source-bucket=pri-bkt-1 --dest-bucket=pri-bkt-1
同期グループのパイプオプションを、
remove
引数を使用して変更します。構文
radosgw-admin sync group pipe remove --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID --source-zones='ZONE_NAME','ZONE_NAME2'... --source-bucket=SOURCE_BUCKET, --source-bucket-id=SOURCE_BUCKET_ID --dest-zones='ZONE_NAME','ZONE_NAME2'... --dest-bucket=DESTINATION_BUCKET --dest-bucket-id=DESTINATION_BUCKET-ID
例
[root@host01 ~]# radosgw-admin sync group pipe remove --group-id=zonegroup --pipe-id=pipe --dest-zones='primary','secondary','tertiary' --source-zones='primary','secondary','tertiary' --source-bucket=pri-bkt-1 --dest-bucket=pri-bkt-1
同期グループパイプを削除します。
構文
radosgw-admin sync group pipe remove --bucket=BUCKET_NAME --group-id=GROUP_ID --pipe-id=PIPE_ID
例
[root@host01 ~]# radosgw-admin sync group pipe remove -bucket-name=mybuck --group-id=zonegroup --pipe-id=pipe
5.7.11. 同期操作に関する情報の取得
sync info
コマンドを使用すると、同期ポリシーで定義されているように、予想される同期のソースとターゲットに関する情報を取得できます。
バケットの同期ポリシーを作成する場合、そのポリシーはそのバケットから異なるゾーンの別のバケットにデータを移動する方法を定義します。ポリシーを作成すると、バケットを別のバケットと同期するたびにヒントとして使用されるバケット依存関係のリストも作成されます。同期はデータフローが同期を許可しているかどうかによって決まるため、あるバケットが別のバケットを参照していても、実際にはそのバケットと同期していないことがあることに注意してください。
--bucket
パラメーターおよび effective-zone-name
パラメーターはいずれも任意です。オプションを指定せずに sync info
コマンドを実行すると、Object Gateway はすべてのゾーンの同期ポリシーによって定義されたすべての同期操作を返します。
前提条件
- Red Hat Ceph Storage クラスターが実行されている。
-
root または
sudo
アクセス。 - Ceph Object Gateway がインストールされている。
- グループ同期ポリシーが定義されています。
手順
バケットの同期操作に関する情報を取得します。
構文
radosgw-admin sync info --bucket=BUCKET_NAME --effective-zone-name=ZONE_NAME
ゾーングループレベルでの同期操作に関する情報を取得します。
構文
radosgw-admin sync info