クロスグリッドレプリケーションとは何ですか。
グリッド間レプリケーションは、に接続された2つのStorageGRID システム内の選択したS3バケット間でオブジェクトを自動的にレプリケートするレプリケーションです "グリッドフェデレーション接続"。 "アカウントのクローン" は、グリッド間レプリケーションに必要です。
グリッド間レプリケーションのワークフロー
次のワークフロー図は、2つのグリッド上のバケット間でグリッド間レプリケーションを設定する手順をまとめたものです。
グリッド間レプリケーションの要件
テナントアカウントに「Use grid federation connection *」権限が割り当てられている場合に1つ以上を使用します "グリッドフェデレーション接続"では、Root Access権限を持つテナントユーザは、各グリッドの対応するテナントアカウントに同一のバケットを作成できます。次のバケットがあります。
-
名前とリージョンが同じである必要があります
-
バージョン管理が有効になっている必要があります
-
S3オブジェクトロックを無効にする必要があります
-
空にする必要があります
両方のバケットが作成されたら、一方または両方のバケットに対してクロスグリッドレプリケーションを設定できます。
グリッド間レプリケーションの仕組み
グリッド間レプリケーションは、一方向または双方向に実行するように設定できます。
一方向のレプリケーション
あるバケットでグリッド間レプリケーションを有効にしたグリッドが1つだけの場合は、そのバケット(ソースバケット)に追加されたオブジェクトがもう一方のグリッド(デスティネーションバケット)の対応するバケットにレプリケートされます。ただし、デスティネーションバケットに追加されたオブジェクトはソースにレプリケートされません。次の図では、に対してグリッド間レプリケーションが有効になっています my-bucket
グリッド1からグリッド2までですが、反対方向では有効になっていません。
双方向のレプリケーション
両方のグリッドで同じバケットに対してクロスグリッドレプリケーションを有効にすると、一方のバケットに追加されたオブジェクトがもう一方のグリッドにレプリケートされます。次の図では、に対してグリッド間レプリケーションが有効になっています my-bucket
両方向に。
オブジェクトが取り込まれるとどうなりますか?
S3クライアントが、クロスグリッドレプリケーションが有効になっているバケットにオブジェクトを追加すると、次の処理が実行されます。
-
StorageGRID は、ソースバケットからデスティネーションバケットにオブジェクトを自動的にレプリケートします。このバックグラウンドレプリケーション処理の実行時間は、保留中の他のレプリケーション処理の数など、いくつかの要因によって異なります。
S3クライアントは、GET Object要求またはHEAD Object要求を発行して、オブジェクトのレプリケーションステータスを確認できます。応答にはStorageGRID固有のものが含まれます
x-ntap-sg-cgr-replication-status
応答ヘッダーには次のいずれかの値が表示されます。S3クライアントは、GET Object要求またはHEAD Object要求を実行してオブジェクトのレプリケーションステータスを確認できます。応答にはStorageGRID固有のものが含まれますx-ntap-sg-cgr-replication-status
応答ヘッダー。次のいずれかの値が設定されます。グリッド( Grid ) レプリケーションのステータス ソース
-
成功:すべてのグリッド接続でレプリケーションが成功しました。
-
* pending *:オブジェクトは少なくとも1つのグリッド接続にレプリケートされていません。
-
失敗:どのグリッド接続に対してもレプリケーションが保留中ではなく、少なくとも1つが永続的なエラーで失敗しました。ユーザーはエラーを解決する必要があります。
宛先
replica:オブジェクトはソースグリッドからレプリケートされました。
StorageGRID ではがサポートされません x-amz-replication-status
ヘッダー。 -
-
StorageGRID は、他のオブジェクトと同様に、各グリッドのアクティブなILMポリシーを使用してオブジェクトを管理します。たとえば、グリッド1のオブジェクトAは2つのレプリケートコピーとして格納されて無期限に保持されるのに対し、グリッド2にレプリケートされたオブジェクトAのコピーは2+1のイレイジャーコーディングを使用して格納され、3年後に削除されるとします。
オブジェクトが削除されるとどうなりますか?
を参照してください "データフローを削除します"StorageGRID は、次のいずれかの理由でオブジェクトを削除できます。
-
S3クライアントが削除要求を実行します。
-
Tenant Managerユーザがを選択します "バケット内のオブジェクトを削除する" バケットからすべてのオブジェクトを削除するオプション。
-
バケットにはライフサイクル設定があり、有効期限が切れます。
-
オブジェクトのILMルールの最後の期間が終了し、それ以上の配置が指定されていない。
[Delete objects in bucket]処理、バケットライフサイクルの有効期限、またはILM配置の有効期限が原因でStorageGRID がオブジェクトを削除しても、レプリケートオブジェクトがグリッドフェデレーション接続の他のグリッドから削除されることはありません。ただし、S3クライアントによる削除によってソースバケットに追加された削除マーカーは、必要に応じてデスティネーションバケットにレプリケートできます。
クロスグリッドレプリケーションが有効になっているバケットからS3クライアントがオブジェクトを削除した場合の動作を理解するには、バージョン管理が有効になっているバケットからS3クライアントがオブジェクトを削除する仕組みを次のように確認してください。
-
S3クライアントがバージョンIDを含む削除要求を実行すると、そのバージョンのオブジェクトが完全に削除されます。バケットに削除マーカーは追加されません。
-
S3クライアントがバージョンIDを含まない削除要求を実行した場合、StorageGRID はオブジェクトバージョンを削除しません。代わりに、バケットに削除マーカーを追加します。削除マーカーを使用すると、StorageGRID はオブジェクトが削除されたかのように動作します。
-
バージョンIDを指定しないGET要求はで失敗します
404 No Object Found
-
有効なバージョンIDを持つGET要求が成功し、要求されたオブジェクトのバージョンが返されます。
-
S3クライアントがクロスグリッドレプリケーションが有効になっているバケットからオブジェクトを削除すると、StorageGRID は次のように削除要求をデスティネーションにレプリケートするかどうかを判断します。
-
削除要求にバージョンIDが含まれている場合は、そのオブジェクトバージョンがソースグリッドから完全に削除されます。ただし、StorageGRID はバージョンIDを含む削除要求をレプリケートしないため、同じオブジェクトバージョンがデスティネーションから削除されることはありません。
-
削除要求にバージョンIDが含まれていない場合は、バケットのクロスグリッドレプリケーションの設定に基づいて、StorageGRID で削除マーカーをレプリケートすることもできます。
-
削除マーカーをレプリケートするように選択した場合(デフォルト)は、削除マーカーがソースバケットに追加され、デスティネーションバケットにレプリケートされます。実際には、オブジェクトは両方のグリッドで削除されているように見えます。
-
削除マーカーをレプリケートしないように選択した場合、削除マーカーはソースバケットに追加されますが、デスティネーションバケットにはレプリケートされません。実際には、ソースグリッドで削除されたオブジェクトはデスティネーショングリッドでは削除されません。
-
この図では、*レプリケート削除マーカー*が*はい*に設定されています "クロスグリッドレプリケーションが有効になりました"。バージョンIDを含むソースバケットの削除要求では、デスティネーションバケットからオブジェクトは削除されません。ソースバケットに対するバージョンIDを含まない削除要求は、デスティネーションバケット内のオブジェクトを削除するように表示されます。
オブジェクトの削除をグリッド間で同期したままにする場合は、対応するを作成します "S3ライフサイクル設定" 両方のグリッドのバケット用。 |
暗号化されたオブジェクトのレプリケート方法
グリッド間レプリケーションを使用してグリッド間でオブジェクトをレプリケートする場合は、個 々 のオブジェクトを暗号化するか、デフォルトのバケット暗号化を使用するか、またはグリッド全体の暗号化を設定できます。バケットに対してグリッド間レプリケーションを有効にする前後に、デフォルトのバケットまたはグリッド全体の暗号化設定を追加、変更、または削除できます。
個 々 のオブジェクトを暗号化するには、SSE(StorageGRIDで管理されるキーによるサーバ側の暗号化)を使用してオブジェクトをソースバケットに追加します。を使用します x-amz-server-side-encryption
要求ヘッダーとを指定します AES256
。を参照してください "サーバ側の暗号化を使用します"。
SSE-C(ユーザ指定のキーによるサーバ側の暗号化)の使用は、グリッド間レプリケーションではサポートされていません。取り込み処理は失敗します。 |
バケットでデフォルトの暗号化を使用するには、PUT bucket暗号化要求を使用してを設定します SSEAlgorithm
パラメータの値 AES256
。バケットレベルの暗号化環境 なしで取り込まれたすべてのオブジェクト x-amz-server-side-encryption
要求ヘッダー。を参照してください "バケットの処理"。
グリッドレベルの暗号化を使用するには、* stored object encryption オプションを AES-256 *に設定します。グリッドレベルの暗号化環境 バケットレベルで暗号化されていないオブジェクト、またはなしで取り込まれたオブジェクト x-amz-server-side-encryption
要求ヘッダー。を参照してください "ネットワークとオブジェクトのオプションを設定します"。
SSEはAES-128をサポートしていません。aes-128 オプションを使用してソースグリッドで stored object encryption *オプションを有効にした場合、AES-128アルゴリズムの使用はレプリケートオブジェクトに伝播されません。代わりに、デスティネーションのデフォルトのバケットまたはグリッドレベルの暗号化設定(利用可能な場合)がレプリケートオブジェクトで使用されます。 |
ソースオブジェクトの暗号化方法を決定する際に、StorageGRID は次のルールを適用します。
-
を使用します
x-amz-server-side-encryption
取り込みヘッダー(存在する場合)。 -
取り込みヘッダーがない場合は、バケットのデフォルトの暗号化設定(設定されている場合)を使用します。
-
バケット設定が設定されていない場合は、グリッド全体の暗号化設定を使用します(設定されている場合)。
-
グリッド全体の設定がない場合は、ソースオブジェクトを暗号化しないでください。
StorageGRID では、レプリケートオブジェクトの暗号化方法を決定する際に、次の順序でルールが適用されます。
-
ソースオブジェクトがAES-128暗号化を使用している場合を除き、ソースオブジェクトと同じ暗号化を使用します。
-
ソースオブジェクトが暗号化されていない場合やAES-128を使用している場合は、デスティネーションバケットのデフォルトの暗号化設定(設定されている場合)を使用します。
-
デスティネーションバケットに暗号化設定がない場合は、デスティネーションのグリッド全体の暗号化設定を使用します(設定されている場合)。
-
グリッド全体の設定がない場合は、デスティネーションオブジェクトを暗号化しないでください。
PUT Object taggingとDELETE Object taggingはサポートされません
クロスグリッドレプリケーションが有効になっているバケット内のオブジェクトでは、PUT Object tagging要求とDELETE Object tagging要求はサポートされません。
S3クライアントがPUT Object tagging要求またはDELETE Object tagging要求を実行すると、 501 Not Implemented
が返されます。メッセージはです Put(Delete) ObjectTagging is not available for buckets that have cross-grid replication configured
。
セグメント化されたオブジェクトのレプリケート方法
ソースグリッドの最大セグメントサイズ環境 オブジェクトがデスティネーショングリッドにレプリケートされます。オブジェクトが別のグリッドにレプリケートされる場合、ソースグリッドの*最大セグメントサイズ*設定(構成>*システム*>*ストレージオプション*)が両方のグリッドで使用されます。たとえば、ソースグリッドの最大セグメントサイズが1GBで、デスティネーショングリッドの最大セグメントサイズが50MBであるとします。2GBのオブジェクトをソースグリッドに取り込むと、そのオブジェクトは2GBのセグメントとして保存されます。また、グリッドの最大セグメントサイズが50MBであっても、2つの1GBセグメントとしてデスティネーショングリッドにレプリケートされます。