5.8.12. バケットの詳細な同期ポリシーの使用
バケットまたはゾーングループの同期ポリシーが無効状態から有効状態に移行すると、次の動作の変化が見られます。
6.1 のバケット詳細同期ポリシーの GA リリースで、合意され、制限されたスコープにより、次の機能がサポートされるようになりました。
- グリーンフィールドデプロイメント: このリリースでは、新しいマルチサイトデプロイメントのみがサポートされています。バケットの詳細な同期レプリケーションを設定するには、少なくとも新しいゾーングループ/ゾーンを設定する必要があります。このリリースでは、デプロイメント/実行中の RGW マルチサイトレプリケーション設定を、新しく機能する RGW バケット同期ポリシーレプリケーションに移行することはできないことに注意してください。
- データフロー - 対称: 単方向レプリケーションと双方向/対称レプリケーションの両方を設定できますが、このリリースでは対称レプリケーションフローのみがサポートされています。
-
1 対 1 バケットのレプリケーション: 現在、同じ名前のバケット間のレプリケーションのみがサポートされています。これは、サイト A のバケットの名前が
bucket1の場合、サイト B のバケット 1 にのみbucket1できることを意味します。別のゾーンのbucket1からbucket2へのレプリケーションは現在サポートされていません。
次の機能はサポートされていません。
- Source フィルター
- Storage class
- Destination owner translation
- User mode
通常シナリオ:
- ゾーングループレベル: 同期ポリシーが 無効になっている ときに書き込まれたデータは、追加の手順を行わなくても、有効になる とすぐにキャッチアップします。
バケットレベル: 同期ポリシーが 無効な ときに書き込まれたデータは、ポリシーが 有効な ときにはキャッチアップしません。この場合、次の 2 つの回避策のいずれかを適用できます。
- 新しいデータをバケットに書き込むと、古いデータが再同期されます。
-
bucket sync runコマンドを実行すると、すべての古いデータが同期されます。
同期ポリシーからレガシーポリシーに切り替える場合は、最初に sync init コマンドを実行し、続いて radosgw-admin bucket sync run コマンドを実行してすべてのオブジェクトを同期する必要があります。
リシャードシナリオ:
- ゾーングループレベル: ポリシーが 無効に なっているときに発生するリシャードは、後で 有効になった ときの同期には影響しません。
バケットレベル: ポリシーが 無効になっている ときにバケットがリシャーディングされると、ポリシーが再度 有効になった 後に同期が停止します。この時点では、新しいオブジェクトも同期しません。この場合、次の回避策に従ってください。
-
bucket sync runコマンドを実行します。
-
ゾーングループに対してポリシーが enabled に設定され、バケットに対してポリシーが enabled または allowed に設定されている場合、パイプ設定はバケットレベルではなくゾーングループレベルから有効になります。これは既知の問題です (BZ#2240719)。
前提条件
- 稼働中の Red Hat Ceph Storage クラスターがある。
-
root または
sudoアクセス。 - Ceph Object Gateway がインストールされている。
ゾーングループ同期双方向ポリシー
ゾーングループ同期ポリシーは、新しい同期ポリシーエンジンを使用して作成されます。ゾーングループ同期ポリシーを変更するには、期間の更新とコミットが必要です。
次の例では、グループポリシーが作成され、あるゾーングループから別のゾーングループにデータを移動するためのデータフローが定義されています。それに加えて、ゾーングループのパイプは、このデータフローを使用できるバケットを定義するように設定されます。以下の例のシステムには、us-east (マスターゾーン)、us-west、および us-west-2 の 3 つのゾーンが含まれています。
手順
ステータスを allowed に設定して新しい同期グループを作成します。
例
[ceph: root@host01 /]# radosgw-admin sync group create --group-id=group1 --status=allowed注記完全に設定されたゾーングループレプリケーションポリシーが作成されるまでは、レプリケーションが開始されないように --status を
allowedに設定することを推奨します。--flow-type を
symmetricalとして設定して、新しく作成したグループのフローポリシーを作成し、双方向レプリケーションを有効にします。例
[ceph: root@host01 /]# radosgw-admin sync group flow create --group-id=group1 \ --flow-id=flow-mirror --flow-type=symmetrical \ --zones=us-east,us-westpipeという名前の新しいパイプを作成します。例
[ceph: root@host01 /]# radosgw-admin sync group pipe create --group-id=group1 \ --pipe-id=pipe1 --source-zones='*' \ --source-bucket='*' --dest-zones='*' \ --dest-bucket='*'注記以前のフローポリシーで設定されたすべてのゾーンを含めるにはゾーンに * ワイルドカードを使用し、ゾーン内のすべての既存のバケットを複製するにはバケットに * を使用します。
バケット同期ポリシーを設定した後、--status を Enabled に設定します。
例
[ceph: root@host01 /]# radosgw-admin sync group modify --group-id=group1 --status=enabled新しい期間を更新してコミットします。
例
[ceph: root@host01 /]# radosgw-admin period update --commit注記期間の更新とコミットは、ゾーングループポリシーでは必須です。
オプション:
sync info --bucket=bucket_nameコマンドを実行して、特定のバケットの同期元と同期先を確認します。us-east および us-west ゾーン内のすべてのバケットは双方向にレプリケートされます。例
[ceph: root@host01 /]# radosgw-admin sync info --bucket=buck { "sources": [ { "id": "pipe1", "source": { "zone": "us-west", "bucket": "buck:115b12b3-....4409.1" }, "dest": { "zone": "us-east", "bucket": "buck:115b12b3-....4409.1" }, "params": { ... } } ], "dests": [ { "id": "pipe1", "source": { "zone": "us-east", "bucket": "buck:115b12b3-....4409.1" }, "dest": { "zone": "us-west", "bucket": "buck:115b12b3-....4409.1" }, ... } ], ... }上記の出力の id フィールドは、そのエントリーを生成したパイプルールを反映しています。以下の例に示すように、1 つのルールで複数の同期エントリーを生成できます。
-
オプション:
sync infoコマンドを実行して、ポリシーで定義されている、予期されるバケット同期ソースおよびターゲットに関する情報を取得します。
[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"
},
...
}
],
...
}
バケット同期双方向ポリシー
バケットレベルのポリシーのデータフローは、ゾーングループポリシーから継承されます。バケットレベルのポリシーのフローとパイプは、ゾーングループポリシーで定義されたフローのサブセットにすぎないため、バケットレベルのポリシーのデータフローとパイプを変更する必要はありません。
- バケットレベルのポリシーでは、ゾーングループポリシーで 禁止されている パイプを除き、有効になっていないパイプを 有効にする ことができます。
- バケットレベルのポリシーでは期間の更新は必要ありません。
手順
ゾーングループポリシー --status をallowed に設定して、バケットごとのレプリケーションを許可します。
例
[ceph: root@host01 /]# radosgw-admin sync group modify --group-id=group1 --status=allowedゾーングループポリシーを変更した後、期間を更新します。
例
[ceph: root@host01 /]# radosgw-admin period update --commit同期するバケットの同期グループを作成し、--status を Enabled に設定します。
例
[ceph: root@host01 /]# radosgw-admin sync group create --bucket=buck \ --group-id=buck-default --status=enabled前の手順で作成したグループのパイプを作成します。
例
[ceph: root@host01 /]# radosgw-admin sync group pipe create --bucket=buck \ --group-id=buck-default --pipe-id=pipe1 \ --source-zones='*' --dest-zones='*'注記ワイルドカード * を使用して、バケットレプリケーションのソースゾーンと宛先ゾーンを指定します。
オプション: 同期ポリシーで定義されている、想定されるバケット同期ソースおよびターゲットに関する情報を取得するには、--bucket フラグを指定して
radosgw-admin Bucket sync infoコマンドを実行します。例
[ceph: root@host01 /]# radosgw-admin bucket sync info --bucket buck realm 33157555-f387-44fc-b4b4-3f9c0b32cd66 (india) zonegroup 594f1f63-de6f-4e1e-90b6-105114d7ad55 (shared) zone ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5 (primary) bucket :buck[ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1] source zone e0e75beb-4e28-45ff-8d48-9710de06dcd0 bucket :buck[ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1]オプション: 同期ポリシーで定義されている、想定される同期ソースおよびターゲットに関する情報を取得するには、--bucket フラグを指定して
radosgw-admin sync infoコマンドを実行します。例
[ceph: root@host01 /]# radosgw-admin sync info --bucket buck { "id": "pipe1", "source": { "zone": "secondary", "bucket": "buck:ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1" }, "dest": { "zone": "primary", "bucket": "buck:ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1" }, "params": { "source": { "filter": { "tags": [] } }, "dest": {}, "priority": 0, "mode": "system", "user": "" } }, { "id": "pipe1", "source": { "zone": "primary", "bucket": "buck:ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1" }, "dest": { "zone": "secondary", "bucket": "buck:ffaa5ba4-c1bd-4c17-b176-2fe34004b4c5.16191.1" }, "params": { "source": { "filter": { "tags": [] } }, "dest": {}, "priority": 0, "mode": "system", "user": "" } }
同期情報とともにポリシーを無効にする
場合によって、2 つのバケット間のレプリケーションを中断するには、バケットのグループポリシーを forbidden に設定します。
手順
sync group modifyコマンドを実行してステータスを allowed から forbidden に変更し、us-east ゾーンと us-west ゾーンの間のバケットのレプリケーションを中断します。例
[ceph: root@host01 /]# radosgw-admin sync group modify --group-id buck-default --status forbidden --bucket buck { "groups": [ { "id": "buck-default", "data_flow": {}, "pipes": [ { "id": "pipe1", "source": { "bucket": "*", "zones": [ "*" ] }, "dest": { "bucket": "*", "zones": [ "*" ] }, "params": { "source": { "filter": { "tags": [] } }, "dest": {}, "priority": 0, "mode": "system", } } ], "status": "forbidden" } ] }注記これはバケット同期ポリシーであるため、その期間の更新とコミットは必要ありません。
オプション:
sync info commandコマンドを実行して、バケットbuckの同期のステータスを確認します。例
[ceph: root@host01 /]# radosgw-admin sync info --bucket buck { "sources": [], "dests": [], "hints": { "sources": [], "dests": [] }, "resolved-hints-1": { "sources": [], "dests": [] }, "resolved-hints": { "sources": [], "dests": [] } } Sync is disabled for bucket buck注記レプリケーションが中断されているため、ソースおよび宛先のターゲットはありません。