ARM 版の Application Gateway を PowerShell で作成する
今回はコマンドラインにて Application Gateway を作成する。Application Gateway をご存じでない方のために簡単に捕捉すると「機能が豊富なロードバランサ( Azure ロードバランサ比)」だ。よく使いたいといわれる Application Gateway の機能は以下だ。
一方でApplication Gateway は有料であり、中規模以上で2インスタンス以上でないと SLA が保証されない点に注意してほしい。以下は Application Gateway の価格 の抜粋だ。
Microsoft は、複数の中規模またはより大規模なインスタンスを持つ各 Application Gateway Service に対し、 99.95% 以上の可用性を保証します。インスタンスが 1 つのみ、あるいは小規模なインスタンスしか含まれない Application Gateway Services に関しては SLA は提供していません。SLA の詳細については、SLA のページを ご覧ください。
パスベースのルールを持つ Application Gateway を作成する PowerShell スクリプト
Application Gateway は管理ポータルからでも作成できるが、ルール名等々を柔軟に設定するには PowerShell が有効なので、以下を備忘録として張り付けておく。以下が前提なことに注意してほしい。
- リソースグループ my-demo-rg が作成済み
- 仮想ネットワーク my-demo-vnet が作成済みであり、waf-subnet が作成済み
- Application Gateway が配置されるサブネットと通信できる場所に 10.0.1.10 アドレスの WEB サーバが配置済み
- Application Gateway が配置されるサブネットと通信できる場所に 10.0.1.20 アドレスの WEB サーバが配置済み
# まずはログイン Get-AzureRmSubscription # 利用サブスクリプションを選択 Select-AzureRmSubscription -SubscriptionId "your subscription id" # 配置先のリソースグループ、仮想ネットワーク、サブネット、リージョンを指定 $rgName = "my-demo-rg" $vnetName = "my-demo-vnet" $subnetName = "waf-subnet" $location = "japanwest" $publicIPName = "APPGW-Public-IP" $wafName = "my-gateway" $vnet = Get-AzureRmVirtualNetwork -Name $vnetName -ResourceGroupName $rgName $subnet = $vnet.Subnets[0] $publicip = New-AzureRmPublicIpAddress -ResourceGroupName $rgName -name $publicIPName -location $location -AllocationMethod Dynamic $gipconfig = New-AzureRmApplicationGatewayIPConfiguration -Name $wafName -Subnet $subnet # 振り分け先のサーバを指定、複数指定する場合は , でつなげる $defaultPool = New-AzureRmApplicationGatewayBackendAddressPool -Name defaultPool -BackendIPAddresses 10.0.1.10 #1d34.170.185.46, 134.170.188.221,134.170.185.50 $adminPool = New-AzureRmApplicationGatewayBackendAddressPool -Name adminPool -BackendIPAddresses 10.0.1.20 #1d34.170.185.46, 134.170.188.221,134.170.185.50 # 80 番ポートを指定し、cookie ベースの振り分けを有効化 $poolSetting = New-AzureRmApplicationGatewayBackendHttpSettings -Name appGatewayBackendHttpSettings -Port 80 -Protocol Http -CookieBasedAffinity Enabled $fp = New-AzureRmApplicationGatewayFrontendPort -Name frontendport01 -Port 80 $fipconfig = New-AzureRmApplicationGatewayFrontendIPConfig -Name appGatewayFrontendIP -PublicIPAddress $publicip # デフォルトは 10.0.1.10、/admin/* は 10.0.1.20 の振り分け指定 $listener = New-AzureRmApplicationGatewayHttpListener -Name appGatewayHttpListener -Protocol Http -FrontendIPConfiguration $fipconfig -FrontendPort $fp $adminPathRule = New-AzureRmApplicationGatewayPathRuleConfig -Name "adminPathrule" -Paths "/admin/*" -BackendAddressPool $adminPool -BackendHttpSettings $poolSetting $urlPathMap = New-AzureRmApplicationGatewayUrlPathMapConfig -Name "urlpathmap" -PathRules $adminPathRule -DefaultBackendAddressPool $defaultPool -DefaultBackendHttpSettings $poolSetting $adminRule = New-AzureRmApplicationGatewayRequestRoutingRule -Name "adminRule" -RuleType PathBasedRouting -HttpListener $listener -UrlPathMap $urlPathMap # SLA が担保される SKU を指定 $sku = New-AzureRmApplicationGatewaySku -Name "Standard_Medium" -Tier Standard -Capacity 2 $appgw = New-AzureRmApplicationGateway -Name appgwtest -ResourceGroupName $rgName -Location $location -BackendAddressPools $defaultPool, $adminPool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -UrlPathMaps $urlPathMap -RequestRoutingRules $adminRule -Sku $sku -Debug
上記を実行すれば ARM 版の Application Gateway が作成されるはずだ。
参考
- パスベースのルーティングを使用して Application Gateway を作成する https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-create-url-route-arm-ps
- Azure リソース マネージャーを使用した、Application Gateway の作成、起動、または削除 https://docs.microsoft.com/ja-jp/azure/application-gateway/application-gateway-create-gateway-arm