快速入门:通过 Azure PowerShell 使用 Azure 应用程序网关定向 Web 流量

在本快速入门中,你将使用 Azure PowerShell 创建一个应用程序网关。 然后对其进行测试以确保其正常运行。

该应用程序网关将应用程序 Web 流量定向到后端池中的特定资源。 你将向端口分配侦听器,创建规则,并向后端池中添加资源。 为简单起见,本文使用带有公共前端 IP 地址的简单设置、一个在应用程序网关上托管单个站点的基本侦听器、一个基本请求路由规则,以及后端池中的两台虚拟机。

应用程序网关资源

还可以使用 Azure CLIAzure 门户完成本快速入门。

先决条件

备注

本文已经过更新,以便使用 Azure Az PowerShell 模块。 若要与 Azure 交互,建议使用的 PowerShell 模块是 Az PowerShell 模块。 若要开始使用 Az PowerShell 模块,请参阅安装 Azure PowerShell。 若要了解如何迁移到 Az PowerShell 模块,请参阅 将 Azure PowerShell 从 AzureRM 迁移到 Az

连接到 Azure

若要连接到 Azure,请运行 Connect-AzAccount -Environment AzureChinaCloud

创建资源组

在 Azure 中,可将相关的资源分配到资源组。 可以使用现有资源组,也可以创建新组。

若要创建新的资源组,请使用 New-AzResourceGroup cmdlet:

New-AzResourceGroup -Name myResourceGroupAG -Location chinanorth2

创建网络资源

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 chinanorth2 `
  -Name myVNet `
  -AddressPrefix 10.21.0.0/16 `
  -Subnet $agSubnetConfig, $backendSubnetConfig
New-AzPublicIpAddress `
  -ResourceGroupName myResourceGroupAG `
  -Location chinanorth2 `
  -Name myAGPublicIPAddress `
  -AllocationMethod Static `
  -Sku Standard

创建应用程序网关

创建 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

创建后端池

  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 `
  -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 chinanorth2 `
  -BackendAddressPools $backendPool `
  -BackendHttpSettingsCollection $poolSettings `
  -FrontendIpConfigurations $fipconfig `
  -GatewayIpConfigurations $gipconfig `
  -FrontendPorts $frontendport `
  -HttpListeners $defaultlistener `
  -RequestRoutingRules $frontendRule `
  -Sku $sku

后端服务器

现在已创建了应用程序网关,接下来创建将托管网站的后端虚拟机。 后端可以包含 NIC、虚拟机规模集、公共 IP 地址、内部 IP 地址、完全限定的域名 (FQDN) 和多租户后端(例如 Azure 应用服务)。

在此示例中,你将创建用作应用程序网关的后端服务器的两个虚拟机。 还可以在虚拟机上安装 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 ChinaNorth2 `
    -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 ChinaNorth2 -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 ChinaNorth2
}

测试应用程序网关

虽然不需 IIS 即可创建应用程序网关,但本快速入门中安装了它,用来验证 Azure 是否已成功创建应用程序网关。

使用 IIS 测试应用程序网关:

  1. 运行 Get-AzPublicIPAddress 获取应用程序网关的公共 IP 地址。
  2. 复制该公共 IP 地址,并将其粘贴到浏览器的地址栏。 刷新浏览器时,应该会看到虚拟机的名称。 有效响应验证应用程序网关是否已成功创建,以及是否能够成功连接后端。
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress

测试应用程序网关

清理资源

如果不再需要通过应用程序网关创建的资源,请删除资源组。 删除资源组时,也会删除应用程序网关和及其所有的相关资源。

若要删除资源组,请调用 Remove-AzResourceGroup cmdlet:

Remove-AzResourceGroup -Name myResourceGroupAG

后续步骤