SQL Server AlwaysOn Availability Groups Supported between Microsoft Azure Regions をそろそろ試さないとな~とおもい、まずは VNET 間の接続を試してみました。
書いてある内容は以下の記事と同じですので、この投稿よりは下の記事を読んだ方がわかりやすいかと。
今回の私の投稿ではアフィニティグループは設定していません。
VNET 間接続: 異なるリージョン間での Azure Virtual Network の接続
VNet-to-VNet: Connecting Virtual Networks in Azure across Different Regions
Configure a VNet to VNet Connection
サブスクリプション間で接続をしてみようと思ったので、まずは以下の構成を作成しています。
サブスクリプション | 仮想ネットワーク | 仮想ネットワークの IP |
サブスクリプション A | VNET1 | アドレス空間 : 192.168.0.0/24 (256) Subnet-1 : 192.168.0.0/25 (128) Gateway Subnet : 192.168.0.128/29 |
サブスクリプション B | VNET2 | アドレス空間 : 192.168.1.024 (256) Subnet-1 ; 192.168.1.0/25 (128) Gateway Subnet : 192.168.1.128/29 |
サイト間接続を有効にして、ゲートウェイの IP についてはダミーで [1.0.0.1] を 設定しています。
仮想ネットワークの作成が終了したら、各ネットワークで [ゲートウェイの作成] → [動的ルーティング] を作成します。
# ゲートウェイ作成のプロビジョニングが終了するまで後続で使用する VIPAddress は表示されませんので完了するまで気長に待ちます。
この状態から、冒頭に紹介した記事に倣って作業をしていきたいと思います。
まずは作成した仮想ネットワークのコンフィグをダウンロードします。
Add-AzureAccount $Subscriptions = Get-AzureSubscription | Out-GridView -OutputMode Multiple foreach ($Subscription in $Subscriptions){ Select-AzureSubscription -SubscriptionName $Subscription.SubscriptionName Get-AzureVnetConfig -ExportToFile "c:tempVNetConfig-$($Subscription.SubscriptionName).xml" }
実行すると、サブスクリプションの選択ができますので、仮想ネットワークのコンフィグをダウンロードするサブスクリプションを選択して、c:tenp にコンフィグをダウンロードします。
このコンフィグの [VPNGatewayAddress] はダミーを設定したものになりますので、これを接続が可能な IP に設定します。
変更する前の VNET1 のコンフィグが以下のものになります。
<?xml version="1.0" encoding="utf-8"?> <NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration"> <VirtualNetworkConfiguration> <Dns /> <LocalNetworkSites> <LocalNetworkSite name="VNET2"> <AddressSpace> <AddressPrefix>192.168.1.0/24</AddressPrefix> </AddressSpace> <VPNGatewayAddress>1.0.0.1</VPNGatewayAddress> </LocalNetworkSite> </LocalNetworkSites> <VirtualNetworkSites> <VirtualNetworkSite name="VNET1" Location="Japan East"> <AddressSpace> <AddressPrefix>192.168.0.0/24</AddressPrefix> </AddressSpace> <Subnets> <Subnet name="Subnet-1"> <AddressPrefix>192.168.0.0/25</AddressPrefix> </Subnet> <Subnet name="GatewaySubnet"> <AddressPrefix>192.168.0.128/29</AddressPrefix> </Subnet> </Subnets> <Gateway> <ConnectionsToLocalNetwork> <LocalNetworkSiteRef name="VNET2"> <Connection type="IPsec" /> </LocalNetworkSiteRef> </ConnectionsToLocalNetwork> </Gateway> </VirtualNetworkSite> </VirtualNetworkSites> </VirtualNetworkConfiguration> </NetworkConfiguration>
対向 (VNET2) のゲートウェイのアドレス (VPNGatewayAddress) として、[1.0.0.1] が設定されていますので、これを VNET2 の VIPAddress に修正します。
VIPAddress の取得はゲートウェイのプロビジョニングが終了したタイミングで以下のコマンドで取得します。
# AddAzureAccount の実行は必要に応じて実施してください。
$Subscriptions = Get-AzureSubscription | Out-GridView -OutputMode Multiple foreach ($Subscription in $Subscriptions){ Select-AzureSubscription -SubscriptionName $Subscription.SubscriptionName $Sites = Get-AzureVNetSite foreach ($Site in $Sites){ Get-AzureVNetGateway -VNetName $Site.Name | ft $Site.Name, State, VIPAddress } }
サブスクリプションを選択すると、仮想ネットワークの VIP が表示されます。
# ポータルから各仮想ネットワークのゲートウェイ IP アドレスを確認してもよいかと。
今回は VNET1 のコンフィグの VPNGatewayAddress に VNET2 の VIPAddress を、VNET2 のコンフィグには VNET1 の値を設定します。
設定後の例は以下の内容となります。
設定が終了したらコンフィグをアップロードします。
$Subscriptions = Get-AzureSubscription | Out-GridView -OutputMode Multiple foreach ($Subscription in $Subscriptions){ Select-AzureSubscription -SubscriptionName $Subscription.SubscriptionName Set-AzureVnetConfig -ConfigurationPath "c:tempVNetConfig-$($Subscription.SubscriptionName).xml" }
最後に事前共有キーの設定をします。
まずはどちらかのサブスクリプションの仮想ネットワークで事前共有キーを取得して、
$Subscription = Get-AzureSubscription | Out-GridView -OutputMode Single Select-AzureSubscription -SubscriptionName $Subscription.SubscriptionName Get-AzureVNetGatewayKey -VNetName VNET1 -LocalNetworkSiteName VNET2
同じ事前共有キーを使用するように設定します。
$Subscription = Get-AzureSubscription | Out-GridView -OutputMode Single Select-AzureSubscription -SubscriptionName $Subscription.SubscriptionName Set-AzureVNetGatewayKey -VNetName VNET1 -LocalNetworkSiteName VNET2 -SharedKey <前工程で取得した事前共有キー> $Subscription = Get-AzureSubscription | Out-GridView -OutputMode Single Select-AzureSubscription -SubscriptionName $Subscription.SubscriptionName Set-AzureVNetGatewayKey -VNetName VNET2 -LocalNetworkSiteName VNET1 -SharedKey <上記と同じ事前共有キー>
<?xml version="1.0" encoding="utf-8"?> <NetworkConfiguration xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/ServiceHosting/2011/07/NetworkConfiguration"> <VirtualNetworkConfiguration> <Dns /> <LocalNetworkSites> <LocalNetworkSite name="VNET2"> <AddressSpace> <AddressPrefix>192.168.1.0/24</AddressPrefix> </AddressSpace> <VPNGatewayAddress>23.xxx.xxx.119</VPNGatewayAddress> </LocalNetworkSite> </LocalNetworkSites> <VirtualNetworkSites> <VirtualNetworkSite name="VNET1" Location="Japan East"> <AddressSpace> <AddressPrefix>192.168.0.0/24</AddressPrefix> </AddressSpace> <Subnets> <Subnet name="Subnet-1"> <AddressPrefix>192.168.0.0/25</AddressPrefix> </Subnet> <Subnet name="GatewaySubnet"> <AddressPrefix>192.168.0.128/29</AddressPrefix> </Subnet> </Subnets> <Gateway> <ConnectionsToLocalNetwork> <LocalNetworkSiteRef name="VNET2"> <Connection type="IPsec" /> </LocalNetworkSiteRef> </ConnectionsToLocalNetwork> </Gateway> </VirtualNetworkSite> </VirtualNetworkSites> </VirtualNetworkConfiguration> </NetworkConfiguration>
以上で接続完了です。
切断状態になっていた場合は、ポータルから手動で接続すると動作を確認できるかと。
これで異なるサブスクリプション間の仮想マシンが相互に通信できる状態となりました。
AlwaysOn 可用性グループの環境を Azure 上に構築する検証がこれでさくっとできるとよいな~と。