クロスグリッドレプリケーションとは何ですか。
グリッド間レプリケーションは、に接続された2つのStorageGRIDシステム内の選択したS3バケット間でオブジェクトを自動的にレプリケートするレプリケーションです"グリッドフェデレーション接続"。"アカウントのクローン"は、グリッド間レプリケーションに必要です。
グリッド間レプリケーションのワークフロー
次のワークフロー図は、2つのグリッド上のバケット間でグリッド間レプリケーションを設定する手順をまとめたものです。
グリッド間レプリケーションの要件
テナントアカウントに「Use grid federation connection *」権限が割り当てられている場合、"グリッドフェデレーション接続"Root Access権限を持つテナントユーザは、各グリッドの対応するテナントアカウントに同一のバケットを作成できます。次のバケットがあります。
-
同じ名前にする必要がありますが、別のリージョンにすることができます
-
バージョン管理が有効になっている必要があります
-
S3オブジェクトロックを無効にする必要があります
-
空にする必要があります
両方のバケットが作成されたら、一方または両方のバケットに対してクロスグリッドレプリケーションを設定できます。
グリッド間レプリケーションの仕組み
グリッド間レプリケーションは、一方向または双方向に実行するように設定できます。
一方向のレプリケーション
あるバケットでグリッド間レプリケーションを有効にしたグリッドが1つだけの場合は、そのバケット(ソースバケット)に追加されたオブジェクトがもう一方のグリッド(デスティネーションバケット)の対応するバケットにレプリケートされます。ただし、デスティネーションバケットに追加されたオブジェクトはソースにレプリケートされません。この図では、グリッド1からグリッド2へのクロスグリッドレプリケーションが有効になっていますが、逆方向では有効になっ `my-bucket`ていません。
双方向のレプリケーション
両方のグリッドで同じバケットに対してクロスグリッドレプリケーションを有効にすると、一方のバケットに追加されたオブジェクトがもう一方のグリッドにレプリケートされます。次の図では、で双方向のグリッド間レプリケーションが有効になってい `my-bucket`ます。
オブジェクトが取り込まれるとどうなりますか?
S3クライアントが、クロスグリッドレプリケーションが有効になっているバケットにオブジェクトを追加すると、次の処理が実行されます。
-
StorageGRID は、ソースバケットからデスティネーションバケットにオブジェクトを自動的にレプリケートします。このバックグラウンドレプリケーション処理の実行時間は、保留中の他のレプリケーション処理の数など、いくつかの要因によって異なります。
S3クライアントは、GetObject要求またはHeadObject要求を発行してオブジェクトのレプリケーションステータスを確認できます。応答にはStorageGRID固有の応答ヘッダーが含まれ、次のいずれかの値が含ま `x-ntap-sg-cgr-replication-status`れます。S3クライアントは、GetObject要求またはHeadObject要求を発行してオブジェクトのレプリケーションステータスを確認できます。応答には、次のいずれかの値を持つStorageGRID固有の応答ヘッダーが含まれ `x-ntap-sg-cgr-replication-status`ます。
グリッド レプリケーションのステータス ソース
-
* Completed *:すべてのグリッド接続でレプリケーションが完了しました。
-
* 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を指定しないGetObject要求は次のエラーで失敗します。
404 No Object Found
-
有効なバージョンIDを持つGetObject要求が成功し、要求されたオブジェクトのバージョンが返されます。
-
S3クライアントがクロスグリッドレプリケーションが有効になっているバケットからオブジェクトを削除すると、StorageGRID は次のように削除要求をデスティネーションにレプリケートするかどうかを判断します。
-
削除要求にバージョンIDが含まれている場合は、そのオブジェクトバージョンがソースグリッドから完全に削除されます。ただし、StorageGRID はバージョンIDを含む削除要求をレプリケートしないため、同じオブジェクトバージョンがデスティネーションから削除されることはありません。
-
削除要求にバージョンIDが含まれていない場合は、バケットのクロスグリッドレプリケーションの設定に基づいて、StorageGRID で削除マーカーをレプリケートすることもできます。
-
削除マーカーをレプリケートするように選択した場合(デフォルト)は、削除マーカーがソースバケットに追加され、デスティネーションバケットにレプリケートされます。実際には、オブジェクトは両方のグリッドで削除されているように見えます。
-
削除マーカーをレプリケートしないように選択した場合、削除マーカーはソースバケットに追加されますが、デスティネーションバケットにはレプリケートされません。実際には、ソースグリッドで削除されたオブジェクトはデスティネーショングリッドでは削除されません。
-
この図では、*レプリケート削除マーカー*が*はい*に設定されています"クロスグリッドレプリケーションが有効になりました"。バージョンIDを含むソースバケットの削除要求では、デスティネーションバケットからオブジェクトは削除されません。ソースバケットに対するバージョンIDを含まない削除要求は、デスティネーションバケット内のオブジェクトを削除するように表示されます。
オブジェクトの削除をグリッド間で同期したままにする場合は、両方のグリッドでバケットに対応するを作成します"S3ライフサイクル設定"。 |
暗号化されたオブジェクトのレプリケート方法
グリッド間レプリケーションを使用してグリッド間でオブジェクトをレプリケートする場合は、個 々 のオブジェクトを暗号化するか、デフォルトのバケット暗号化を使用するか、またはグリッド全体の暗号化を設定できます。バケットに対してグリッド間レプリケーションを有効にする前後に、デフォルトのバケットまたはグリッド全体の暗号化設定を追加、変更、または削除できます。
個 々 のオブジェクトを暗号化するには、SSE(StorageGRIDで管理されるキーによるサーバ側の暗号化)を使用してオブジェクトをソースバケットに追加します。要求ヘッダーを使用し x-amz-server-side-encryption
、を指定します AES256
。を参照して "サーバ側の暗号化を使用します"
SSE-C(ユーザ指定のキーによるサーバ側の暗号化)の使用は、グリッド間レプリケーションではサポートされていません。取り込み処理は失敗します。 |
バケットでデフォルトの暗号化を使用するには、PutBucketEncryption要求を使用して、パラメータをに AES256`設定します `SSEAlgorithm
。バケットレベルの暗号化は、要求ヘッダーを指定せずに取り込まれたオブジェクトに適用され `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を使用している場合は、デスティネーションバケットのデフォルトの暗号化設定(設定されている場合)を使用します。
-
デスティネーションバケットに暗号化設定がない場合は、デスティネーションのグリッド全体の暗号化設定を使用します(設定されている場合)。
-
グリッド全体の設定がない場合は、デスティネーションオブジェクトを暗号化しないでください。
PutObjectTaggingとDeleteObjectTaggingはサポートされない
PutObjectTagging要求とDeleteObjectTagging要求は、グリッド間レプリケーションが有効になっているバケット内のオブジェクトではサポートされません。
S3クライアントがPutObjectTagging要求またはDeleteObjectTagging要求を発行すると 501 Not Implemented
、が返されます。メッセージはです Put(Delete) ObjectTagging is not available for buckets that have cross-grid replication configured
。
セグメント化されたオブジェクトのレプリケート方法
ソースグリッドの最大セグメントサイズ環境 オブジェクトがデスティネーショングリッドにレプリケートされます。オブジェクトが別のグリッドにレプリケートされる場合、ソースグリッドの*最大セグメントサイズ*設定(構成>*システム*>*ストレージオプション*)が両方のグリッドで使用されます。たとえば、ソースグリッドの最大セグメントサイズが1GBで、デスティネーショングリッドの最大セグメントサイズが50MBであるとします。2GBのオブジェクトをソースグリッドに取り込むと、そのオブジェクトは2GBのセグメントとして保存されます。また、グリッドの最大セグメントサイズが50MBであっても、2つの1GBセグメントとしてデスティネーショングリッドにレプリケートされます。