Skip to content

オブジェクトストレージのマルチサイト、アクティブ-アクティブレプリケーション

オブジェクトストレージのアクティブレプリケーション

オブジェクトストレージレプリケーション

オブジェクトストレージのアクティブレプリケーションは、ミッションクリティカルな本番環境において重要な要件です。RustFSは現在、このサービスを提供する唯一のベンダーです。バケットレベルの粒度で実行され、以下の状況で使用されます:

RustFSは、アーキテクチャの選択やデータ変更レートに応じて、同期および準同期レプリケーションをサポートします。上記のいずれのケースにおいても、レプリケーションは(バンド幅の考慮事項や変更レートを考慮して)可能な限り厳密な一責性に近い状態である必要があります。

大規模な回復力のために設計されたRustFSデータレプリケーション

主要機能には以下が含まれます:

  • ✅ 暗号化または非暗号化オブジェクトとその関連メタデータ(オブジェクトと原子的に書き込まれる)
  • ✅ オブジェクトバージョン
  • ✅ オブジェクトタグ(ある場合)
  • ✅ S3オブジェクトロックリテンション情報(ある場合)

コア機能

ソースとターゲットバケットが同じ名前を持つ能力

これは、アプリケーションが中断なくリモートサイトに透明にフェイルオーバーする必要があるアプリケーションに必要です。

ソースとターゲット間の自動オブジェクトロック/リテンションレプリケーションのネイティブサポート

レプリケーション中にデータ整合性とコンプライアンス要件が維持されることを保証します。

準同期レプリケーション

バケットで何らかの変更が発生した直後にオブジェクトを更新できます。RustFSはデータセンター内での厳密な一責性とデータセンター間の結果的一責性に従い、データを保護します。

通知機能

レプリケーション失敗イベントをプッシュする通知機能。アプリケーションはこれらのイベントを購読し、運用チームにアラートを送できます。

RustFSアクティブ-アクティブレプリケーションを実装する際の考慮事項

最も基本的なレベルで、あらゆる設計はインフラストラクチャ、バンド幅、レイテンシ、回復力、スケールを考慮する必要があります。順番に検討してみましょう:

インフラストラクチャ

RustFSは、レプリケーションエンドポイントの両端で同じハードウェアを使用することを推奨します。類似のハードウェアでも動作しますが、異種のハードウェアプロファイルを導入すると複雑さが増し、問題の特定が遅くなります。

バンド幅

バンド幅は、二つのサイトを一貫して同期状態に保つための重要な要因です。サイト間の最適なバンド幅要件は、入力データのレートによって決まります。具体的には、バンド幅がピークを処理するのに不十分である場合、変更はリモートサイトにキューされ、最終的に同期されます。

レイテンシ

バンド幅の次に、レイテンシはアクティブ-アクティブモデルを設計する上で最も重要な考慮事項です。レイテンシは二つのRustFSクラスター間の往復時間(RTT)を表します。目標は、バンド幅によって課せられる予算制約の範囲内でレイテンシを可能な限り小さな数値に減らすことです。RustFSはEthernetリンクとネットワークにRTT闾値が20ミリ秒を超えないこと、パケット损失率が0.01%を超えないことを推奨します。

アーキテクチャ

現在、RustFSは二つのデータセンター間のレプリケーションのみを推奨しています。複数のデータセンター間でのレプリケーションは可能ですが、関わる複雑さと必要なトレードオフのため、非常に困難です。

大規模デプロイメントアーキテクチャ

RustFSは、ソースとターゲットを含む各データセンターで非常に大規模なデプロイメントをサポートし、上記の考慮事項がスケールを決定します。

大規模デプロイメントアーキテクチャ

よくある質問

レプリケーションターゲットが障害したらどうなりますか?

ターゲットがダウンした場合、ソースは変更をキャッシュし、レプリケーションターゲットが復旧した後に同期を開始します。時間、変更数、バンド幅、レイテンシによって、完全な同期に達するまでにいくらかの遅延がある場合があります。

不変性のパラメータは何ですか?

不変性はサポートされています。主要な概念はこの記事で確認できます。アクティブ-アクティブレプリケーションモードでは、不変性はオブジェクトがバージョン化されている場合のみ保証できます。ソースでバージョン管理を無効にすることはできません。ターゲットでバージョン管理が停止された場合、RustFSはレプリケーションの失敗を開始します。

バージョン管理が停止されたり、不一致がある場合の他の影響は何ですか?

これらの場合、レプリケーションが失敗する可能性があります。たとえば、ソースバケットでバージョン管理を無効にしようとすると、エラーが返されます。ソースバケットでバージョン管理を無効にする前に、まずレプリケーション設定を削除する必要があります。さらに、ターゲットバケットでバージョン管理が無効にされた場合、レプリケーションは失敗します。

両端でオブジェクトロッキングが有効になっていない場合はどう処理されますか?

オブジェクトロッキングはソースとターゲットの両方で有効にする必要があります。バケットレプリケーションを設定した後、ターゲットバケットが削除されて再作成されるがオブジェクトロッキングが有効になっていない特殊ケースがあり、レプリケーションが失敗する可能性があります。両端でオブジェクトロッキング設定が適切に設定されていない場合、不一致な状況が発生する可能性があります。この場合、RustFSはサイレントに失敗します。

Apache License 2.0の下でリリースされています。