こんにちは。
Azure App Service では、 VNet 統合によって App Service からのアウトバウンドトラフィックを VNet 経由にすることができます。
これにより、その他の Azure サービス等とプライベートに通信ができるため、多くのユースケースで使用されるものです。
しかし、 VNet 統合をするためには専用サブネットが必要となりますが、このサブネットレンジ (大きさ) の考え方が少しややこしいためご紹介します。
VNet 統合には専用サブネットが必要
App Service を VNet 統合するためには、専用のサブネットが必要です。
Azure Portal から VNet 統合を設定する場合、プライベートエンドが設定されている VNet は統合先として選択できず、空のサブネットのみが選択可能となっています。
App Service プランごとに VNet 統合できるサブネットは一つだけ
複数の App Service が、それぞれ別の App Service プラン上で動作している場合、 2 つの App Service を同一の VNet に統合するためには 2 つの VNet 統合用サブネットを作成する必要があります。
しかし、 2 つ (もしくはそれ以上) の App Service が一つの App Service プラン上で動作している場合は、同一のサブネットを統合先として設定できます。 逆に、 App Service プラン内に配置された複数の App Service をそれぞれ別の VNet に統合することはできず、 App Service プランごとに統合先として選択できるサブネットは一つだけです。
同じ App Service プラン内のすべてのアプリで、特定のサブネットに対して同じ仮想ネットワーク統合のみを使用できます。 アプリで同じ仮想ネットワーク内の別の仮想ネットワークまたは別のサブネットに接続する必要がある場合は、別の App Service プランを作成する必要があります。
VNet 統合用のサブネットレンジは /26
が推奨値
App Service を「作成済みのサブネット」に統合する場合、統合先として選択可能なサブネットの最小サイズは /28 となっています。
しかし、Azure Portal の "App Service > ネットワーク > VNET 統合 > VNet の追加" から統合先のサブネットを新規作成する場合、作成可能なサブネットの最小サイズは /27 となっています。
App Service が使用する IP アドレス数について
VNet 統合した App Service では、インスタンスごとに統合先サブネットから一つのアドレスが使用されます。
そのため、 VNet 統合用サブネットに十分な大きさがないとスケールアウトできるインスタンスの最大数が制限され、 App Service プランに割り当てられる最大インスタンス数よりも少なる可能性があります。
例えば、 Premium V3 レベルの App Service プランではスケールアウト可能な最大インスタンス数は 30 個となっていますが、この App Service プラン上で動作する App Service を /28 のサブネットに VNet 統合した場合、使用可能なアドレス数が不足しスケールアウト可能な最大インスタンス数は 5 個に制限されてしまいます。
これらの理由から、 VNet 統合用サブネットの大きさは /26 が推奨されています。
サブネット容量に関する問題を回避するには、64 個のアドレスを持つ /26 を使用してください。
サブネットレンジごとのスケールアウト可能な最大インスタンス数
使用する App Service プランごとに、最大インスタンス数は異なるため、それぞれの数をカバーできるサブネットレンジでサブネットを作成することが大切です。