-
Notifications
You must be signed in to change notification settings - Fork 0
MS_AzureVirtualNetwork
- 戻る(VPN、Azure)
- Azureの仮想ネットワーク
- Azure Key Vault
- Hyper-V ネットワークの仮想化
≒ Azure Virtual Network (VNET)
VFP(Virtual Filtering Platform) と呼ばれる仕組みで実装されている。
オーバーレイ・ネットワーク下で動作する物理ネットワーク。
移行メモ(略語): 元ページは「VPF(Virtual Packet Filtering)」と
表記しているが、Azure のホスト側 SDN データプレーンの正式名称は
VFP(Virtual Filtering Platform) である。
Microsoft の論文(NSDI'17 "VFP: A Virtual Switch Platform for
Host SDN in the Public Cloud")で公表されている。実装としては、Hyper-Vの仮想スイッチ拡張として動作し、
VXLAN によるカプセル化でテナントを分離している
(Hyper-V ネットワークの仮想化を参照)。
主要な 4 つの問題。
| # | 問題 |
|---|---|
| 1 | IP アドレス固定は OS から行わない(Azure 側で静的割り当てにする) |
| 2 | NIC は、通常、1 枚挿し + NSG(2 枚挿しも可能だが) |
| 3 | NLBが動作しない(VFP は NLB と組み合わせ不可能) |
| 4 | VFP は MSCS/WSFCの仮想 IP と組み合わせ不可能 |
- 4 の対処
- ILB(Internal Load Balancer)を利用する。
- 共有ディスク型クラスタから、AlwaysOn などの
レプリケーション型クラスタへ。
補足(この 4 点が「クラウドは違う」の核心): いずれも
**「OS から見た IP と、実際のネットワークが一致しない」**ことに起因する。
問題 理由 OS から IP を固定するな Azure の DHCP が正。OS 側で固定すると再起動で通信不能になる NLBが動かない NLB は同一 MAC を複数ノードで名乗るが、VFP が偽装として弾く WSFC の仮想 IP が動かない 仮想 IP の Gratuitous ARP が VFP を通らない オンプレの構成をそのまま持ち込むと必ず踏むため、
**クラウドでは「ロードバランサーを使う」**のが原則になる。
これは AWS(ENI / セキュリティ グループ)でも事情は同じである。
その他の問題。
- ILB の NSG が機能しない問題
-
SNAT ポートの枯渇問題
以下の②、③のケースで SNAT ポートを使用する。- ①:仮想マシン(パブリック IP アドレス無し)
- ②:仮想マシンにパブリック IP アドレスを付与
- ③:仮想マシンに ELB(External Load Balancer)を付与
SKU が Standard だと、SNAT ポートを調整可能らしい。
- Azure サービスの送信元が、パブリック IP アドレスにならない問題
- 異なるリージョンの場合、インターネットを経由するのでパブリック IP。
- 同じリージョンの場合、アンダーレイ・ネットワークを経由するのでプライベート IP。
補足(SNAT ポート枯渇は定番の障害): 外向き通信が多いアプリで
突然接続できなくなるという障害の主犯である。
- 既定の SNAT ポートはインスタンスあたり 1024 個程度(構成による)。
- TIME_WAIT が 4 分間ポートを掴むため、
短時間に大量の外部 API 呼び出しをすると枯渇する。
対策 内容 NAT Gateway を使う 最も確実。ポート数が大幅に増える(現在の推奨) 接続を使い回す HttpClientを使い捨てにしない(HttpClientの利用方法を参照)送信規則で明示配分 Standard LB の送信規則でポート数を割り当てる 2 番目はアプリ側の定番の実装ミスでもあり、
HttpClientをusingで毎回破棄していると
ソケットが枯渇する(クラウドに限らない問題)。
VNET 内をサブネッティングできる(Azureのサブネッティング)。
- VPN Gateway を作成する際の
VPNルータの VM と IP アドレスが存在する Subnet - 1 VNET、1 Gateway Subnet になるので注意
VNET のデフォゲ(ルータ)のルーティング・テーブルの設定。
| 方式 | 用途 |
|---|---|
| VPN Gateway(VPN Gateway) | インターネット経由の暗号化トンネル |
| Azure ExpressRoute | 専用線。帯域と SLA が保証される |
| Azure Peering Service | ISP 経由の経路最適化 |
| 仮想ネットワーク ピアリング | VNET 同士を接続 |
| Azure Private Link / Endpoint | PaaS を VNET 内の私設 IP で利用 |
| OA-LANとAzureのVNETの分離 | 業務 LAN との分離設計 |
FgCF (Financial-grade Cloud Fundamentals)
- VPN Gateway
- 専用線(Azure ExpressRoute / Azure Peering Service)
- 技術
- Network Security Group (NSG)
- 仮想ネットワーク ピアリング
- Hub に配置するモノ
- 各種ゲートウェイと踏み台、若しくは Azure Bastion
- DNS/DHCP、運用管理サーバ
- Hub Ex
- Hub に必要な IP アドレスが増えていく。
- その際、仮想ネットワーク ピアリングで Hub を拡張する。
代表的な構成パターン。
| パターン | 内容 |
|---|---|
| オンプレ延伸型 | Hub & Spoke 構成 |
| オンプレ連携型 | 上記 + Spoke にインバウンド + WAF |
| 浮島型 | 上記から Hub & Spoke のピアリングを切断。データ連携はストレージ等で |
補足(Hub & Spoke が定石である理由): 共通機能(ゲートウェイ・
ファイアウォール・踏み台・DNS)を Hub に集約し、
システムごとの VNET を Spoke として繋ぐ。
利点 内容 コスト 高価な ExpressRoute Gateway を 1 つで共用できる ガバナンス 出入口が Hub の 1 箇所に集まる。監査しやすい 分離 Spoke 同士は既定で通信できない(ラテラル ムーブメント対策) 最後の点が重要で、「1 つの Spoke が侵害されても
他の Spoke に横展開されない」という設計になる。
Azure の推奨アーキテクチャ(Cloud Adoption Framework)でも
標準の型とされている。
オンプレ延伸型の境界型(Hub & Spoke)構成の Hub から、
個別の Hub & Spoke を Azure Private Link / Endpoint で接続。
| 手段 | 内容 |
|---|---|
| VNET Injection | VNET 上に PaaS を組み込む形で配置。使えるサービスが限定的で高価 |
| Azure Private Link / Endpoint | VNET 上に Endpoint を引き込む。廉価で主要な方法 |
| Azure Service Endpoint | 同上(経路のみ。IP はパブリックのまま) |
| Azure Firewall | PaaS への外向き通信のロックダウン。高価 |
補足(Private Endpoint と Service Endpoint の違い): 混同されやすいので
整理しておく。
Service Endpoint Private Endpoint PaaS の IP パブリックのまま VNET 内の私設 IP 経路 Azure バックボーン経由 同左 オンプレから使えるか 不可 可(VPN / ExpressRoute 経由) DNS 変更不要 プライベート DNS ゾーンが必要 課金 無料 有料 「オンプレから閉域で PaaS を使いたい」なら Private Endpoint 一択。
ただし DNS の設計が要る点が導入時の主な難所になる。
- サポート エンジニアが Azure Networking をじっくりたっぷり語りつくす会
https://www.slideshare.net/ShuheiUda/azure-networking-165852712
-
Azure Virtual Network とは
https://learn.microsoft.com/azure/virtual-network/virtual-networks-overview -
ハブ スポーク ネットワーク トポロジ
https://learn.microsoft.com/azure/architecture/networking/architecture/hub-spoke -
SNAT ポート枯渇のトラブルシューティング
https://learn.microsoft.com/azure/load-balancer/troubleshoot-outbound-connection
Tags: 移行, インフラストラクチャ, クラウド, Azure, 通信技術
このWikiは「Open棟梁Project」,「OSSコンソーシアム 開発基盤部会」によって運営されています。