Azureストレージのオブジェクトレプリケーションを試してみた

2021.10.01

いわさです。

Azureストレージにはオブジェクトレプリケーションの機能があります。
ありますが、今まで使ったことがありませんでした。
他のリージョンへレプリケーションすることで物理的に近いリージョンからのアクセスを可能にしたり、データを分散させたり、様々な使い方出来ます。

今回、パブリックプレビューでAzure Premium Storage(Blob)もレプリケーションに対応したようです。
良い機会なので普通のストレージも含めてすこしレプリケーションまわりを触ってみました。

前提の設定

レプリケーション元とレプリケーション先で前提条件として以下の設定が必要になります。

  • ソースアカウントで変更フィードを有効にする
  • 両アカウントでBLOBバージョン管理を有効にする

レプリケーション設定すると自動で有効になるので、今日は手動で事前に設定しましたが、本来はあまり気にしなくてもいいかもしれないです。

まずは、リージョン別にストレージアカウント(Standard)を作成しました。

レプリケーション元は変更フィードとBLOBバージョン管理を有効化しました。

レプリケーション先はBLOBバージョン管理のみ有効化しました。

レプリケーション設定

ストレージアカウントのメニューからオブジェクトレプリケーションを選択し、レプリケーション規則を新規追加します。

レプリケーション先(ターゲット)アカウントを選択し、コンテナーのペア(複数設定可能)を設定します。
今回は設定しませんでしたがポリシーを組み合わせることで、レプリケーション先を分岐させたりフィルタリングさせることも可能です。
またレプリケーション時の上書きコピーも設定可能です。今回は新しいオブジェクトのみにしました。

なお、変更フィードについてはターゲットアカウンは自動有効化はされません。

レプリケーションの確認

単純ですがファイルをアップロードするだけです。
ファイル詳細にオブジェクトレプリケーションが表示され、レプリケーションのステータスを確認することが出来ます。

以下はレプリケーション先のコンテナーです。
レプリケーションには少し(このファイルのサイズ1つで10~20秒くらい)ラグがありました。

プレミアムストレージ

プレミアムストレージは通常高いストレージ性能が必要な場合に採用されます。
お値段も結構します。

以前まではプレミアムストレージはレプリケーションが使えなかったようなのですが、最近のパブリックプレビューで使えるようになったようです。

既存の Standard パフォーマンス ストレージ アカウントを Premium パフォーマンスのブロック BLOB ストレージ アカウントに変換することはできません。 Premium パフォーマンス ストレージ アカウントに移行するには、Premium ブロック BLOB アカウントを作成し、データを新しいアカウントに移行する必要があります。

既存のスタンダードストレージからプレミアムストレージへの変換は出来ないようなので、ストレージアカウントを新規作成しました。

先程と同じようにレプリケーション規則を作成します。
先程と同じレプリケーション元アカウントに、規則を追加しました。

追加後はこのようになります。
複数のレプリケーション規則やアカウントを管理することが可能です。

ではレプリケーション元に新規ファイルをアップロードします。

こちらは先程のレプリケーション先アカウントです。
先程作成したレプリケーション規則が残っているので、追加でアップロードしたファイルがレプリケーションされていますね。

こちらは新規作成したプレミアムアカウントです。
追加でアップロードしたファイルがレプリケーションされています。

ただし、規則を追加前にすでにアップロード(レプリケーション)済みのファイルに関しては改めてレプリケーションされるわけではないのでお気をつけください。

まとめ

Azureポータルから簡単にレプリケーションの設定を行うことが出来ました。
もちろんCLIからの設定も可能です。

また、プレビューではありますがプレミアムストレージとスタンダードストレージの間でのレプリケーションが出来ることも確認することが出来ました。

Azureストレージ自体が冗長構成オプションが豊富なので、冗長化のためだけにこのレプリケーション機能を使うことはほぼないと思いますが、冒頭で述べたような分散化によるパフォーマンス向上で使えるシーンは多そうなので、覚えておきたいですね。