快速入門:使用 Azure PowerShell 藉由 Azure 應用程式閘道引導網路流量

在本快速入門中,您會使用 Azure PowerShell 來建立應用程式閘道。 然後,您會進行測試以確定能正常運作。

應用程式閘道會將應用程式 Web 流量導向至後端集區中的特定資源。 您可以將接聽程式指派給連接埠、建立規則,並將資源新增至後端集區。 為了簡單起見,本文使用簡單的設定,包括公用前端 IP 位址、在此應用程式閘道上裝載單一網站的基本接聽程式、基本的要求路由規則,以及後端集區中的兩部虛擬機器。

快速入門設定的概念圖。

您也可以使用 Azure CLI 或 Azure 入口網站完成本快速入門。

注意

應用程式閘道前端現在可支援雙堆疊 IP 位址 (預覽版)。 您現在可以建立最多四個前端 IP 位址,包括兩個 IPv4 位址 (公用和私人) 與兩個 IPv6 位址 (公用和私人)。

必要條件

Azure Cloud Shell

Azure Cloud Shell 是裝載於 Azure 中的互動式殼層環境,可在瀏覽器中使用。 您可以使用 Bash 或 PowerShell 搭配 Cloud Shell,與 Azure 服務共同使用。 您可以使用 Cloud Shell 預先安裝的命令,執行本文提到的程式碼,而不必在本機環境上安裝任何工具。

要啟動 Azure Cloud Shell:

選項 範例/連結
選取程式碼或命令區塊右上角的 [試試看]。 選取 [試試看] 並不會自動將程式碼或命令複製到 Cloud Shell 中。 Azure Cloud Shell 的「試試看」範例螢幕擷取畫面。
請前往 https://shell.azure.com,或選取 [啟動 Cloud Shell] 按鈕,在瀏覽器中開啟 Cloud Shell。 啟動 Azure Cloud Shell 的按鈕。
選取 Azure 入口網站右上方功能表列上的 [Cloud Shell] 按鈕。 顯示 Azure 入口網站中 Cloud Shell 按鈕的螢幕擷取畫面

若要使用 Azure Cloud Shell:

  1. 啟動 Cloud Shell。

  2. 選取程式碼區塊 (或命令區塊) 上的 [複製] 按鈕以複製程式碼或命令。

  3. 透過在 Windows 和 Linux 上選取 Ctrl+Shift+V;或在 macOS 上選取 Cmd+Shift+V,將程式碼或命令貼到 Cloud Shell 工作階段中。

  4. 選取 Enter 鍵執行程式碼或命令。

注意

建議您使用 Azure Az PowerShell 模組來與 Azure 互動。 若要開始使用,請參閱安裝 Azure PowerShell (部分機器翻譯)。 若要了解如何移轉至 Az PowerShell 模組,請參閱將 Azure PowerShell 從 AzureRM 移轉至 Az。

連接到 Azure

若要與 Azure 連線,請執行 Connect-AzAccount。

建立資源群組

在 Azure 中,您可以將相關資源配置到資源群組。 您可以使用現有的資源群組,或建立一個新的群組。

使用 New-AzResourceGroup Cmdlet 建立新的資源群組:

New-AzResourceGroup -Name myResourceGroupAG -Location eastus

建立網路資源

Azure 需要虛擬網路才能在您所建立的資源之間進行通訊。 應用程式閘道子網路只能包含應用程式閘道。 不允許任何其他資源。 您可以為應用程式閘道建立新的子網路,或使用現有的子網路。 在此範例中您會建立兩個子網路:一個用於應用程式閘道,另一個用於後端伺服器。 您可以根據自己的使用案例,將應用程式閘道的前端 IP 位址設定為「公用」或「私人」。 在此範例中,您會選擇公用前端 IP 位址。

  1. 使用 New-AzVirtualNetworkSubnetConfig 建立子網路組態。
  2. 使用 New-AzVirtualNetwork 以子網路組態建立虛擬網路。
  3. 使用 New-AzPublicIpAddress 建立公用 IP 位址。

注意

虛擬網路服務端點政策目前不支援應用閘道子網。

$agSubnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name myAGSubnet `
  -AddressPrefix 10.21.0.0/24
$backendSubnetConfig = New-AzVirtualNetworkSubnetConfig `
  -Name myBackendSubnet `
  -AddressPrefix 10.21.1.0/24
New-AzVirtualNetwork `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myVNet `
  -AddressPrefix 10.21.0.0/16 `
  -Subnet $agSubnetConfig, $backendSubnetConfig
New-AzPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -Name myAGPublicIPAddress `
  -AllocationMethod Static `
  -Sku Standard

建立應用程式閘道

此範例會使用標準 v2 SKU。

建立 IP 設定與前端連接埠

  1. 使用 New-AzApplicationGatewayIPConfiguration,建立讓您先前建立的子網路與應用程式閘道產生關聯的組態。
  2. 使用 New-AzApplicationGatewayFrontendIPConfig,建立會將您先前建立的公用 IP 位址指派給應用程式閘道的組態。
  3. 使用 New-AzApplicationGatewayFrontendPort 指派連接埠 80 來存取應用程式閘道。
$vnet   = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myAGSubnet
$pip    = Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress 
$gipconfig = New-AzApplicationGatewayIPConfiguration `
  -Name myAGIPConfig `
  -Subnet $subnet
$fipconfig = New-AzApplicationGatewayFrontendIPConfig `
  -Name myAGFrontendIPConfig `
  -PublicIPAddress $pip
$frontendport = New-AzApplicationGatewayFrontendPort `
  -Name myFrontendPort `
  -Port 80

注意

應用程式閘道前端現在可支援雙堆疊 IP 位址 (公開預覽)。 您現在可以建立最多四個前端 IP 位址,包括兩個 IPv4 位址 (公用和私人) 與兩個 IPv6 位址 (公用和私人)。

建立後端集區

  1. 使用 New-AzApplicationGatewayBackendAddressPool 來建立應用程式閘道的後端集區。 後端集區現在空白。 您在下一節中建立後端伺服器 NIC 時,會將其新增至後端集區。
  2. 使用 New-AzApplicationGatewayBackendHttpSetting 設定後端集區的各項設定。
$backendPool = New-AzApplicationGatewayBackendAddressPool `
  -Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
  -Name myPoolSettings `
  -Port 80 `
  -Protocol Http `
  -CookieBasedAffinity Enabled `
  -RequestTimeout 30

建立接聽程式並新增規則

Azure 需要接聽程式才能讓應用程式閘道將流量適當地路由到後端集區。 Azure 也需要接聽程式的規則,以得知要對傳入的流量使用哪個後端集區。

  1. 使用 New-AzApplicationGatewayHttpListener 以及您先前建立的前端設定和前端連接埠,來建立接聽程式。
  2. 使用 New-AzApplicationGatewayRequestRoutingRule 建立名為 rule1 的規則。
$defaultlistener = New-AzApplicationGatewayHttpListener `
  -Name myAGListener `
  -Protocol Http `
  -FrontendIPConfiguration $fipconfig `
  -FrontendPort $frontendport
$frontendRule = New-AzApplicationGatewayRequestRoutingRule `
  -Name rule1 `
  -RuleType Basic `
  -Priority 100 `
  -HttpListener $defaultlistener `
  -BackendAddressPool $backendPool `
  -BackendHttpSettings $poolSettings

建立應用程式閘道

您已建立必要的支援資源,接著請建立應用程式閘道:

  1. 使用 New-AzApplicationGatewaySku 指定應用程式閘道的參數。
  2. 使用 New-AzApplicationGateway 建立應用程式閘道。
$sku = New-AzApplicationGatewaySku `
  -Name Standard_v2 `
  -Tier Standard_v2 `
  -Capacity 2
New-AzApplicationGateway `
  -Name myAppGateway `
  -ResourceGroupName myResourceGroupAG `
  -Location eastus `
  -BackendAddressPools $backendPool `
  -BackendHttpSettingsCollection $poolSettings `
  -FrontendIpConfigurations $fipconfig `
  -GatewayIpConfigurations $gipconfig `
  -FrontendPorts $frontendport `
  -HttpListeners $defaultlistener `
  -RequestRoutingRules $frontendRule `
  -Sku $sku

提示

您可以修改 Name 和 Tier 參數的值,以使用不同的 SKU。 例如: Basic 。

注意

在支援可用性區域的區域中,如果您未透過 CLI、PowerShell、ARM/Bicep 或 REST API 在建立期間指定區域,Azure 應用程式閘道會自動啟用區域備援,並將執行個體分散到多個可用性區域以增強復原能力

後端伺服器

現在您已建立應用程式閘道,接著請建立將裝載網站的後端虛擬機器。 後端可以包含 NIC、虛擬機器擴展集、公用 IP 位址、內部 IP 位址、完整網域名稱 (FQDN),以及多租用戶後端,例如 Azure App 服務。

在此範例中,您會建立兩個虛擬機器,作為應用程式閘道的後端伺服器。 您也可以在虛擬機器上安裝 IIS,以確認 Azure 已成功建立應用程式閘道。

建立兩部虛擬機器

  1. 使用 Get-AzApplicationGatewayBackendAddressPool 取得最近建立的應用程式閘道後端集區設定。
  2. 使用 New-AzNetworkInterface 建立網路介面。
  3. 使用 New-AzVMConfig 建立虛擬機器組態。
  4. 使用 New-AzVM 建立虛擬機器。

當您執行下列程式碼範例以建立虛擬機器時,Azure 會提示您輸入認證。 輸入使用者名稱和密碼:

$appgw = Get-AzApplicationGateway -ResourceGroupName myResourceGroupAG -Name myAppGateway
$backendPool = Get-AzApplicationGatewayBackendAddressPool -Name myAGBackendPool -ApplicationGateway $appgw
$vnet   = Get-AzVirtualNetwork -ResourceGroupName myResourceGroupAG -Name myVNet
$subnet = Get-AzVirtualNetworkSubnetConfig -VirtualNetwork $vnet -Name myBackendSubnet
$cred = Get-Credential
for ($i=1; $i -le 2; $i++)
{
  $nic = New-AzNetworkInterface `
    -Name myNic$i `
    -ResourceGroupName myResourceGroupAG `
    -Location EastUS `
    -Subnet $subnet `
    -ApplicationGatewayBackendAddressPool $backendpool
  $vm = New-AzVMConfig `
    -VMName myVM$i `
    -VMSize Standard_DS2_v2
  Set-AzVMOperatingSystem `
    -VM $vm `
    -Windows `
    -ComputerName myVM$i `
    -Credential $cred
  Set-AzVMSourceImage `
    -VM $vm `
    -PublisherName MicrosoftWindowsServer `
    -Offer WindowsServer `
    -Skus 2016-Datacenter `
    -Version latest
  Add-AzVMNetworkInterface `
    -VM $vm `
    -Id $nic.Id
  Set-AzVMBootDiagnostic `
    -VM $vm `
    -Disable
  New-AzVM -ResourceGroupName myResourceGroupAG -Location EastUS -VM $vm
  Set-AzVMExtension `
    -ResourceGroupName myResourceGroupAG `
    -ExtensionName IIS `
    -VMName myVM$i `
    -Publisher Microsoft.Compute `
    -ExtensionType CustomScriptExtension `
    -TypeHandlerVersion 1.4 `
    -SettingString '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}' `
    -Location EastUS
}

測試應用程式閘道

雖然不需要 IIS 即可建立應用程式閘道,但您仍會在本快速入門中加以安裝,以確認 Azure 是否已成功建立應用程式閘道。

使用 IIS 測試應用程式閘道:

  1. 執行 Get-AzPublicIPAddress 以取得應用程式閘道的公用 IP 位址。
  2. 將公用 IP 位址複製並貼到瀏覽器的網址列中。 當您重新整理瀏覽器時,應該會看到虛擬機器的名稱。 有效的回應會確認應用程式閘道已成功建立,並可與後端順利連線。
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

測試應用程式閘道

清除資源

當您不再需要先前為應用程式閘道建立的資源時,請刪除資源群組。 當您刪除資源群組時,也可以刪除應用程式閘道及其所有相關資源。

呼叫 Remove-AzResourceGroup Cmdlet 以刪除資源群組:

Remove-AzResourceGroup -Name myResourceGroupAG

下一步