🕌

Azure Site Recovery(Azure to Azure シナリオ)の通信を制御する

2023/04/27に公開

TL;DR

Azure Site Recovery を使用する際の Azure to Azure シナリオにおける通信をアクセス制御し、可能な限り環境を閉域化する方法を紹介します。
※ Key Vault は Azure Disk Encryption の利用時のみで必要なため本記事では詳しく触れません。

Azure Site Recovery に必要な通信要件

Azure Site Recovery の展開、レプリケーションには、複数のコンポーネントが関係しており、それに応じた通信要件があります。通信要件は以下のドキュメントにまとまっています。

https://learn.microsoft.com/ja-jp/azure/site-recovery/azure-to-azure-about-networking#outbound-connectivity-for-urls

これらの接続を絵にすると以下のようになります。

Azure Site Recovery を使用するには上記サービスへの通信経路を何らかの方法で確保しなければなりません。
これらのサービスへの通信は、主にインターネット、サービス エンドポイント、プライベート エンドポイントの3つの方法があります。
ただし、サービスによって対応している方法が異なるためそれぞれ組み合わせて使う必要があります。

接続パターン

パターン1: Azure Firewall/NSG を使う
(全ての通信をインターネットを経由する)

※便宜上インターネットと書いていますが、Microsoft のバックボーンの外部に通信することはありません。

Azure の場合、仮想マシンからインターネット方向への接続は既定で許可されています。そのため、Azure Site Recovery の対象とするだけで設定は完了します。
ただし、可能な限り不要なアウトバウンド接続を減らしたい(ホワイトリストで接続先を許可したい)場合は、それぞれのサービスの FQDN もしくは IP アドレスを、Azure Firewall 等のアプライアンスや NSG にホワイトリストに追加する必要があります。

接続要件を満たすために FQDN ベースで接続を許可する場合、Azure Firewall 等のアプライアンスを使用できます。その場合、送信方向の接続許可として通信要件にある FQDN を指定します。
一方で NSG の場合 FQDN は利用できませんが、サービス タグが利用できます。

それぞれの FQDN とサービス タグは以下の通りです。

サービス URL サービス タグ
ストレージ アカウント *.blob.core.windows.net Storage.<ソースリージョン>
Azure Active Directory login.microsoftonline.com AzureActiveDirectory
Site Recovery *.hypervrecoverymanager.windowsazure.com AzureSiteRecovery
Event Hub *.servicebus.windows.net EventHub.<ターゲットリージョン>
Automation *.automation.ext.azure.com GuestAndHybridManagement
Key Vault *.vault.azure.net AzureKeyVault

尚、ストレージ アカウントへの通信(レプリケーションのトラフィック) をインターネットに直接通信させるのではなく、 Azure Firewall 等のアプライアンスを経由することは大容量のトラフィックを処理することとなるため推奨されません
ストレージ アカウントについては次のパターンで説明するサービス エンドポイントを使用するか、UDR でインターネットに直接通信させます。

以下は NSG で設定した際の構成図です。

以下は Azure Firewall で設定した際の構成図です。ストレージ アカウントへの通信は UDR を使用しています。

パターン2 : サービス エンドポイントを使う

続いて、サービス エンドポイントを使う方法です。サービス エンドポイントは、対応しているサービスが限定されているものの、リソースに対するアクセス元を特定のサブネットに限定することができます。また、BGP のルートよりも優先される特徴があります。

ルートの選択の仕組みについては以下のドキュメントを参照してください。

https://learn.microsoft.com/ja-jp/azure/virtual-network/virtual-networks-udr-overview#how-azure-selects-a-route

Azure Site Recovery で利用されるサービスで、サービス エンドポイントがサポートされているサービスは、ストレージ アカウントAzure Active DirectoryEvent HubKey Vault です。
以下はサブネットのサービス エンドポイントの設定例です。

以下はストレージ アカウント を サービス エンドポイントを使用した場合の構成例です。
※ アクセス制御を Azure Firewall を使用していますが NSG でも同様です。

上記構成のように、Azure Firewall でアクセス制御も可能ですが、UDR で直接インターネットに通信させることもできます。
以下はルート テーブルの設定例です。172.27.2.4 は Azure Firewall のプライベート IP アドレスです。

パターン3 : プライベートエンドポイントを使う

プライベート エンドポイントを使うとリソースへの通信の宛先はプライベート IP アドレスになります。
プライベート エンドポイントがサポートされているサービスは、Azure Site Recovery とストレージ アカウントです(Key Vault も利用できますがここでは触れません)。

Azure Site Recovery でプライベート エンドポイントを利用する場合、ターゲット リージョン(フェールオーバー先のリージョン)に対してもプライベート エンドポイントを作成する必要があります。また複数のプライベート IP アドレスが必要になります。
構成が複雑になるため、サービス エンドポイントを使用することも検討しましょう。

サービス エンドポイントと同様に、プライベート エンドポイントがサポートされていないサービスは、インターネットに直接通信させます。

以下はプライベート エンドポイントを使用した場合の構成例です。

シナリオ例

強制トンネリング下での設定

オンプレミス環境とのハイブリッド接続を前提としたもう少し複雑なシナリオを考えてみます。

要件

  • ExpressRoute で 強制トンネリング を使用する
  • インターネットへの通信はオンプレミスを経由する
  • Azure のサービスを稼働させるための必要な通信(Azure Site Recovery で必要な通信)は Azure からインターネットへ直接通信させる
  • 構成を複雑にしないためにサービス エンドポイントを利用する

構成

要件から、アクセス経路の設定は以下のようにします。UDR で利用できるサービスタグは、NSG のサービス タグと同じです。
NSG は必須ではない(UDR で経路は出来ておりアクセス制御は要件に応じた設定を行う)ので適宜設定します。

サービス アクセス経路の設定方法
ストレージ アカウント サービス エンドポイント
Azure Active Directory UDR(to Internet)
Site Recovery UDR(to Internet)
Event Hub UDR(to Internet)
Automation UDR(to Internet)
Key Vault UDR(to Internet)

全体の構成は以下のようになります。Site Recovery に関する通信以外は赤線の経路でインターネットへ通信します。
※正確には Site Recovery 以外に Azure Active Directory の通信が必要な場合も、赤線は通らずにAzure から直接インターネットへ通信します。

トラブルシューティング

失敗したジョブは Site Recovery ジョブ から確認できます。まずはどのジョブでどのようなエラーが出ているか確認します。それぞれの項目をクリックすると、詳細なエラー内容を確認できます。


続いてトラブルシューティングのページを確認しましょう。恐らくほとんどのケースはこのドキュメントを確認することで解決できます。

https://learn.microsoft.com/ja-jp/azure/site-recovery/azure-to-azure-troubleshoot-errors

エラー メッセージ : Site Recovery の構成に失敗しました(エラー ID: 151192)

このエラーIDは、Azure AD への通信が出来ない場合に発生します。
アクセス制御(Azure Firewall / NSG)でアクセス許可をするか、UDR で直接インターネットへ接続に通信できるように設定します。

エラー メッセージ : Site Recovery の構成に失敗しました(エラー ID: 151072)

このエラーIDは、Site Recovery のエンドポイントへ通信できない場合に発生します。
アクセス制御(Azure Firewall / NSG)でアクセス許可をするか、UDR で直接インターネットへ接続に通信できるように設定します。

状態が"最初の回復ポイントを待っています"のまま進まない場合

ストレージ アカウントへのアクセスが出来ない可能性があります。アクセス制御、サービス エンドポイント、プライベート エンドポイントの設定を確認します。

"モビリティ サービスをインストールしてターゲットを準備しています" で失敗している場合

原因はさまざまありますが、名前解決できていない可能性があります。
特にプライベート エンドポイントを使用しているときは、Private DNS Zone に正しくレコードが登録されていること、仮想ネットワークにリンクされていることを確認します。

以下はゾーンの登録例です。

登録するレコードは以下のドキュメントに記載されています。{Vault-ID}-asr-pod01-{type}-.{target-geo-code}.privatelink.siterecovery.windowsazure.com のようなレコードを登録します。

https://learn.microsoft.com/ja-jp/azure/site-recovery/azure-to-azure-how-to-enable-replication-private-endpoints#create-private-dns-zones-and-add-dns-records-manually

ログ

Windows においては、以下のディレクトリにログが出力されています。

  • C:\ProgramData\ASRSetupLogs
    • モビリティエージェントインストール時のログです
  • C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.RecoveryServices.SiteRecovery.Windows
    • Site Recovery 用の拡張のログです。
Microsoft (有志)

Discussion