使用 Azure Resource Manager 创建具有内部负载均衡器 (ILB) 的应用程序网关

可以配置使用面向 Internet 的 VIP 或不向 Internet 公开的内部终结点(也称为内部负载均衡器 (ILB) 终结点)的 Azure 应用程序网关。配置使用 ILB 的网关适用于不向 Internet 公开的内部业务线应用程序。对于位于不向 Internet 公开的安全边界内的多层应用程序中的服务和层也很有用,但仍需要执行轮循负载分布、会话粘性或安全套接字层 (SSL) 终止。

本文介绍如何配置具有 ILB 的应用程序网关。

准备阶段

  1. 使用 Web 平台安装程序安装最新版本的 Azure PowerShell cmdlet。可以从下载页的“Windows PowerShell”部分下载并安装最新版本。
  2. 将为应用程序网关创建虚拟网络和子网。请确保没有虚拟机或云部署正在使用子网。应用程序网关必须单独位于虚拟网络子网中。
  3. 必须存在配置为使用应用程序网关的服务器,或者必须在虚拟网络中为其创建终结点,或者必须为其分配公共 IP/VIP。

创建应用程序网关需要什么?

  • 后端服务器池:后端服务器的 IP 地址列表。列出的 IP 地址应属于虚拟网络子网但位于应用程序网关的不同子网中,或者是公共 IP/VIP。
  • 后端服务器池设置:每个池都有一些设置,例如端口、协议和基于 cookie 的关联性。这些设置绑定到池,并会应用到池中的所有服务器。
  • 前端端口:此端口是应用程序网关上打开的公共端口。流量将抵达此端口,然后重定向到其中一个后端服务器。
  • 侦听器:侦听器具有前端端口、协议(Http 或 Https,区分大小写)和 SSL 证书名称(如果要配置 SSL 卸载)。
  • 规则:规则将会绑定侦听器和后端服务器池,并定义当流量抵达特定侦听器时应定向到的后端服务器池。目前仅支持基本规则。基本规则是一种轮循负载分布模式。

创建应用程序网关

使用 Azure 经典部署和 Azure Resource Manager 部署的差别在于创建应用程序网关的顺序和需要配置的项。使用 Resource Manager 时,组成应用程序网关的所有项都将分开配置,然后结合在一起来创建应用程序网关资源。

以下是创建应用程序网关所需执行的步骤:

  1. 创建 Resource Manager 的资源组
  2. 为应用程序网关创建虚拟网络和子网
  3. 创建应用程序网关配置对象
  4. 创建应用程序网关资源

创建 Resource Manager 的资源组

确保切换 PowerShell 模式,以便使用 Azure Resource Manager cmdlet。将 Windows PowerShell 与 Resource Manager 配合使用中提供了详细信息。

步骤 1

Login-AzureRmAccount -EnvironmentName AzureChinaCloud

步骤 2

检查帐户的订阅。

Get-AzureRmSubscription

系统会提示使用凭据进行身份验证。

步骤 3

选择要使用的 Azure 订阅。

Select-AzureRmSubscription -Subscriptionid "GUID of subscription"

步骤 4

创建新的资源组(如果要使用现有的资源组,请跳过此步骤)。

New-AzureRmResourceGroup -Name appgw-rg -location "China North"

Azure Resource Manager 要求所有资源组指定一个位置。此位置将用作该资源组中的资源的默认位置。请确保用于创建应用程序网关的所有命令都使用相同的资源组。

在上述示例中,我们在位置“中国北部”创建了名为“appgw-rg”的资源组。

为应用程序网关创建虚拟网络和子网

以下示例演示如何使用 Resource Manager 创建虚拟网络:

步骤 1

$subnetconfig = New-AzureRmVirtualNetworkSubnetConfig -Name subnet01 -AddressPrefix 10.0.0.0/24

此步骤会将地址范围 10.0.0.0/24 分配给用于创建虚拟网络的子网变量。

步骤 2

$vnet = New-AzureRmVirtualNetwork -Name appgwvnet -ResourceGroupName appgw-rg -Location "China North" -AddressPrefix 10.0.0.0/16 -Subnet $subnetconfig

此步骤会使用前缀 10.0.0.0/16 和子网 10.0.0.0/24,在中国北部区域的“appgw-rg”资源组中创建名为“appgwvnet”的虚拟网络。

步骤 3

$subnet = $vnet.subnets[0]

此步骤会将子网对象分配到变量 $subnet 以完成后续步骤。

创建应用程序网关配置对象

步骤 1

$gipconfig = New-AzureRmApplicationGatewayIPConfiguration -Name gatewayIP01 -Subnet $subnet

此步骤会创建名为“gatewayIP01”的应用程序网关 IP 配置。当应用程序网关启动时,它会从配置的子网获取 IP 地址,再将网络流量路由到后端 IP 池中的 IP 地址。请记住,每个实例需要一个 IP 地址。

步骤 2

$pool = New-AzureRmApplicationGatewayBackendAddressPool -Name pool01 -BackendIPAddresses 134.170.185.46, 134.170.188.221,134.170.185.50

此步骤会配置名为“pool01”的后端 IP 地址池,其 IP 地址为“134.170.185.46, 134.170.188.221,134.170.185.50”。这些 IP 地址将接收来自前端 IP 终结点的网络流量。替换上述 IP 地址,添加自己的应用程序 IP 地址终结点。

步骤 3

$poolSetting = New-AzureRmApplicationGatewayBackendHttpSettings -Name poolsetting01 -Port 80 -Protocol Http -CookieBasedAffinity Disabled

此步骤会为后端池中进行了负载均衡的网络流量配置应用程序网关设置“poolsetting01”。

步骤 4

$fp = New-AzureRmApplicationGatewayFrontendPort -Name frontendport01  -Port 80

此步骤会为 ILB 配置名为“frontendport01”的前端 IP 端口。

步骤 5

$fipconfig = New-AzureRmApplicationGatewayFrontendIPConfig -Name fipconfig01 -Subnet $subnet

此步骤会创建名为“fipconfig01”的前端 IP 配置,并将其与当前虚拟网络子网中的某个专用 IP 相关联。

步骤 6

$listener = New-AzureRmApplicationGatewayHttpListener -Name listener01  -Protocol Http -FrontendIPConfiguration $fipconfig -FrontendPort $fp

此步骤会创建名为“listener01”的侦听器,并将前端端口与前端 IP 配置相关联。

步骤 7

$rule = New-AzureRmApplicationGatewayRequestRoutingRule -Name rule01 -RuleType Basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool

此步骤会创建名为“rule01”的负载均衡器路由规则,用于配置负载均衡器的行为。

步骤 8

$sku = New-AzureRmApplicationGatewaySku -Name Standard_Small -Tier Standard -Capacity 2

此步骤会配置应用程序网关的实例大小。

Note

InstanceCount 的默认值为 2,最大值为 10。GatewaySize 的默认值为 Medium。可以在 Standard_Small、Standard_Medium 和 Standard_Large 之间进行选择。

使用 New-AzureApplicationGateway 创建应用程序网关

创建包含上述步骤中所有配置项目的应用程序网关。示例中的应用程序网关名为“appgwtest”。

$appgw = New-AzureRmApplicationGateway -Name appgwtest -ResourceGroupName appgw-rg -Location "China North" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig  -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku

此步骤会创建包含上述步骤中所有配置项目的应用程序网关。示例中的应用程序网关名为“appgwtest”。

删除应用程序网关

若要删除应用程序网关,请按顺序执行以下步骤:

  1. 使用 Stop-AzureRmApplicationGateway cmdlet 停止该网关。
  2. 使用 Remove-AzureRmApplicationGateway cmdlet 删除该网关。
  3. 使用 Get-AzureApplicationGateway cmdlet 验证是否已删除该网关。

步骤 1

获取应用程序网关对象,并将其关联到变量“$getgw”。

$getgw =  Get-AzureRmApplicationGateway -Name appgwtest -ResourceGroupName appgw-rg

步骤 2

使用 Stop-AzureRmApplicationGateway 停止应用程序网关。此示例在第一行显示 Stop-AzureRmApplicationGateway cmdlet,接着显示输出。

Stop-AzureRmApplicationGateway -ApplicationGateway $getgw  
VERBOSE: 9:49:34 PM - Begin Operation: Stop-AzureApplicationGateway
VERBOSE: 10:10:06 PM - Completed Operation: Stop-AzureApplicationGateway
Name       HTTP Status Code     Operation ID                             Error
----       ----------------     ------------                             ----
Successful OK                   ce6c6c95-77b4-2118-9d65-e29defadffb8

应用程序网关进入停止状态后,请使用 Remove-AzureRmApplicationGateway cmdlet 删除该服务。

Remove-AzureRmApplicationGateway -Name appgwtest -ResourceGroupName appgw-rg -Force
VERBOSE: 10:49:34 PM - Begin Operation: Remove-AzureApplicationGateway
VERBOSE: 10:50:36 PM - Completed Operation: Remove-AzureApplicationGateway
Name       HTTP Status Code     Operation ID                             Error
----       ----------------     ------------                             ----
Successful OK                   055f3a96-8681-2094-a304-8d9a11ad8301
Note

可以使用 -force 开关来禁止显示该删除的确认消息。

若要验证是否已删除服务,可以使用 Get-AzureRmApplicationGateway cmdlet。此步骤不是必需的。

Get-AzureRmApplicationGateway -Name appgwtest -ResourceGroupName appgw-rg
VERBOSE: 10:52:46 PM - Begin Operation: Get-AzureApplicationGateway

Get-AzureApplicationGateway : ResourceNotFound: The gateway does not exist.

后续步骤

如果你要配置 SSL 卸载,请参阅配置应用程序网关以进行 SSL 卸载

若要将应用程序网关配置为与 ILB 配合使用,请参阅创建具有内部负载均衡器 (ILB) 的应用程序网关

如需大体上更详细地了解负载均衡选项,请参阅: