Ignite 初日ですが、大量にアップデートが出ましたね。
事前に Azure PowerShell にオプション増えて察知できていた Active-Active Gateway も構成できるようになったので、まとめておきます。
何が変わったのか
今回新たに Virtual Network Gateway (VPN Gateway) の Active-Active 構成ができるようになりました。
これまでは 2 台のインスタンスが Active-Standby で、死んだら切り替わる動作のため、メンテナンスなり障害なりでダウンタイムが数分ほど発生しました。さらに言うと、Azure の VPN Gateway が持つ Public IP も 1 つだったため、オンプレとはセッションを一本しか張っておらず、仮にオンプレにルーターを二台おいても切り替えが発生した際の数分程度のダウンタイムは避けられませんでした。


これが、新たに 2 台のインスタンスそれぞれに Public IP を振れるようになって、オンプレと 2 セッション (ないし 2×2 セッション) 張れるようになったので、冗長性を高めることが可能になったというわけ。(BGP で経路の再計算をさせて切り替えるため、対応ルーターが必要と思われます)


要件
Azure 側の VPN Gateway は High Performance SKU 必須で、オンプレも BGP が喋れるルーターが必要になるので、そこそこお高い構成になります。あと、既に BGP が有効の Gateway であれば Public IpConfigurations に Public IP を足せば構成できそうですが、BGP が無効な場合は Gateway の再作成が必要になりますのでご注意を。
サンプル
取り急ぎ、事前にある程度組んでおいた PowerShell が通ることを確認したので、Active-Active Gateway を作成するサンプルを載せておきます。(オンプレとの接続までは未検証)
$ResourceGroupName = "<リソース グループ名>"
$Location = "<リージョン名>"
$VNetName = "<仮想ネットワーク名>"
$VNetPrefix = "10.0.0.0/16"
$GwPrefix = "10.0.0.0/28"
$Subnet1Prefix = "10.0.1.0/24"
New-AzureRmResourceGroup -Name $ResourceGroupName -Location $Location
$subnet1 = New-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" -AddressPrefix $GwPrefix
$subnet2 = New-AzureRmVirtualNetworkSubnetConfig -Name "Subnet1" -AddressPrefix $Subnet1Prefix
New-AzureRmVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName -Location $Location -AddressPrefix $VNetPrefix -Subnet $subnet1, $subnet2
$gwpip1 = New-AzureRmPublicIpAddress -Name gwpip1 -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod Dynamic
$gwpip2 = New-AzureRmPublicIpAddress -Name gwpip2 -ResourceGroupName $ResourceGroupName -Location $Location -AllocationMethod Dynamic
$vnet = Get-AzureRmVirtualNetwork -Name $VNetName -ResourceGroupName $ResourceGroupName
$subnet = Get-AzureRmVirtualNetworkSubnetConfig -Name "GatewaySubnet" -VirtualNetwork $vnet
$gwipconfig1 = New-AzureRmVirtualNetworkGatewayIpConfig -Name gwipconfig1 -SubnetId $subnet.Id -PublicIpAddressId $gwpip1.Id
$gwipconfig2 = New-AzureRmVirtualNetworkGatewayIpConfig -Name gwipconfig2 -SubnetId $subnet.Id -PublicIpAddressId $gwpip2.Id
New-AzureRmVirtualNetworkGateway -Name VNetGW1 -ResourceGroupName $ResourceGroupName -Location $Location -IpConfigurations $gwipconfig1,$gwipconfig2 -GatewayType Vpn -VpnType RouteBased -GatewaySku HighPerformance -ActiveActive $True -EnableBgp $True
で、エラーなくできるとこんな感じです。
IpConfigurations : {gwipconfig1, gwipconfig2}
GatewayType : Vpn
VpnType : RouteBased
EnableBgp : True
ActiveActive : True
GatewayDefaultSite :
ProvisioningState : Succeeded
Sku : Microsoft.Azure.Commands.Network.Models.PSVirtualNetworkGatewaySku
VpnClientConfiguration :
BgpSettings : Microsoft.Azure.Commands.Network.Models.PSBgpSettings
IpConfigurationsText : [
{
"PrivateIpAllocationMethod": "Dynamic",
"Subnet": {
"Id": "/subscriptions/49dde45f-5712-44b2-b0ab-296bde83af6b/resourceGroups/shuda0927/providers/Microsoft.Network/virtualNetworks/shuda0927/subnets/GatewaySubnet"
},
"PublicIpAddress": {
"Id": "/subscriptions/49dde45f-5712-44b2-b0ab-296bde83af6b/resourceGroups/shuda0927/providers/Microsoft.Network/publicIPAddresses/gwpip1"
},
"Name": "gwipconfig1",
"Etag": "W/\"0378e30c-82ac-4d27-9be3-c11ec55d16a9\"",
"Id": "/subscriptions/49dde45f-5712-44b2-b0ab-296bde83af6b/resourceGroups/shuda0927/providers/Microsoft.Network/virtualNetworkGateways/VNetGW1/ipConfigurations/gwipconfig1"
},
{
"PrivateIpAllocationMethod": "Dynamic",
"Subnet": {
"Id": "/subscriptions/49dde45f-5712-44b2-b0ab-296bde83af6b/resourceGroups/shuda0927/providers/Microsoft.Network/virtualNetworks/shuda0927/subnets/GatewaySubnet"
},
"PublicIpAddress": {
"Id": "/subscriptions/49dde45f-5712-44b2-b0ab-296bde83af6b/resourceGroups/shuda0927/providers/Microsoft.Network/publicIPAddresses/gwpip2"
},
"Name": "gwipconfig2",
"Etag": "W/\"0378e30c-82ac-4d27-9be3-c11ec55d16a9\"",
"Id": "/subscriptions/49dde45f-5712-44b2-b0ab-296bde83af6b/resourceGroups/shuda0927/providers/Microsoft.Network/virtualNetworkGateways/VNetGW1/ipConfigurations/gwipconfig2"
}
]
GatewayDefaultSiteText : null
SkuText : {
"Capacity": 2,
"Name": "HighPerformance",
"Tier": "HighPerformance"
}
VpnClientConfigurationText : null
BgpSettingsText : {
"Asn": 65515,
"BgpPeeringAddress": "10.0.0.4,10.0.0.5",
"PeerWeight": 0
}
ResourceGroupName : shuda0927
Location : japaneast
ResourceGuid : dd386981-ca4d-49a5-8ddf-9f81e892cf5e
Tag :
TagsTable :
Name : VNetGW1
Etag : W/"0378e30c-82ac-4d27-9be3-c11ec55d16a9"
Id : /subscriptions/49dde45f-5712-44b2-b0ab-296bde83af6b/resourceGroups/shuda0927/providers/Microsoft.Network/virtualNetworkGateways/VNetGW1
我が家の機材で疎通確認取れたら、またアップデートするかもしれません。()