OCIのストレージ・サービスのレプリケーションについてまとめてみた

# はじめに
2023年の1月13日についにOCIのファイル・ストレージ・サービス(FSS)でもクロスリージョン・レプリケーションをすることができるようになりました。
そこで今回OCIのストレージサービスのレプリケーションについてまとめていきたいと思い、この記事の執筆をしました。この記事では東京から大阪へレプリケーションする手順を記載しております。

**注意** 今回はクロスリージョン・レプリケーションを行うため必ず有償環境でありかつ2つ以上のリージョンをサブスクライブしている必要があります。

||ブロック・ボリューム |ファイル・ストレージ |オブジェクト・ストレージ |
|---|---|---|---|
|レプリケーションされるサービス |ブロック・ボリューム<br>ボリューム・グループ | ファイル・ストレージ |バケット|
|リージョン  |東京 → 大阪、シドニー、シンガポール、ソウル、春川<br>大阪 → 東京、ソウル、サンノゼ|東京→大阪、シンガポール<br>大阪 → 東京|すべてのリージョンで使用可能|
|課金  | *1 ソース・リージョンとターゲット・リージョンのストレージコスト<br>アウトバウンド・データ転送費用 |ソース・リージョンとターゲット・リージョンのストレージコスト<br>アウトバウンド・データ転送費用 |ソース・リージョンとターゲット・リージョンのストレージコスト<br>アウトバウンド・データ転送費用|
|*2 追加のポリシーの設定 |不要 |不要 |必要|

2023年4月現在の情報です。

**注意**
1. ターゲット・リージョンのブロック・ボリュームの課金に関しては、ソースのブロック・ボリュームのタイプに関係なく「より低いコスト」で課金されます。
1. ユーザー権限があることを前提としています。

# 前提条件
-  VCNがすでに作成されていること。
-  ブロック・ボリューム、ファイル・ストレージそしてバケットがすでに作成されていること。
-  有償環境であり2つ以上のリージョンをサブスクライブしていること。

# 1. ブロック・ボリュームのレプリケーション方法

ブロック・ボリュームでは事前に定義されたリージョン間でレプリケーションすることができます。ブート・ボリュームのアーキテクチャはブロック・ボリュームと同じなため、同じ方法でレプリケーションすることができます。またボリューム・グループ単位でレプリケーションをすることも可能です。
1. 左上にあるメニューボタンからストレージ→ブロックボリュームをクリックします。
1. 既存のブロックボリュームをクリックします。
1. 既存のブロック・ボリュームがある編集ボタンを押して、クロス・リージョン・レプリケーションの有効化を行います。クロス・リプリケーションの項目は一番下にあります。
![スクリーンショット 2023-03-14 150503.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/eb3566c4-9536-8321-8d90-e7ef23a260b2.png)
    - クロス・リージョン・レプリケーション - オン
    - リージョン - Japan Central(Osaka)
    - 可用性ドメイン - TGjA:AP-OSAKA-1-AD-1
    - 名前 - demo(任意)
1. 変更の保存を押したら、リージョンを変更します（今回の場合は大阪リージョン）。ブロック・ボリュームの一覧が表示されるので、左側のブロック・ボリュームのレプリカをクリックします。すると先ほど作成したものが確認できます。
![スクリーンショット 2023-03-17 100253.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/76d87cb6-2aa7-4c4a-9f1f-83cffcc3901d.png)

# 2. ファイル・ストレージのレプリケーション
2023年の1月にリリースされた新機能です。ファイル・ストレージのレプリケーションは1つのファイル・システムにつき最大3つまでレプリケーションを作成できます。レプリケーションが作成されると、レプリケーション用のスナップショットが作成されて、ソース・ファイル・システムの最後のスナップショット以降のデータ更新を取得して、ターゲット・ファイル・システムに転送されて適用されます。

## 1-1 初期同期

1. 既存のファイル・システムからレプリケーションを作成します。左上のストレージ → ファイル・システムをクリックします。
2. そして既存のファイル・システムを選択すると詳細画面が表示されるので、左のレプリケーションをクリックしたのちにレプリケーションの作成ボタンを押します。
![スクリーンショット 2023-03-30 143642.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/976e31a2-9f43-4420-3169-cdb572ef9e60.png)

    - 名前 - Replication-demo
    - ターゲット・ファイル・システム - 新規ターゲット・ファイル・システムの作成
        - 名前 - TargetFileSystem-demo
        - ターゲット・リージョン
        - 可用性ドメイン - TGjA:AP-OSAKA-1-AD-1
        - コンパートメント - 任意
    - 暗号化 - Oracle管理キーを使用した暗号化
2. レプリケーションが作成されるとレプリケーションの詳細画面が表示されます。
![スクリーンショット 2023-04-03 103101.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/49c356ba-8646-acff-de1a-cc2b95376df9.png)

2. レプリケーションが宛先リージョンでもできているか確認します。リージョンを宛先リージョン(大阪リージョン)にします。
2. ファイル・システムの一覧が表示されるので、宛先として設定したファイル・システムをクリックします。するとエクスポートが出来ないファイル・システムであると確認できます。

## 1-2 フェイル・オーバーの手順
ソース・リージョンで障害などが発生して使用できなくなった場合は、宛先リージョンにあるファイル・システムの最新のスナップ・ショットを確認してクローンを作成してターゲット・リージョンで使えるようにします。

1.  ファイル・システムの詳細画面が現在表示されているので、左側のリソースからスナップショットをクリックします。そして最新のスナップショットを確認します。
1.  最新のスナップショットの右側のメニューボタンからクローンをクリックします。(クローンで作成されるファイル・システムの名前等を編集したい場合は詳細の編集をクリックして編集してから作成ボタンを押します。)
![スクリーンショット 2023-03-28 100548.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/6462daa9-8cef-f324-557c-93a96ce9b833.png)

1.  作成ボタンを押すとすぐにクローンが作成されます。
1.  クローンはすぐに作成されます。作成後にレプリケーション・リソースを削除します。左上のファイル・システムをクリックします。
1.  ファイル・システムのリストが表示されるので、レプリケーションを作成した際に宛先に指定したファイル・システムをクリックします。
1.  ファイル・システムの詳細画面が表示されるので、ファイル・システム情報のレプリケーション・ターゲットと書かれているところをクリックします。
![スクリーンショット 2023-04-03 103406.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/f56dcc9b-c630-0c6c-5c48-77d6bbec121e.png)

1.  レプリケーション・ターゲット・リソースを削除します。
1.  もしターゲット・リージョンでファイル・システムを使用したい場合は、クローンで作成されたファイル・システムにエクスポート・パスを設定してNFSでマウントしてください。

## 1-3 フェイル・バックの手順
フェイル・バックをする方法として2種類あります。新しい新規ファイル・システムを作成するか、もしくは既存のファイルシステムのクローンを作成してそれにフェイルバックするかです。

1. プライマリ・リージョンにリージョンを変更して既存のファイル・システムを選択します。左側のリソースの中にあるレプリケーションをクリックします。そしてエラーになっているレプリケーション・リソースをクリックして削除します。
![スクリーンショット 2023-03-29 113215.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/96efbb11-2e61-569a-2e31-9aad406339f7.png)

1. クローンを作成してからフェイル・バックを行う場合は、リソースの中のスナップショットをクリックしてクローンを作成します。
1. フェイル・バックを行うために宛先リージョンに移動します。
1. 先ほどクローンで作成したファイル・システムをクリックします。
1. そしてリソースのレプリケーションをクリックして逆方向レプリケーションを行います。初期同期で行った手順に従い、宛先をプライマリ・リージョン、宛先ファイル・システムを新規ファイルシステムを作成するかもしくはクローンの情報を入力して行います。
1. レプリケーションが作成されると、レプリケーションの詳細画面が表示されて逆方向レプリケーションされます。


# 3. オブジェクト・ストレージのレプリケーション

オブジェクト・ストレージ・サービスのレプリケーションを行う際は、バケット単位でレプリケーションすることができます。レプリケーションを使用するにはサービス権限をソース・リージョンと宛先リージョンに事前に付与する必要があります。またレプリケーション・ポリシーが作成された以前にアップロードされたオブジェクトは宛先リージョンのバケットに反映されないことに注意してください。

1. サービス権限を行うためにポリシーの設定画面を開きます。左上のメニューボタンからアイデンティティ → ポリシー を選択して、ポリシーの作成ボタンをおして以下のように設定します。
![スクリーンショット 2023-03-17 102618.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/a4eb6675-c04c-2180-b821-b38e63872766.png)

    - 名前 : demo_object-storage(任意) 
    - 説明 : オブジェクトストレージのサービス権限
    - コンパートメント : 任意
    - ポリシー・ビルダー
        - Allow service <リージョンの識別子> to manage object-family in compartment <コンパートメント名>
        - Allow service <リージョンの識別子> to manage object-family in compartment <コンパートメント名>

    リージョンの識別子は[こちら](https://docs.oracle.com/ja-jp/iaas/Content/General/Concepts/regions.htm#top)を確認してください。

2. バケットの詳細画面からレプリケーションを作成します。左側のメニューボタンから ストレージ → バケット を選択します。
2. そして既存のバケットをクリックします。(今回の場合はdemo_backet)
2. スクロールダウンして、左側のリソースの中のレプリケーション・ポリシーをクリックしてポリシーの作成ボタンを押します。
![スクリーンショット 2023-04-03 104351.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/a1151a00-2720-c7f6-9cd1-664dc408fa82.png)

    - 名前　- demo-replication-policy
    - 宛先リージョン - Japan Central(大阪)
    - <コンパートメント名>の宛先バケット - 任意    
2. レプリケーションポリシーが作成されると、レプリケーション・ステータスがアクティブになっていることを確認できます。
![スクリーンショット 2023-03-27 164012.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/790168b7-0237-6bf2-ce8e-995e5868381c.png)

2. オブジェクトをアップロードします。リソース → オブジェクト をクリックしてアップロードのボタンを押します。
![スクリーンショット 2023-03-27 174134.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/58c920b7-bf0b-11f2-0a26-8239ccd9f3e9.png)

    - オブジェクト名の接頭辞 オプション - 任意
    - ストレージ層 - 標準
    - コンピュータからファイルを選択 - 任意(ご自身のファイルを選択してください)
6. アップロードボタンを押して閉じるのボタンを押します。するとアップロードされていることが分かります。

3. 宛先リージョンのバケットにレプリケーションできているか確認します。リージョンを変更します。(このチュートリアルでは大阪リージョン)。
3. バケットのリストが表示されるので、宛先バケットとして設定したバケットをクリックして、オブジェクトを確認すると先ほどアップロードしたオブジェクトが確認できます。
![スクリーンショット 2023-03-27 174802.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3279965/7dd602f2-9c88-2571-f963-7cd554d076fa.png)

# 参考文献
- [ボリュームのレプリケート](https://docs.oracle.com/ja-jp/iaas/Content/Block/Concepts/volumereplication.htm)
- [ファイル・システム・レプリケーション](https://docs.oracle.com/ja-jp/iaas/Content/File/Tasks/FSreplication.htm)
- [レプリケーションの使用](https://docs.oracle.com/ja-jp/iaas/Content/Object/Tasks/usingreplication.htm)
- [ブロック・ボリュームをバックアップする](https://oracle-japan.github.io/ocitutorials/intermediates/taking-block-volume-backups/)
- [【Oracle Cloud】ボリュームグループ単位でのクロスリージョン・レプリケーションの設定](https://qiita.com/Qiitann/items/61ba1fe0a4ec82f35e69)
- [オブジェクト・ストレージの高度な設定](https://oracle-japan.github.io/ocitutorials/intermediates/object-storage-advanced/)