教學課程:建立改善 Web 應用程式存取的應用程式閘道

如果您是 IT 系統管理員,並且想改善 Web 應用程式的存取,您可以最佳化應用程式閘道,以根據客戶需求並跨越多個可用性區域來調整規模。 本教學課程可協助您設定 Azure 應用程式閘道功能,以完成:自動調整、區域備援及保留的 VIP (靜態 IP)。 若要解決此問題,您將使用 Azure PowerShell Cmdlet 和 Azure Resource Manager 部署模型。

在本教學課程中,您會了解如何:

  • 建立自我簽署憑證
  • 建立自動調整虛擬網路
  • 建立保留公用 IP
  • 設定應用程式閘道基礎結構
  • 指定自動調整
  • 建立應用程式閘道
  • 測試應用程式閘道

如果您沒有 Azure 訂用帳戶,請在開始前建立免費帳戶

必要條件

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 請參閱安裝 Azure PowerShell 以開始使用。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az

本教學課程要求您在本機執行系統管理 Azure PowerShell 工作階段。 您必須安裝 Azure PowerShell 模組 1.0.0 版或更新版本。 執行 Get-Module -ListAvailable Az 以尋找版本。 如果您需要升級,請參閱安裝 Azure PowerShell 模組。 驗證 PowerShell 版本之後,請執行 Connect-AzAccount 以建立與 Azure 的連線。

登入 Azure

Connect-AzAccount
Select-AzSubscription -Subscription "<sub name>"

建立資源群組

在其中一個可用的位置建立資源群組。

$location = "East US 2"
$rg = "AppGW-rg"

#Create a new Resource Group
New-AzResourceGroup -Name $rg -Location $location

建立自我簽署憑證

若要在生產環境中使用,您應該匯入由受信任提供者所簽署的有效憑證。 在此教學課程中,您要使用 New-selfsignedcertificate 來建立自我簽署的憑證。 您可以使用 Export-PfxCertificate 搭配系統所傳回的指紋,以將 pfx 檔案從憑證匯出。

New-SelfSignedCertificate `
  -certstorelocation cert:\localmachine\my `
  -dnsname www.contoso.com

您應該會看到類似這個結果的內容:

PSParentPath: Microsoft.PowerShell.Security\Certificate::LocalMachine\my

Thumbprint                                Subject
----------                                -------
E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630  CN=www.contoso.com

使用指紋來建立 pfx 檔案。 以您選擇的密碼取代 <password>

$pwd = ConvertTo-SecureString -String "<password>" -Force -AsPlainText

Export-PfxCertificate `
  -cert cert:\localMachine\my\E1E81C23B3AD33F9B4D1717B20AB65DBB91AC630 `
  -FilePath c:\appgwcert.pfx `
  -Password $pwd

建立虛擬網路

建立具有一個自動調整應用程式閘道專用子網路的虛擬網路。 目前在每個專用子網路只可以部署一個自動調整應用程式閘道。

#Create VNet with two subnets
$sub1 = New-AzVirtualNetworkSubnetConfig -Name "AppGwSubnet" -AddressPrefix "10.0.0.0/24"
$sub2 = New-AzVirtualNetworkSubnetConfig -Name "BackendSubnet" -AddressPrefix "10.0.1.0/24"
$vnet = New-AzvirtualNetwork -Name "AutoscaleVNet" -ResourceGroupName $rg `
       -Location $location -AddressPrefix "10.0.0.0/16" -Subnet $sub1, $sub2

建立保留公用 IP

將 PublicIPAddress 的配置方法指定為 [靜態]。 自動調整應用程式閘道 VIP 只能是靜態。 不支援動態 IP。 只支援標準 PublicIpAddress SKU。

#Create static public IP
$pip = New-AzPublicIpAddress -ResourceGroupName $rg -name "AppGwVIP" `
       -location $location -AllocationMethod Static -Sku Standard -Zone 1,2,3

擷取詳細資料

擷取本機物件中的資源群組、子網路和 IP 詳細資料,來建立應用程式閘道的 IP 設定詳細資料。

$publicip = Get-AzPublicIpAddress -ResourceGroupName $rg -name "AppGwVIP"
$vnet = Get-AzvirtualNetwork -Name "AutoscaleVNet" -ResourceGroupName $rg
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "AppGwSubnet" -VirtualNetwork $vnet

建立 Web 應用程式

為後端集區設定兩個 Web 應用程式。 將 <site1-name><site-2-name> 取代為 azurewebsites.net 網域中的唯一名稱。

New-AzAppServicePlan -ResourceGroupName $rg -Name "ASP-01"  -Location $location -Tier Basic `
   -NumberofWorkers 2 -WorkerSize Small
New-AzWebApp -ResourceGroupName $rg -Name <site1-name> -Location $location -AppServicePlan ASP-01
New-AzWebApp -ResourceGroupName $rg -Name <site2-name> -Location $location -AppServicePlan ASP-01

設定基礎結構

以和現有標準應用程式閘道相同的格式,設定 IP 組態、前端 IP 組態、後端集區、HTTP 設定、憑證、連接埠、接聽程式和規則。 新的 SKU 會遵循與標準 SKU 相同的物件模型。

在 $pool 變數定義中取代兩個 Web 應用程式 FQDN (例如:mywebapp.azurewebsites.net)。

$ipconfig = New-AzApplicationGatewayIPConfiguration -Name "IPConfig" -Subnet $gwSubnet
$fip = New-AzApplicationGatewayFrontendIPConfig -Name "FrontendIPCOnfig" -PublicIPAddress $publicip
$pool = New-AzApplicationGatewayBackendAddressPool -Name "Pool1" `
       -BackendIPAddresses <your first web app FQDN>, <your second web app FQDN>
$fp01 = New-AzApplicationGatewayFrontendPort -Name "SSLPort" -Port 443
$fp02 = New-AzApplicationGatewayFrontendPort -Name "HTTPPort" -Port 80

$securepfxpwd = ConvertTo-SecureString -String "Azure123456!" -AsPlainText -Force
$sslCert01 = New-AzApplicationGatewaySslCertificate -Name "SSLCert" -Password $securepfxpwd `
            -CertificateFile "c:\appgwcert.pfx"
$listener01 = New-AzApplicationGatewayHttpListener -Name "SSLListener" `
             -Protocol Https -FrontendIPConfiguration $fip -FrontendPort $fp01 -SslCertificate $sslCert01
$listener02 = New-AzApplicationGatewayHttpListener -Name "HTTPListener" `
             -Protocol Http -FrontendIPConfiguration $fip -FrontendPort $fp02

$setting = New-AzApplicationGatewayBackendHttpSettings -Name "BackendHttpSetting1" `
          -Port 80 -Protocol Http -CookieBasedAffinity Disabled -PickHostNameFromBackendAddress
$rule01 = New-AzApplicationGatewayRequestRoutingRule -Name "Rule1" -RuleType basic `
         -BackendHttpSettings $setting -HttpListener $listener01 -BackendAddressPool $pool
$rule02 = New-AzApplicationGatewayRequestRoutingRule -Name "Rule2" -RuleType basic `
         -BackendHttpSettings $setting -HttpListener $listener02 -BackendAddressPool $pool

指定自動調整

現在您可以指定應用程式閘道的自動調整設定。

$autoscaleConfig = New-AzApplicationGatewayAutoscaleConfiguration -MinCapacity 2
$sku = New-AzApplicationGatewaySku -Name Standard_v2 -Tier Standard_v2

在此模式中,應用程式閘道會根據應用程式流量模式而自動調整。

建立應用程式閘道

建立應用程式閘道,並包含備援區域和自動調整設定。

$appgw = New-AzApplicationGateway -Name "AutoscalingAppGw" -Zone 1,2,3 `
  -ResourceGroupName $rg -Location $location -BackendAddressPools $pool `
  -BackendHttpSettingsCollection $setting -GatewayIpConfigurations $ipconfig `
  -FrontendIpConfigurations $fip -FrontendPorts $fp01, $fp02 `
  -HttpListeners $listener01, $listener02 -RequestRoutingRules $rule01, $rule02 `
  -Sku $sku -sslCertificates $sslCert01 -AutoscaleConfiguration $autoscaleConfig

測試應用程式閘道

使用 Get-AzPublicIPAddress 取得應用程式閘道的公用 IP 位址。 將公用 IP 位址或 DNS 名稱複製並貼到您瀏覽器的網址列。

$pip = Get-AzPublicIPAddress -ResourceGroupName $rg -Name AppGwVIP
$pip.IpAddress

清除資源

首先,探索使用應用程式閘道建立的資源。 然後,若不再需要這些資源,您可以使用 Remove-AzResourceGroup 命令將資源群組、應用程式閘道和所有相關資源移除。

Remove-AzResourceGroup -Name $rg

下一步