快速入门:通过 Azure PowerShell 使用 Azure 应用程序网关定向 Web 流量
在本快速入门中,你将使用 Azure PowerShell 创建一个应用程序网关。 然后对其进行测试以确保其正常运行。
该应用程序网关将应用程序 Web 流量定向到后端池中的特定资源。 你将向端口分配侦听器,创建规则,并向后端池中添加资源。 为简单起见,本文使用带有公共前端 IP 地址的简单设置、一个在应用程序网关上托管单个站点的基本侦听器、一个基本请求路由规则,以及后端池中的两台虚拟机。
还可以使用 Azure CLI 或 Azure 门户完成本快速入门。
注意
应用程序网关前端现在支持双堆栈 IP 地址(预览版)。 现在,可以创建最多四个前端 IP 地址:两个 IPv4 地址(公共和专用)和两个 IPv6 地址(公共和专用)。
先决条件
- 具有活动订阅的 Azure 帐户。 创建帐户。
- Azure PowerShell 1.0.0 或更高版本(如果在本地运行 Azure PowerShell)。
注意
建议使用 Azure Az PowerShell 模块与 Azure 交互。 请参阅安装 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 地址。
- 使用
New-AzVirtualNetworkSubnetConfig
创建子网配置。 - 使用
New-AzVirtualNetwork
创建使用这些子网配置的虚拟网络。 - 使用
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
创建应用程序网关
此示例中使用了标准 v2 SKU。
创建 IP 配置和前端端口
- 使用
New-AzApplicationGatewayIPConfiguration
创建配置,用以将创建的子网与应用程序网关相关联。 - 使用
New-AzApplicationGatewayFrontendIPConfig
创建配置,用以为应用程序网关分配前面创建的公共 IP 地址。 - 使用
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 地址(公共和专用)。
创建后端池
- 使用
New-AzApplicationGatewayBackendAddressPool
创建应用程序网关的后端池。 后端池此时为空。 在下一部分中创建后端服务器 NIC 时,会将它们添加到后端池中。 - 使用
New-AzApplicationGatewayBackendHttpSetting
配置后端池的设置。
$backendPool = New-AzApplicationGatewayBackendAddressPool `
-Name myAGBackendPool
$poolSettings = New-AzApplicationGatewayBackendHttpSetting `
-Name myPoolSettings `
-Port 80 `
-Protocol Http `
-CookieBasedAffinity Enabled `
-RequestTimeout 30
创建侦听器并添加规则
Azure 需要一个侦听器才能使应用程序网关以适当方式将流量路由到后端池。 Azure 还需要一项规则,使侦听器了解将哪个后端池用于传入流量。
- 使用
New-AzApplicationGatewayHttpListener
以及前面创建的前端配置和前端端口创建侦听器。 - 使用
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
创建应用程序网关
创建所需的支持资源以后,即可创建应用程序网关:
- 使用
New-AzApplicationGatewaySku
指定应用程序网关的参数。 - 使用
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
提示
可以修改 Name
和 Tier
参数的值以使用不同的 SKU。 例如:Basic
。
后端服务器
现在已创建了应用程序网关,接下来创建将托管网站的后端虚拟机。 后端可以包含 NIC、虚拟机规模集、公共 IP 地址、内部 IP 地址、完全限定的域名 (FQDN) 和多租户后端(例如 Azure 应用服务)。
在此示例中,你将创建用作应用程序网关的后端服务器的两个虚拟机。 还可以在虚拟机上安装 IIS,以验证 Azure 是否已成功创建应用程序网关。
创建两个虚拟机
- 使用
Get-AzApplicationGatewayBackendAddressPool
获取最近创建的应用程序网关后端池配置。 - 使用
New-AzNetworkInterface
创建网络接口。 - 使用
New-AzVMConfig
创建虚拟机配置。 - 使用
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 测试应用程序网关:
- 运行
Get-AzPublicIPAddress
获取应用程序网关的公共 IP 地址。 - 复制该公共 IP 地址,并将其粘贴到浏览器的地址栏。 刷新浏览器时,应该会看到虚拟机的名称。 有效响应验证应用程序网关是否已成功创建,以及是否能够成功连接后端。
Get-AzPublicIPAddress -ResourceGroupName myResourceGroupAG -Name myAGPublicIPAddress
清理资源
如果不再需要通过应用程序网关创建的资源,请删除资源组。 删除资源组时,也会删除应用程序网关和及其所有的相关资源。
若要删除资源组,请调用 Remove-AzResourceGroup
cmdlet:
Remove-AzResourceGroup -Name myResourceGroupAG