Azure Virtual Desktop (AVD) ネットワーク アーキテクチャ

Azure Virtual Desktop (AVD) を導入する際に、先ず検討の対象となるのがネットワークの構成です。ネットワークは、後から変更するのが難しいので、最初にキチンと設計しておきたいところです。

そこで、今回は、大規模な展開にも対応できるオススメ構成を考えてみました!

ジャジャーーーン!

・1つのAzureADテナントで構成しています。
・Azureネットワークの大原則である、ハブ&スポークにて構成しています。
・サブスクあたり、5000VMを推奨。
・ER Gateway=Standard:2000VM / High Performance:4500VM / Ultra:11000VM
・ER Gateway=ErGwScale:2000VM(ユニットあたり) 1~40ユニット
・サブスクあたり、ANFアカウントを1つ作成し、スポークに対してボリュームを提供する。
・ANFボリュームあたり、同時3000userまでを推奨 ※LargeVolumeは、50000userまで
※複数ボリュームを作成した場合、別のIPアドレスを使う事をお勧めします。
・ユーザー割り当ては”グループ”で行うこと
・よくある要件として、オンプレに”Web Proxy”を設置しています。

【スポークネットワークのコンポーネント】

Session Host
場所:スポークネットワークに展開
役割:VDI用VM
注意:ローリングアップデート台数を考慮すること

NSG
場所:Session Hostと同じサブネットに展開
役割:Session Hostからの社内サーバー向けの通信を制御

UDR
場所:Session Hostと同じサブネットに展開
役割:オンプレ向けの通信をExpressRoute Gatewayにルーティングする
Session Hostからの”デフォルトルート”をAzure Firewallにルーティングする

Peering
場所:ハブとスポークの間
役割:ハブネットワークとスポークネットワークを接続する

Private Link + Azure Monitor Private Link Scope
場所:Session Hostと同じサブネットに展開
役割:AVD(HostPool)のログをプライベートネットワーク経由でLog Analyticsにわたす

Azure NetApp Files
場所:Session Hostと同じ仮想ネットワークに展開
役割:ユーザープロファイルを保存するファイルサーバー※SKU:Standardを選択すること

【ハブネットワークのコンポーネント】

ExpressRoute Gateway
場所:ハブネットワークに展開
役割:オンプレ環境との接続に必要。オンプレ側のIPセグメント情報をUDRにわたす
注意:オンプレで利用しているIPセグメントをBGPで広報させること

Azure Firewall
場所:ハブネットワークに展開
役割:Session Hostからのインターネット(デフォルトルート)向けの通信を制御
注意:特に、M365を利用する場合、ポート上限に注意

Active Directory
場所:ハブネットワークに展開
役割:AzureADへのユーザー同期とSession Hostへのサインイン時の認証
注意:オンプレでも可能だが、Session Hostの近くに展開すること

AzureAD Connect
場所:ハブネットワークに展開
役割:Active DirecoryからAzureADに対してユーザー情報をわたす
注意:オンプレでも可能だが、Active Direcoryの近くに展開すること


ここからは、3つの通信経路を実現するための設定を見ていきます!

①AVDに必要な通信 [Session Host → NSG → UDR → Azure Firewall]
②Microsoft365 向けの通信 [Session Host → NSG → UDR → Azure Firewall]
③Webアクセス向けの通信 [Session Host → NSG → UDR → ER Gateway]

※AVDにおいて、インターネットからのインバウンド通信はありません。
※AVDに必要な通信についてはこちら

Session Host
PACファイルを利用し、M365向け通信をオンプレ(Web Proxy)経由にならないよう除外する

【PACファイル作成方法】

先ず、PACファイルを生成するためのPowerShellスクリプトをダウンロード
PowerShellにて”Get-PacFile.ps1″を実行して下さい。※赤字のみ環境に合わせて変更

.\Get-PacFile.ps1 -Type 2 -Instance Worldwide -TenantName Contoso -ClientRequestId b10c5ed1-bad1-445f-b386-b919946339a7 -DefaultProxySettings “PROXY 192.168.0.250:8080” > O365.pac

NSG
AVDに必要な通信、KMS、vNet間、オンプレ、Web(M365含む)通信を許可
※追加で必要な通信は適宜追加して下さい。

UDR
デフォルトルートを”Azure Firewall”に向け、ゲートウェイからのルート伝達を有効にする。
※FWを経由してオンプレに通信させたい場合は、ルート伝達を無効にし、ゲートウェイサブネットにUDR(スポークサブネット→Next:FW)を設置します。

Peering
リモートゲートウェイを有効にすることで、オンプレへのルートを確保する。

Azure Firewall
AVDに必要な通信、KMS、M365通信を許可
※Azure Firewallを経由することでパブリックIPを固定化できる。

Session Hostのルーティングテーブルを確認

・オンプレ(192.168.0.0/16)向けのルートがER Gatewayに向いている。
※PACファイルにより、Webアクセスは、オンプレ(Web Proxy)を経由する。

・デフォルトルートがAzure Firewallに向いている。
※AVD&M365向け通信


大規模環境に影響しそうな制限事項

・テナントあたり、最大1300のワークスペース
・ワークスペースあたり、最大400のホストプール
・テナントあたり、最大500のアプリケーショングループ ※申請可能
・アプリケーショングループあたり、最大500のRemoteApp
・ホストプールあたり、最大10,000のセッションホスト
・アプリケーショングループあたり、500以下のアプリケーション登録を推奨
・サブスクリプション[Instance(物理ホスト) / UserID / hour]あたりのAPI要求制限
読み取り=12,000 書き込み=1,200 削除=15,000
・サブスクリプションあたり、5,000VM以下を推奨(シングル/マルチセッション問わず)
※スケーリングツール利用の場合は、2,500VM以下を推奨
・サブスクリプションあたり、最大4,000のロール割り当て(ユーザー割り当てに影響)
・Azure Portal(ARM Template)からSession Hostを1度のデプロイで作成できる最大VM数
可用性セットなし=399VM。可用性セットあり=200VM
・FSLogix 1ユーザーあたりのIOPS(参考値):通常時=10 サインイン/サインアウト時=50