Azure BLOB Storageでオブジェクト レプリケーションを設定から確認までやってみた

Azure Storage自体ではGRSやGZRSと言った冗長機能が提供されています。

Azure Storage の冗長性(マイクロソフト社公式)

Azure Storage自体の冗長性とは別にブロックBLOBではファイルを非同期にコピーするオブジェクト レプリケーション機能が提供されています。

ブロック BLOB のオブジェクト レプリケーション(マイクロソフト社公式)

オブジェクト レプリケーション機能を使うとストレージ アカウント間でブロック BLOB を非同期にコピーする事ができます。非同期とは言ってますが1日1回とかではなく随時コピーされます。

    • Azure Storageの冗長性と比べた時のオブジェクト レプリケーションの特徴
      • 複数の宛先(コンテナー)へレプリケーション可能。別リージョンへのレプリケーションも可能
        • ユーザーロケーションから近いストレージアカウントへのアクセスが可能
      • コストを安く抑える事が可能
        • コンテナー単位でレプリケーション設定が可能
        • レプリケーション先でライフ サイクル管理ポリシーを使ってアーカイブ層にファイルを移行する事ででコストを抑えたレプリケーションが可能
      • BLOBコンテナーのみが対象になる

読み取りアクセス geo 冗長ストレージ (RA-GRS) または読み取りアクセス geo ゾーン冗長ストレージ (RA-GZRS)を個別に設定して使うイメージに近いのかなぁと思ってます。

今回は、Azureストレージアカウントを3つ使いオブジェクト レプリケーション機能の設定からファイルのアップロードをして同期状態の確認までをやってみました。

スポンサーリンク

 Azureストレージアカウントでオブジェクトレプリケーション設定してみる

 今回のストレージアカウント設定

ストレージアカウントを3つ(objectreplicationtest001-03)作成しています。今回は検証ですのでそれ以外はデフォルト値にしています。ネットワークもパブリックからのアクセス許可をしています。

設定項目 設定値
アカウントの種類 StorageV2 (汎用 v2)
レプリケーション ローカル冗長ストレージ (LRS)

今回作成したストレージアアカウント名、リージョンおよびBlobコンテナー名です。Blobコンテナーのパブリックアクセスレベルはプライベートで作成しています。

ストレージアカウント名 リージョン BLOBコンテナー名
objectreplicationtest001 米国東部2 st-01
objectreplicationtest002 東日本 st-02
objectreplicationtest003 西日本 st-03

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

オブジェクトレプリケーション設定を2種類設定しています。フィルターの有無での挙動を確認しています。

レプリケーション元 レプリケーション先 設定
objectreplicationtest001 st-01 objectreplicationtest002 st-02

上書きコピー:すべて
フィルター:無し

objectreplicationtest001 st-02 objectreplicationtest003 st-03

上書きコピー:新しいファイルのみ
フィルター:あり

オブジェクトレプリケーション設定をしてみる

オブジェクトレプリケーション設定してみます。ストレージアカウント、BLOBコンテナーは作成済みの状態で実施します。
なおこちらに記載がありますが、ストレージアカウントに対して共同作成者以上の権限が必要になります。
データ保護のBLOB のバージョン管理やBLOB の変更フィードの設定が前提条件になっていますが、オブジェクトレプリケーションの設定した時点で自動で有効になります。

オブジェクトレプリケーション設定
ストレージアカウントのデータ管理になるオブジェクトレプリケーションを選択します。レプリケーション規則の設定を選択します。

組織のレプリケーション規則の作成画面が出てきます。
ターゲットのストレージアカウントを選択します。
ソースコンテナーと宛先コンテナーを選択します。

上書きコピーの設定は3パターンあります。
st-02へのレプリケーションではすべてを選択します。

プレフィックスの一致設定です。
こちらは特定のファイル名やフォルダーを指定する場合に利用します。
st-02へのレプリケーションでは空白のままとします。

設定が完了したら保存して適用するをクリックします。
保存が完了したらレプリケーションが開始されます。

レプリケーション元になるストレージアカウントではデータ保護にあるBLOBのバージョン管理、BLOBの変更フィードが有効である必要があります。

※自動的に有効になります。

宛先のストレージアカウントではBLOBのバージョン管理のみが有効になります。

※自動的に有効になります。

同様にobjectreplicationtest001からobjectreplicationtest003へのオブジェクトレプリケーション設定を実施します。

プレフィックスの設定を行います。今回はtest.txtとしています。

フィルターが1となっている事が分かります。
保存して適用するをクリックします。

 

レプリケーション規則の設定作業が完了するとこのように2つの規則が出来ている事が分かります。

ファイルをアップロードしてオブジェクトレプリケーションを確認してみる

コンテナーにファイルをアップロードしてみる

今回はsample.txtとtest.txtと言う2つのファイルをアップロードします。

BLOBコンテナーでファイルアップロード
コンテナーでファイルを選択しアップロードします。
コンテナーst-01で2つのファイルがアップロードされている事が分かります。

 レプリケーション先のコンテナーを確認する

レプリケーション先のコンテナーでファイルを確認してみます。st-03へのレプリケーションではフィルター設定をしています。

レプリケーションの確認

st-02のコンテナーを確認してみます。先ほどst-01でアップロードしたsample.txtとtest.txt2つのファイルがレプリケーションされている事が分かります。

st-03のコンテナーを確認してみます。先ほどst-01でアップロードしたsample.txtとtest.txt2つのファイルうちtest.txtのみがレプリケーションされている事が分かります。フィルターが機能している事が分かりました。

コンテナーでファイルを削除してみる

レプリケーション元のコンテナーでファイルを削除してみます。test.txtのみを削除してみました。

レプリケーションの確認

st-02のコンテナーを確認してみます。st-01で削除したtest.txtがなくなりsamle.txtのみがレプリケーションされている事が分かります。

st-03のコンテナーを確認してみます。st-01で削除したtest.txtがなくなったためすべてのファイルが消えている事が分かります。

非常にお手軽に設定できるため、使い勝手の良い機能かと思いました。
Premium(ブロックBLOB)でも利用できるのも良いかと思います。(2021年10月上旬ではプレビュー)

Azureストレージのライフルサイクル管理についてはこちらで試しています。

Azure Blobストレージを使ったNFS共有の作成はこちらでやっています。

Azure Backup Vaultを使ったAzure BLOB Storageのコンテナーバックアップリストアはこちら。