Azure Application Gateway

Shallow Diveというか適当にみてみました。

詳しくはしばやん雑記をどうぞ。

 

作り方

Azure PowerShellから New-AzureApplicationGateway を実行します。

New-AzureApplicationGateway -Name BuchiAppGW -VnetName "Group 4thSubRG TESTVNET" -Subnets @("SUBNET1") -GatewaySize Small

インスタンスサイズはSmall/Medium/Largeから今のところ選択できます。また必ずVNETとそのSubnetを指定する必要があります。
※Subnetは複数指定できるようになっていますが、現状複数指定するとエラーになります。

> New-AzureApplicationGateway -Name BuchiAppGW -VnetName "Group 4thSubRG TESTVNET" -Subnets @("SUBNET1","SUBNET2","SUBNET3","SUBNET4")

New-AzureApplicationGateway : BadRequest: Only one subnet can be provided in the subnet list
At line:1 char:1
+ New-AzureApplicationGateway -Name BuchiAppGW -VnetName "Group 4thSubRG TESTVNET" ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : CloseError: (:) [New-AzureApplicationGateway], CloudException
    + FullyQualifiedErrorId : Microsoft.WindowsAzure.Commands.ServiceManagement.Network.ApplicationGateway.NewApplic
   ationGatewayCommand

作成後、振り先など設定を記述したXMLを作って Set-AzureApplicationGatewayConfigを実行します。

Set-AzureApplicationGatewayConfig -Name BuchiAppGW -ConfigFile test.xml


Name       HTTP Status Code     Operation ID                             Error
----       ----------------     ------------                             -----
Successful OK                   0797a28a-16fa-b6d1-9f68-50dc96f26a99

XMLはこんな感じです。(コピペ)

<?xml version="1.0" encoding="utf-8"?>
<ApplicationGatewayConfiguration xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/windowsazure">
    <FrontendPorts>
        <FrontendPort>
            <Name>FrontendPort1</Name>
            <Port>80</Port>
        </FrontendPort>
    </FrontendPorts>
    <BackendAddressPools>
        <BackendAddressPool>
            <Name>BackendPool1</Name>
            <IPAddresses>
                <IPAddress>10.0.0.1</IPAddress>
                <IPAddress>10.0.0.2</IPAddress>
            </IPAddresses>
        </BackendAddressPool>
    </BackendAddressPools>
    <BackendHttpSettingsList>
        <BackendHttpSettings>
            <Name>BackendSetting1</Name>
            <Port>80</Port>
            <Protocol>Http</Protocol>
            <CookieBasedAffinity>Enabled</CookieBasedAffinity>
        </BackendHttpSettings>
    </BackendHttpSettingsList>
    <HttpListeners>
        <HttpListener>
            <Name>HTTPListener1</Name>
            <FrontendPort>FrontendPort1</FrontendPort>
            <Protocol>Http</Protocol>
        </HttpListener>
    </HttpListeners>
    <HttpLoadBalancingRules>
        <HttpLoadBalancingRule>
            <Name>HttpLBRule1</Name>
            <Type>basic</Type>
            <BackendHttpSettings>BackendSetting1</BackendHttpSettings>
            <Listener>HTTPListener1</Listener>
            <BackendAddressPool>BackendPool1</BackendAddressPool>
        </HttpLoadBalancingRule>
    </HttpLoadBalancingRules>
</ApplicationGatewayConfiguration>

FrontendPort … Application Gatewayの外側のポートの定義です。このポートにきた通信をBackendPoolに流します
BackendAddressPool … 振り先のIPアドレス定義です。同じVNETのSubnetかパブリックのIPアドレスやVIPを指定します
BackendHttpSettingsList … 振り先の設定(ポート、プロトコル、CookieベースのAffinityのOn/Off)
HttpListener … 外側の設定。protocolはケースセンシティブでhttpかhttpsです。
HttpLoadBalancingRule … ARR的な挙動を決めます。定義したフロントエンドやバックエンドの定義を指定します。またTypeは負荷分散の方法を指定しますが現状「basic」(ラウンドロビン)のみのようです。

状態などはGet-AzureApplicationGatewayで参照できます。

>Get-AzureApplicationGateway -Name BuchiAppGW


Name          : BuchiAppGW
Description   :
VnetName      : Group 4thSubRG TESTVNET
Subnets       : {SUBNET1}
InstanceCount : 2
GatewaySize   : Small
State         : Stopped
VirtualIPs    : {}
DnsName       :

後は Start-ApplicationGateway で起動します。

Start-AzureApplicationGateway -Name BuchiAppGW

Name       HTTP Status Code     Operation ID                             Error
----       ----------------     ------------                             -----
Successful OK                   9018a5e7-78b0-b7b1-bb2b-f6558a646e6f

※ 今のところ結構時間(15分とか?)かかります。

起動後はStateがRunningになりグローバルのIPアドレスやDNS名が振られます。

Get-AzureApplicationGateway


Name          : BuchiAppGW
Description   :
VnetName      : Group 4thSubRG TESTVNET
Subnets       : {SUBNET1}
InstanceCount : 2
GatewaySize   : Small
State         : Running
VirtualIPs    : {104.214.139.177}
DnsName       : appgw-e35180f9-c14b-4d5c-9292-37498a21b3c0.cloudapp.net

ちなみにVNET側の一覧には表示されません。

image

また同じVNETからpingは通るしRDPも開いてる様子ですが当然ID/Passわからないので接続できません。

image

あとはVIPやDNS名を指定してDNSに登録したりすればOKですね。

止め方

Stop-AzureApplicationGatewayを使用します。止めるとVIPやDNS名が解放されます。完全に削除するにはRemove-AzureApplicationGatewayを使用します。

注意点

  • 現状、参加させることができるSubnetは1つ
  • 仮想ネットワークはv1(Azureポータルなどから作れる仮想ネットワークv2は不可)
  • ARMでも管理できません
  • 使われているのはARR2.5なのでWebSocket不可

SSL接続用の証明書

Add-AzureApplicationGatewaySslCertificate を使ってPFXファイルをアップロードします。簡単ですね。

参考

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中