Alibaba Cloud のオブジェクトストレージでクロスリージョンレプリケーションを使おう❗️

こんにちは。
ソリューションアーキテクトの松田(@MatYoshr)です。

Alibaba Cloud の Object Storage Service(OSS)で Cross Region Replication が部分的に利用出来るようになったのはお気づきでしょうか😁
まだ、色々と制約はあるのですがまずは機能のご紹介をさせて頂きたいと思います。

f:id:sbc_y_matsuda:20191021120337p:plain

Cross Region Replication の対象範囲

そもそもの話になりますが、
もともと中国本土内のリージョン間ではOSSのクロスリージョンレプリケーションが可能でした。
※シリコンバレーとバージニアのリージョン間でも試験的に利用可能でした、

今回の機能追加で中国本土以外のリージョン間でのクロスリージョンレプリケーションが部分的に利用できるようになりました😁

しかし、全てのリージョン間でのレプリケーションにはまだ対応していないので対応表を作ってみました。
※2019年10月時点の情報になります。

中国本土内 CRR(Cross Region Replication) 対応表

f:id:sbc_y_matsuda:20191018132855p:plain:w850

中国本土外 CRR(Cross Region Replication) 対応表

f:id:sbc_y_matsuda:20191018133055p:plain:w850

東京からは現時点では香港とシリコンバレーにしかレプリケーション出来ないのが残念ですね😣
とは言え、クロスリージョンレプリケーションが設定できる様になったのは大きな進歩なので対応リージョンの追加を待ちたいです😁

クロスリージョンレプリケーションの設定方法

簡単に設定方法もご紹介しておきます。
今回は東京リージョンから香港リージョンへのレプリケーションの設定をサンプルにお見せしたいと思います。

Step.1 レプリケーション対象の準備

なお、レプリケーション先のバケットは事前に用意が必要です。

レプリケーション元(東京)のバケットが以下です。

f:id:sbc_y_matsuda:20191018182741p:plain:w850

レプリケーション先(香港)のバケットが以下です。

f:id:sbc_y_matsuda:20191018183016p:plain:w850

Step.2 クロスリージョンレプリケーションの設定

「基本設定」 > 「クロスリージョンレプリケーション」の同期を有効にするを選択します。

f:id:sbc_y_matsuda:20191018184645p:plain:w850

クロスリージョンレプリケーションの設定画面で「複製先リージョン」を選択します。
今回はChina (Hong Kong)を選択します。
ちなみに下記のキャプチャのように対象リージョンに存在するOSSバケットの数が表示されています。

f:id:sbc_y_matsuda:20191018185029p:plain:w550

「複製先リージョン」を選択すると「複製先バケット」をプルダウンで選択できます。

「同期オブジェクト」は同期対象の設定です。
全てのファイルを同期対象にするか、プレフィクスを指定して同期対象を絞り込みます。
このプレフィクスはオブジェクトの「メタデータ」に対して適用されます。

以下の図は「public」ディレクトリの「index.html」のプロパティですが、ファイル名はpublic/index.htmlになっています。
OSSではバケットのルートからの階層もファイル名として扱われますので、プレフィクスで特定の範囲のみ同期する場合にはpublicなどの指定を行います。
例えばpublic/hoge/index.htmlとなっていて「public/hoge」配下のファイルを同期対象としたい場合はpublic/hogeをプレフィクスとして指定します。

f:id:sbc_y_matsuda:20191021111658p:plain:w850

「同期ポリシー」は複製元リージョンでファイル(オブジェクト)操作が行われた場合の同期処理の定義です。
どちらを選択するかでオブジェクト削除時の動きが変わります。
書き込み同期(追加/変更)であればレプリケーション先のオブジェクトは同時に削除されません
同期の追加/削除/変更であればレプリケーション先のオブジェクトも同時に削除されます

微妙に日本語訳が変な感じですね😅 同期(追加/削除/変更)と書きたかったのかな・・・

「履歴データの同期」は「複製元バケット」で既に保存済みのオブジェクトの同期の有無を設定します。
同期しないを選択すると既存のオブジェクトが「複製先バケット」に同期されません
クロスリージョンレプリケーション設定後に追加されたオブジェクトのみ同期対象となります。

f:id:sbc_y_matsuda:20191018190639p:plain:w550

設定が完了すると「基本設定」 > 「クロスリージョンレプリケーション」の項目で同期設定中であることが表示されます。

設定後のレプリケーションの状態などはここで確認することができます。
クロスリージョンレプリケーション自体は数分で有効化されます。
ただし、既存オブジェクトは有効化から90分後に同期が始まる仕様になっています。

f:id:sbc_y_matsuda:20191018192842p:plain:w850

Step.3 オブジェクトの同期確認

まだ、既存オブジェクトの同期は行われないので「複製元バケット」に適当なファイルを置いてみます。

f:id:sbc_y_matsuda:20191018193611p:plain:w850

無事に追加したファイルが同期できました🎉

f:id:sbc_y_matsuda:20191018194520p:plain:w850

2時間後くらいに再度確認しにいくと無事に過去のファイルも同期されていました😁

f:id:sbc_y_matsuda:20191021104605p:plain:w850

おわりに

特に難しいところもなく利用できる機能ではないかと思います。
クロスリージョンレプリケーションが使える様になったことでOSSの活用シーンが増えていくのではないでしょうか?

全てのリージョン間でレプリケーションが出来るという事ではないのが残念ですが、まずは第一歩と言うことで今後の機能拡張を待ちたいと思います😁

Author Profile

https://secure.gravatar.com/avatar/b00b5531fbdbc674e9f7c685a1ed32c1?s=800&d=identicon

松田悦洋(@MatYoshr)
SBクラウド株式会社 Alibaba Cloud Solution Architect

Alibaba以外にもAWS、Azure、GCPなどクラウド全般が好きです
  GitHub   Qiita