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 と提携し、クラウドネットワークの新たな章を開く

推薦する

会社のウェブサイトを作成する計画を立てるには、適切な手順を踏む必要があります

新規のビジネスオーナーのほとんどは、自分のビジネス用のウェブサイトを構築することの重要性を理解してい...

SEO 最適化 Baidu 10 月革命

SEO を行っている友人の多くは、実際のトラフィックがあるため、特に Baidu をターゲットにして...

ウェブサイトのランキング最適化レッスン 4: オリジナルと疑似オリジナルのどちらが良いでしょうか? ツールが最高です!

ショートビデオ、セルフメディア、インフルエンサーのためのワンストップサービスホームページを構築する上...

愛のサポート、インターネットの新時代のビジネスモデルについての簡単な議論

【ポイント】 新しいインターネット時代では、ユーザーが製品を使用する動機は、必要性から好みへと変化し...

Baidu 最適化ガイド: 成功を盲目的に追求することは、新しいサイトにとって大きな問題です

いつからか、Baidu は新しいサイトの掲載や重み付けに対して特に寛容になったようだ。以前の「遅い包...

未来のクラウドコンピューティングソリューションを構築する方法

過去 10 年間で、多くの企業の IT 戦略は進化し、社内のリソースを厳密に保護することと、コンピュ...

ウェブサイトのコンバージョン率を上げる最も効果的な方法

ウェブサイトのランキングが高くない場合、どうすれば改善できるでしょうか? 実際、ウェブサイトのランキ...

詳細なデータ分析によりプロモーションの効果が高まります

データ分析は、ウェブサイトの構築とプロモーションのプロセスにおいて欠かせない作業です。データ分析をう...

台湾のIT企業が負ける理由:ブランドイメージの欠如

これは、ノートパソコンがまだ1万元以上すると宣伝されていた頃、中関村がまだ非常に繁栄していた頃、Fo...

マイクロソフトMSNは昨日、中国本土以外の市場から撤退し始めた。

弊社の記者である呉偉群は、マイクロソフトが先日、3月15日からMSNメッセンジャーソフトウェアを正式...

自分専用のウェブサイトを構築する必要はまだあるのでしょうか?

かつて流行した「個人ウェブサイト」という言葉は、時が経つにつれて徐々に忘れ去られつつあります。インタ...

王立文氏は起業家の失敗を振り返る:人材の不適切な活用と弱い商業能力

3月28日、Youmi.comの創設者である王立文氏は、2012年の第1回中国リーダーシップ年次大会...

PPTV を買収した後、Suning は電子商取引とインターネット コンテンツをどのように管理すべきでしょうか?

インターネット技術は日々変化しており、多くの新興産業がこのプラットフォームを利用して自社のビジネスを...

Intel Itanium Tukwilaの遅延の背景

2 週間前、Intel は Tukwila クアッドコア Itanium プロセッサの発売を再び 2...