SE の雑記

SQL Server の情報をメインに Microsoft 製品の勉強内容を日々投稿

異なるサブスクリプションで VNET 間接続を試してみる

leave a comment

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 は表示されませんので完了するまで気長に待ちます。
image

この状態から、冒頭に紹介した記事に倣って作業をしていきたいと思います。
まずは作成した仮想ネットワークのコンフィグをダウンロードします。

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 にコンフィグをダウンロードします。

image

このコンフィグの [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 アドレスを確認してもよいかと。

image

今回は 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>

以上で接続完了です。

切断状態になっていた場合は、ポータルから手動で接続すると動作を確認できるかと。

imageimage

これで異なるサブスクリプション間の仮想マシンが相互に通信できる状態となりました。

AlwaysOn 可用性グループの環境を Azure 上に構築する検証がこれでさくっとできるとよいな~と。

Share

Written by Masayuki.Ozawa

6月 24th, 2014 at 3:46 pm

Leave a Reply