Azure Site Recovery + PrivateEndpointでVMの東西ディザスタリカバリーを構築する

Azure Site Recoveryは、Azure VMを異なるリージョンにレプリケーションしてディザスタリカバリー構成を取ることができるサービスですが、Private Endpointを使ってよりセキュアな構成を試してみました。
[公式ページ](https://docs.microsoft.com/ja-jp/azure/site-recovery/azure-to-azure-how-to-enable-replication-private-endpoints) がとても親切でこの通りにやればできますが、途中どっちのリージョンに作ればいいのか混乱したり、最終的な確認方法が書いてなかったので書き残します。

今回試したのは、東日本リージョンから西日本リージョンへのレプリケーションです。

# 前提条件
[前提条件](https://docs.microsoft.com/ja-jp/azure/site-recovery/azure-to-azure-how-to-enable-replication-private-endpoints#prerequisites-and-caveats) が重要なので一通り目を通しましょう。
Private Endpointで使う場合は専用のコンテナーが必要だったり、IPアドレスを確保しないといけないなど重要な注意点があります。

# 構成図
最終的な構成です。Site RecoveryコンテナーとStorage Accountに対してPrivate Endpointを有効にします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/1955c817-8764-d081-2879-6bbfd2d47459.png)

# 環境構築

## Virtual Machines & vNet
* レプリケーション対象のVMとvNetは、東日本リージョンに作成済みであることとします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/adccbbff-eebe-0956-1c24-d03e72702989.png)

## Storage Account(キャッシュ)
* キャッシュ用のStorage Accountは、東日本リージョンに作成済みであることとします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/9a9fbfd1-5d8e-6c7b-fdcb-27290c1cbddb.png)

## Recovery Serviceコンテナー作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/51b6bfc7-729a-e9f1-4cef-e15e39a9caf8.png)

* 手順は [公式ページ](https://docs.microsoft.com/ja-jp/azure/site-recovery/azure-to-azure-tutorial-enable-replication#create-a-recovery-services-vault) を参照ください。注意点としてSite Recoveryは西日本リージョンに作成します。

* 作成できたら、[設定]-[Identity]の順に選択し、[システム割り当て済み]の状態をオンにします。後ほど出てくるストレージアカウントに対してロール割り当てをするためのマネージドID設定となります。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/de7f61c3-ee6c-e2ea-8f07-3413737bc471.png)

## Private Endpoint(Site Recovery)作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/51fea06a-c8ec-d28b-7364-bf1870b92629.png)

* 手順は [公式ページ](https://docs.microsoft.com/ja-jp/azure/site-recovery/azure-to-azure-how-to-enable-replication-private-endpoints#create-private-endpoints-for-the-recovery-services-vault) の通りです。プライベートDNSゾーンはこのとき作成しておきます。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/1ae0d720-605a-691a-d985-1bd846d2b0a0.png)

## Private Endpoint(Storage Account)作成

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/36464d4a-4333-f6e3-f0ff-467dba88b294.png)

* 手順は [公式ページ](https://docs.microsoft.com/ja-jp/azure/site-recovery/azure-to-azure-how-to-enable-replication-private-endpoints#optional-create-private-endpoints-for-the-cache-storage-account) の通りです。プライベートDNSゾーンは作成します。

## Storage Accountへの権限追加

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/e9799dd0-5d25-fdac-c100-1c01f492ac5b.png)

* 事前に作成したStorage Accountの[IAM]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/e60d2ec0-c9b2-bd98-d56d-f708ecdaba09.png)

* [追加]-[ロールの割り当ての追加]の順に選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/f88b43aa-d5b3-56a5-1f2a-ecc5bcee5e3a.png)

* 役割に[共同作成者]を選び、選択欄にSite Recoveryコンテナーの名前を入力して選択します。Site RecoveryコンテナーのマネージドIDが有効になっていれば出力されてくるはずです。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/78259706-8898-1e75-4b01-b976c0a360e8.png)

* 同様に[ストレージBLOBデータ共同作成者]ロールも付与します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/76b7be32-dbb0-e728-f953-dac3ffa58a1a.png)

# レプリケーション
* Virtual Machinesの左メニューより[ディザスタリカバリー]を選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/a0563af9-3755-3c7d-a091-84d66b085ddc.png)

* ターゲットリージョンを西日本にします。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/ed8117ca-7336-9a0b-1135-094f77bb842a.png)

* ターゲット設定では西日本側のリソースグループ、vNetを指定します。なければ作成します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/bac53d9e-6f41-3037-8ac9-441133864f17.png)

* 記憶域設定では事前に作成した東日本のストレージアカウントを選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/701624d0-183c-6441-a70f-b8727f388d94.png)

* レプリケーション設定では事前に作成した西日本のRecovery Serviceコンテナーを選択します。  
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/a95f5313-b750-ed20-fb31-ed50aad52e89.png)

* しばらくして正常にレプリケーションが完了すればOKです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/180335/305c893a-29ab-b51f-be0f-cfd9bed02426.png)

# Private Endpoint経由か確認する
* 通信が本当にPrivate Endpoint経由になっているか確認します。(Cent OSで試しています)

* ソースVMにログインして以下ログを開きます。

```
# view /var/log/AzureRcmCli.log
```

* プライベートDNS宛ての通信がプライベートIPであればPrivate Endpoint経由になっています。

```
Connected to xxxxxxxxxxxxxxxxxxx-asr-pod01-rcm1.jpw.privatelink.siterecovery.windowsazure.com (10.x.x.x)
```

以上