你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

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

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

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

快速入门设置的概念图。

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

注意

应用程序网关前端现在支持双堆栈 IP 地址(预览版)。 现在,可以创建最多四个前端 IP 地址:两个 IPv4 地址(公共和专用)和两个 IPv6 地址(公共和专用)。

先决条件

Azure Cloud Shell

Azure 托管 Azure Cloud Shell(一个可通过浏览器使用的交互式 shell 环境)。 可以将 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

提示

可以修改 NameTier 参数的值以使用不同的 SKU。 例如:Basic

后端服务器

现在已创建了应用程序网关,接下来创建将托管网站的后端虚拟机。 后端可以包含 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 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

后续步骤