Ceph オブジェクト ストレージに基づくハイブリッド クラウド メカニズムの詳細な分析

Ceph オブジェクト ストレージに基づくハイブリッド クラウド メカニズムの詳細な分析

1. 背景

クラウド コンピューティングの発展の勢いに乗って、Ceph が今日最も注目されているソフトウェア定義ストレージ オープン ソース プロジェクトになったことは間違いありません。下の図に示すように、同じ基盤プラットフォーム上で、ファイル ストレージ、オブジェクト ストレージ、ブロック ストレージの 3 つのストレージ インターフェイスを提供できます。この記事では主にオブジェクト ストレージ、つまり radosgw に焦点を当てます。

Ceph をベースにすることで、優れたセキュリティ、高可用性、優れたスケーラビリティを備えたプライベート ストレージ プラットフォームを迅速かつ簡単に構築できます。プライベート ストレージ プラットフォームは、セキュリティ上の利点によりますます注目を集めていますが、多くの欠点もあります。たとえば、次のシナリオでは、多国籍企業が海外のローカルビジネスデータにアクセスする必要があります。この長距離データ アクセス要件をどのようにサポートできるでしょうか?民営化された環境のみの場合、解決策は 2 つしかありません。

[[225085]]

  • 地域をまたいでローカル データ センターのデータに直接アクセスすると、アクセス待ち時間が長くなることは間違いありません。

海外にデータセンターを構築し、ローカルデータをリモートデータセンターに継続的に非同期的に複製する方法の欠点は、コストが高すぎることです。

このシナリオでは、単純なプライベート クラウド ストレージ プラットフォームでは上記の問題を適切に解決できません。ただし、ハイブリッド クラウド ソリューションを採用することで、上記の要件をより適切に満たすことができます。上記の長距離データアクセスのシナリオでは、パブリッククラウドのリモートデータセンターノードをストレージポイントとして最大限に活用し、ローカルデータセンターのデータをパブリッククラウドに非同期的にコピーし、ターミナルを介してパブリッククラウドのデータに直接アクセスできます。この方法は、総合的なコストと速度の面で大きな利点があり、このような長距離データ アクセスのニーズに適しています。

2. 開発状況:RGW Cloud Syncの開発履歴

Ceph オブジェクト ストレージに基づくハイブリッド クラウド メカニズムは、Ceph エコシステムへの優れた補足となります。これに基づいて、コミュニティは Mimic バージョンで RGW Cloud Sync 機能をリリースします。この機能は、当初、テストで使用した Tencent Cloud COS など、S3 プロトコルをサポートするパブリック クラウド オブジェクト ストレージ プラットフォームへの RGW のデータのエクスポートをサポートします。 Mulsite の他のプラグインと同様に、RGW Cloud Sync 機能も、S3 プロトコルと互換性のある新しい同期プラグイン (現在は AWS Sync モジュールと呼ばれています) になっています。 RGW Cloud Sync 機能の全体的な開発履歴は次のとおりです。

  • Suseは、単純なアップロードのみをサポートする初期バージョンを提供しました。
  • Red Hat は、この初期バージョンで、マルチパートアップロード、削除などの完全なセマンティックサポートを実装しました。大きなファイルを同期する際のメモリ爆発の問題を考慮して、ストリーミングアップロードも実装されています。

Ceph コミュニティがバージョン M でリリースするパブリック クラウド同期機能について実際のフィールドテストを実施し、存在する問題に基づいてフィードバックと開発を提供しました。実際のテストでは、次の動作環境を構築しました。

クラウドゾーンには、読み取り専用ゾーンとして構成されたパブリッククラウド同期プラグインが含まれており、リージョン間でRgwゾーンに書き込まれたデータをTencent CloudパブリッククラウドオブジェクトストレージプラットフォームCOSに同期します。RGWからパブリッククラウドプラットフォームへのデータの同期とバックアップに成功し、さまざまなクラウドパスにデータをインポートするための自由なカスタマイズをサポートしています。同時に、同期プロセス中に発生するエラーや現在遅れているデータを迅速に監視できる同期ステータス表示機能も改善しました。

3. コアメカニクス

マルチサイト

RGW Cloud Sync 機能は、基本的には Multisite に基づく新しい同期プラグイン (aws 同期モジュール) です。まず、Multisite のコアメカニズムのいくつかを見てみましょう。 Multisite は、RGW でのリモート データ バックアップ ソリューションです。本質的には、これはログベースの非同期レプリケーション戦略です。次の図は、Multisite の概略図です。

Multisite の基本的な概念は次のとおりです。

  • ゾーン: 独立した Ceph クラスター内に存在し、バックエンド プールのグループに対応する rgw サービスのグループによって提供されます。
  • ゾーングループ: 少なくとも 1 つのゾーンを含み、ゾーン間でデータとメタデータを同期します。
  • レルム: 少なくとも 1 つのゾーングループを含む独立した名前空間。ゾーングループ間でメタデータが同期されます。

マルチサイトで機能するメカニズムのいくつか、つまりデータ同期、非同期フレームワーク、同期プラグインについて見てみましょう。データ同期セクションでは主にマルチサイトのデータ同期プロセスを分析し、非同期フレームワークセクションではマルチサイトのコルーチン フレームワークを紹介し、同期プラグインセクションではマルチサイトのいくつかの同期プラグインを紹介します。

データ同期

データ同期は、ゾーングループ内のデータをバックアップするために使用されます。ゾーンに書き込まれたデータは、最終的にゾーングループ内のすべてのゾーンに同期されます。完全なデータ同期プロセスには、次の 3 つのステップが含まれます。

  • 初期化: リモート ソース ゾーンとローカル ゾーン間のログ シャードの対応を確立します。つまり、リモート データログをローカル ゾーンにマップします。後で、データログを使用して、更新する必要があるデータがあるかどうかを確認します。
  • 完全同期マップの構築: リモート バケットのメタデータを取得し、マッピング関係を確立して、バケットの同期ステータスを記録します。マルチサイトを構成するときにソースゾーンにデータがない場合、この手順は直接スキップされます。
  • データ同期: オブジェクトデータの同期を開始し、RGW APIを介してソースゾーンのデータログを取得し、対応するバイログを使用してデータを同期します。

以下では、バケット内のデータの増分同期を使用して、データ同期の動作メカニズムを説明します。 RGW に精通している人は誰でも、バケット インスタンスには少なくとも 1 つのバケット シャードが含まれていることを知っているはずです。データ同期は、バケット シャード単位でデータを同期します。各バケット シャードには、対応するデータログ シャードとバイログ シャードがあります。

対応する関係が確立され、完全な同期が完了すると、ローカル ゾーンはソース ゾーンの各データログ シャードに対応する sync_marker を記録します。その後、ローカル ゾーンは sync_marker をリモート データログの max_marker と定期的に比較します。まだ同期されていないデータがある場合、データログ エントリは rgw を通じて消費されます。データログ エントリには対応するバケット シャードが記録され、バケット シャードに対応するバイログを使用してデータを同期できます。下の図に示すように、リモート データログは gw_data_chang_log_entry の形式でログを保存します。各データログ エントリには rgw_data_change というフィールドが含まれており、rgw_data_change に含まれるキー フィールドはバケット シャードの名前であることがわかります。次に、対応するバイログ シャードを見つけて、増分同期のためにバイログを消費します。実際、完全同期では sync_marker は開始されず、最初からデータログを直接消費してデータを同期します。

非同期フレームワーク

RGW で使用される非同期実行フレームワークは、boost::asio::coroutine ライブラリに基づいて開発されています。スタックレスコルーチンです。一般的なコルーチン テクノロジとは異なり、Async Framework は、コルーチンをサポートするために現在のスタック情報を保存する ucontext テクノロジを使用せず、マクロ テクニックを使用して同様の効果を実現します。 reenter/yield/fork などのいくつかの疑似キーワード (マクロ) を通じてコルーチンを実装します。 RGWCoroutine は、RGW で定義されたコルーチンに関する抽象クラスです。これは boost::asio::coroutine のサブクラスでもあります。これはタスク フローを記述するために使用され、実装される暗黙的なステート マシンが含まれます。 RGWCoroutine は他の RGWCoroutine を呼び出したり、並列 RGWCoroutine を生成したりできます。

RGWCoroutine クラスには、RGWCoroutinesStack メンバーが含まれています。 call を使用して他の RGWCoroutines を呼び出すと、対応するタスク フローがスタックに格納されます。すべてのタスク フローが完了するまで、制御は呼び出し元に戻りません。ただし、新しい RGWCoroutine を生成すると、タスク フローを格納するための新しいタスク スタックが生成され、現在実行中のタスク フローがブロックされることはありません。コルーチンが非同期 IO 操作を実行する必要がある場合、コルーチンは自身をブロック済みとしてマークし、IO イベントがタスク マネージャーに登録されます。 IO が完了すると、タスク マネージャーは現在のスタックのロックを解除し、コルーチンの制御を復元します。次の図は、事前に決められた期間でリクエスト ハンドラーを実装するコルーチンの使用例を示しています。

同期プラグイン

上記のデータ同期プロセスは、ある Ceph ゾーンから別の Ceph ゾーンにデータを同期することです。プロセスを完全に抽象化して、データ同期をより一般的なものにし、さまざまな同期モジュールを追加して、さまざまな宛先へのデータ移行を実現できます。上位層でのデータログ消費のロジックは一貫しているため、上位層データが宛先に到達する最後のステップのみが異なります。したがって、さまざまな同期プラグインを実装するには、データの同期と削除の関連インターフェースを実装するだけで済みます。各プラグインは、RGW では同期モジュールと呼ばれます。現在、Ceph には次の 4 つの同期モジュールがあります。

  • rgw: デフォルトの同期モジュール。Ceph ゾーン間でデータを同期するために使用されます。
  • ログ: オブジェクトの拡張属性を取得して印刷するために使用されます
  • elasticsearch: 一部の検索リクエストをサポートするために、データメタデータをESに同期するために使用されます。
  • AWS: Mimic バージョンがリリースされました。RGW のデータを S3 プロトコル 4 をサポートするオブジェクト ストレージ プラットフォームにエクスポートするために使用されます。

RGWクラウド同期

ストリーミングプロセス

前述したように、Suse は RGW Cloud Sync の初期バージョンを提供しました。下の図に示すように、同期プロセスは論理的に 3 つのステップに分かれています。まず、リモート オブジェクトが HTTP 接続を介して AWS Sync モジュールに取得され、メモリにロードされます。次に、オブジェクトがクラウドに配置され、クラウドは配置結果を返します。

このプロセスは小さなファイルの場合は問題ありませんが、オブジェクトが大きい場合は、すべてをメモリにロードすると問題になります。そのため、Red Hat はこれに基づいてストリーミング プロセスをサポートしています。基本的に、パイプ CR と呼ばれる新しいコルーチンが使用されます。パイプラインのようなメカニズムを使用して、リモート オブジェクトの取得用とオブジェクトのアップロード用の 2 つの HTTP 接続を同時に維持します。これら 2 つのプロセスは並列に実行され、次の図に示すように、メモリの爆発を効果的に防ぐことができます。

マルチパートアップロード

マルチパートアップロードはストリーミング プロセスに基づいており、大きなファイルのマルチパートアップロードをサポートします。全体的なプロセスは次のとおりです。

JSON 設定

パブリッククラウドストレージ環境は比較的複雑であり、AWS Sync モジュールの使用をサポートするにはより複雑な構成が必要です。したがって、Red Hat はこのプラグインで JSON 設定をサポートしています。

他のプラグインと比較して、主に host_style、acl_mapping、target_path の 3 つの構成項目が追加されています。 Host_style はドメイン名を構成するための形式、acl_mapping は ACL 情報を構成するための同期方法、target_path は宛先の構成メタデータの保存ポイントです。次の図は実際の構成を示しています。これは、AWS ゾーンが設定され、パス形式のドメイン名形式が使用されていることを示します。 target_path は、rgw に、それが属するゾーングループの名前と user_id を追加し、その後にバケット名が続きます。最後に、クラウド内のオブジェクトのパスは、target_path とオブジェクト名を組み合わせたものになります。

5. RGW Cloud Syncのフォローアップ作業には、主に次の4つの項目が含まれます。

  • 遅延データログ、バケット、オブジェクトなどの表示など、同期ステータスの表示を最適化し、同期プロセス中に発生したエラーをモニターに報告します。
  • データの逆同期、つまりパブリッククラウドデータのRGWへの同期をサポートする
  • S3プロトコルをサポートするプラットフォームだけでなく、より多くのパブリッククラウドプラットフォームへのRGWデータのインポートをサポートします。
  • これを基に、RGW は異なるクラウド プラットフォーム間のデータ同期を実現するためのブリッジとして使用されます。

<<:  トップ 15 のクラウド コンピューティング ホスティング プロバイダー

>>:  シームレスなハイブリッドクラウド + SD-WAN ZStack が Dahe Cloud と提携し、クラウドネットワークの新たな章を開く

推薦する

Vultrはどうですか? Vultr スペイン データセンター クラウド サーバー 簡単な評価

Vultr はスペインのマドリードに独自のデータセンターを持ち、スペインのクラウド サーバーを提供し...

Kunlun Labs、クラウド製品の主要なセキュリティ脆弱性の修正でVMwareに協力し感謝を受ける

VMware は 2 月 16 日にセキュリティ アドバイザリ VMSA-2022-0004 をリリ...

Kafka のアーキテクチャと動作原理の図解

[[438966]] 1. Kafkaを理解するインタビュアーが質問しました: Kafka とは何で...

オンライン教育:従来の教育の受動的でオープンな内容が弱点

ロビン・リー氏が言うように、インターネットは伝統的な産業を変えつつあります。タクシー配車アプリはすで...

50kvm -199元/C3データセンターVPS/30IP/512Mメモリ/15gハードディスク/500gトラフィック

私は長い間、Diaojiの50KVMに注目していませんでした。現在、特別価格のクラスターVPSが販売...

invs: モスクワのデータセンターで最も目立たない KVM 仮想 VPS の簡単なレビュー

今年 2 月に invs 社を紹介しましたが、一般的にはあまり注目されていませんでした。1 年後の ...

関連性はウェブサイトSEOにとって最優先事項です

検索エンジンがどのように変化しても、検索品質を決定する要素である関連性はますます重要になります。ウェ...

推奨: host1plus-70% オフ/Windows/10g ポート/4g メモリ/100G ハード ドライブ/6T トラフィック

Host1plus の Windows VPS は、本日正式に皆様に推奨されました。高品質の Win...

5月20日前日、ドラマブランド2社が「ペッパー味のコーラ」を飲ませたい

マーケティング界のベテランとして、コカコーラは再び国境を越えたマーケティングを展開しました。今回のC...

abelohost: 著作権侵害の苦情を無視し、有名なオフショアホスティングプロバイダー「Alipay\WeChat」へのアクセス

最近のニュース:2017年にオフショアホスティングの運営を開始したこの商人は、支払い方法として「Al...

Redisson 分散ロック ソースコード 10: 読み取り書き込みロック

[[409489]]序文Redisson は再入可能な読み取り/書き込みロックもサポートしており、分...

ハイブリッド クラウド戦略: 更新の時期を示す 4 つの兆候

ネットワーク遅延について不満を言う人はいますか?クラウド コンピューティングの法案は経営者に衝撃を与...

エッジ コンピューティングは現代のソフトウェア開発にとってなぜ重要なのでしょうか?

企業は、ユーザーのためにソフトウェアの信頼性とパフォーマンスを向上させると同時に、自社のコストを削減...

初心者ウェブマスターによる疑似オリジナリティの誤解についての簡単な議論

検索エンジンはますます人間化していきます。ウェブサイトを評価する基準はますます高くなっています。しか...