【OCI】ファイルストレージを使ったDR対策

# はじめに

今回はOracle Cloud Infrastructure（OCI）のファイルストレージサービスの
レプリケーション機能を使って、簡単にディザスタリカバリ（DR）構成を
組んでみたいと思います。

・ユースケース
プライマリリージョンで利用しているファイルストレージの重要なデータを
リージョン障害に見舞われた場合でも、そのままセカンダリリージョンで
利用できるようにする際に使います。
つまりシステムの可用性と信頼性を高め、ビジネスの中断を最小限に抑えて
業務を継続をすることが可能になります。

■参考
https://speakerdeck.com/ocise/ociji-shu-zi-liao-huairusutorezi-gai-yao

今回検証した構成はこちらです。

■構成
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/097cc7e7-0805-cc5b-7e4c-e1fb94c10c71.png)

プライマリリージョンにファイルストレージを作成し、
セカンダリリージョンをレプリケーションターゲットとして設定します。
レプリケーションを設定するとスナップショットが作成されるので
切り替える場合はセカンダリリージョンでのファイルストレージの
スナップショットからクローンを作成します。
クローンでマウントターゲットを作成するとプライマリリージョンの
データが復元されます。

■事前準備
VCN、サブネット（プライベート、パブリック）、セキュリティリスト等を
作成しておき、Computeを立てます。
（今回はOracle Linuxを利用しています）

作成方法については以下を参考にしてください。

■VCNの作成
https://oracle-japan.github.io/ocitutorials/beginners/creating-vcn/

■Computeの作成
https://oracle-japan.github.io/ocitutorials/beginners/creating-compute-instance/

■セキュリティリストの設定
詳細については公式サイトを参考にしてもらえればと思いますが、
ファイルストレージにアクセスするにはセキュリティリストの
ポートを開けておく必要がありますので、予め準備します。

今回の下記のように設定しています。

・イングレス（ステートフル）
TCPポート: 111, 2048, 2049, 2050
UDPポート: 111, 2048

・エグレス（宛先 - 0.0.0.0/0）
すべてのプロトコル (すべてのポートのすべてのトラフィック)

※上記はプライマリとセカンダリの両リージョンのマウントターゲットの
サブネットに対しての設定となります。

◆目次
1.ファイルストレージの作成 [プライマリリージョン]
2.レプリケーションの設定 [プライマリリージョン]
3.ファイルストレージの復元 [セカンダリリージョン]

## 1.ファイルストレージの作成 [プライマリリージョン]

今回は以下構成で検証しています。
プライマリリージョン = 大阪
セカンダリリージョン = サンノゼ

それでは早速、ファイルストレージの作成から入ります。

左上メニュー[Ξ]からストレージ、ファイルストレージを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/52bb9f37-05b6-aa53-bbb7-cfe6941ad282.png)

そのままファイル・システムの作成ボタンを実行します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/c0d2295e-4013-57e0-31b2-1cc799a87ae0.png)

下記のような画面が表示されるのでNFSのファイル・システムが
選択されていることを確認します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/d615bff3-9f5e-21db-2a30-0a29e687cba9.png)

ファイル・システム情報、エクスポート情報、マウント・ターゲット情報の
各セクションの右上に詳細の編集があるので必要に応じて入力します。

■ファイル・システム情報
ここでは名前だけ、FileSystemSourceとしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/dc6d2eda-d60f-f1f6-f107-a368b3c2bd78.png)

■エクスポート情報
こちらもエクスポート・パスだけ、/FileSystemSourceとしています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/3130e11a-a23f-4c5a-5d6f-1ef366993594.png)

■マウント・ターゲット情報
ここでは新規マウント・ターゲットの作成を選択し、下記を入力します。
マウント・ターゲット名: MountTargetSource
仮想クラウド・ネットワーク: 事前に作成しておいたVCN
サブネット: 事前に作成しておいたサブネット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/13332c6d-47e5-528f-578e-32f8afd29c18.png)

最後に作成ボタンを押して完了です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/68244b82-559e-0d19-5db9-5f3b602b0187.png)

作成されると下記のような画面になるので、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/15eb335f-727c-ba75-256b-514b3d6c346b.png)

エクスポート・パスのリンクを選択します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/1840b7b5-c5d2-d460-1344-da5ec265f713.png)

ここでマウント・コマンドを実行すると、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/cad10a25-7b09-bcfe-32ed-377c06ef237a.png)

各コマンドが表示されるので、必要に応じてコピーしておきます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/8dd1b481-6f29-d7ee-417b-01202f13baba.png)

先程コピーしたコマンドを使って
プライマリリージョンのOracle Linuxで以下を実行します。

NFSクライアントがインストールされていない場合は以下を実行
```
sudo yum install nfs-utils
```

続いてディレクトリの作成とマウントを実行
```
sudo mkdir -p /mnt/FileSystemSource
sudo mount 10.0.1.12:/FileSystemSource /mnt/FileSystemSource
```

さらにテストファイルを作成
```
cd /mnt/FileSystemSource/
echo "testinput" | sudo tee test.txt
```

最後にファイルができていることを確認
```
[opc@vm01 FileSystemSource]$ ls
test.txt
[opc@vm01 FileSystemSource]$ cat test.txt
testinput
```

以上でファイルストレージの作成は完了です。

## 2.レプリケーションの設定 [プライマリリージョン]

ファイルストレージ一覧から対象のファイル・システムを選択すると
詳細が表示されるので
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/905d8461-b221-c6bd-8846-e1589d485ad9.png)

左メニューのレプリケーションを選択
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/b2b2bc43-1f9b-3a6e-1e2c-7a7696943571.png)

レプリケーションの作成を実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/c9a8f679-5ba1-940b-d991-dc306fb7eedc.png)

・各項目を入力 ※以下入力項目は任意
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/ba993fde-6552-a01e-c441-92a2c402110d.png)

今回は以下の通り入力しています。

レプリケーション情報　名前: Replication-SanJose
新規ターゲット・ファイル・システムの作成 [選択]
名前: TargetFileSystem-SanJose
ターゲット・リージョン: US West (San Jose)
可用性ドメイン: TGjA:US-SANJOSE-1-AD-1

※選択できるターゲットリージョンについて
以下URLの「推奨ターゲット・リージョン」をご確認ください。
https://docs.oracle.com/ja-jp/iaas/Content/File/Tasks/FSreplication.htm

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/d29a7d28-5af2-2d61-df7d-140e68c4ca83.png)

コンパートメント: (環境に合わせて選択)
レプリケーション間隔: 15

最後に作成ボタンを実行します。

以上でレプリケーションの設定は完了です。

## 3.ファイルストレージの復元 [セカンダリリージョン]

レプリケーションの設定が終わった後、セカンダリリージョン（サンノゼ）の
ファイル・システムを確認すると先程設定したものができていることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/8317cfd0-bb31-8e0f-42b8-a09cba7f120f.png)

しばらく待ってから詳細からスナップショットを確認してみると
レプリケーションで設定したファイル・システムのスナップショットが
作成されていることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/8c4e62a5-5e17-2fc7-c94c-3815eb75977e.png)

今回は15分の設定をしていますが、2レコード作成されていたので
新しい方のレコードを選択します。

詳細からクローンを実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/3e0cd25e-500c-4862-001c-77996ffedb9b.png)

クローンのデタッチを選択し、作成ボタンを実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/64c5385f-7655-e1ec-38a7-cc3e909df459.png)

作成されると詳細が表示されるので
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/9194d3a7-d61d-0595-be0e-626e9dac567e.png)

下にスクロールして、エクスポートの作成を実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/97c17f1e-24db-e683-364a-867725f896e8.png)

後はプライマリーリージョンで設定した時と同じように
エクスポート情報とマウント・ターゲット情報の入力をします（そのままでもOK）

・エクスポート情報
エクスポート・パス: FileSystemDestination
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/0bb5117f-7dac-5dc1-2c9d-b510d1f820e8.png)

・マウント・ターゲット情報
新規マウント・ターゲットの作成 [選択]
新規マウント・ターゲット名: MountTargetDestination
仮想クラウド・ネットワーク: 事前に作成しておいたVCN
サブネット: 事前に作成しておいたサブネット
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/a120b0ef-3af0-b04d-8e9c-92e466703f97.png)

作成されるとファイル・システムの詳細が表示されるので
マウント・コマンドを実行
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/3055a860-32df-561f-ede7-6628f72f81b7.png)

後は必要に応じてコマンドをコピーしておく
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3493138/e6f7d61a-a895-5da2-191f-12362d25458d.png)

最後にセカンダリリージョンのOracle Linuxで
正常にレプリケーションが設定されているかを確認します。

ディレクトリの作成とマウントを実行
```
sudo mkdir -p /mnt/FileSystemDestination
sudo mount 10.5.1.195:/FileSystemDestination /mnt/FileSystemDestination
```

ファイルがレプリケーションされているか確認
```
[opc@vm02 ~]$ cd /mnt/FileSystemDestination
[opc@vm02 FileSystemDestination]$ ls
test.txt
[opc@vm02 FileSystemDestination]$ cat test.txt 
testinput
```

以上でプライマリリジョンのファイルストレージのデータが
コピーされていることが確認できました。

## おわり
OCIのファイルストレージは比較的簡単に
DR対策が取ることが可能です。