Azure Site Recovery(Azure to Azure シナリオ)の通信を制御する
TL;DR
Azure Site Recovery を使用する際の Azure to Azure シナリオにおける通信をアクセス制御し、可能な限り環境を閉域化する方法を紹介します。
※ Key Vault は Azure Disk Encryption の利用時のみで必要なため本記事では詳しく触れません。
Azure Site Recovery に必要な通信要件
Azure Site Recovery の展開、レプリケーションには、複数のコンポーネントが関係しており、それに応じた通信要件があります。通信要件は以下のドキュメントにまとまっています。
これらの接続を絵にすると以下のようになります。
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 のルートよりも優先される特徴があります。
ルートの選択の仕組みについては以下のドキュメントを参照してください。
Azure Site Recovery で利用されるサービスで、サービス エンドポイントがサポートされているサービスは、ストレージ アカウント
、Azure Active Directory
、Event Hub
、Key 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 ジョブ
から確認できます。まずはどのジョブでどのようなエラーが出ているか確認します。それぞれの項目をクリックすると、詳細なエラー内容を確認できます。
続いてトラブルシューティングのページを確認しましょう。恐らくほとんどのケースはこのドキュメントを確認することで解決できます。
エラー メッセージ : 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
のようなレコードを登録します。
ログ
Windows においては、以下のディレクトリにログが出力されています。
- C:\ProgramData\ASRSetupLogs
- モビリティエージェントインストール時のログです
- C:\WindowsAzure\Logs\Plugins\Microsoft.Azure.RecoveryServices.SiteRecovery.Windows
- Site Recovery 用の拡張のログです。
Discussion