练习 - 配置公共负载均衡器
可使用 Azure 门户、PowerShell 或 Azure CLI 配置 Azure 负载均衡器。
在医疗保健组织中,你希望根据患者门户 Web 服务器的运行状况对客户端流量进行负载均衡,以提供一致的响应。 可用性集中的两台虚拟机 (VM) 可以充当医疗保健门户 Web 应用程序。
你将在此处创建负载均衡器资源,并使用它在虚拟机之间分配负载。
注释
本练习可选做。 若要完成本练习,则需要在开始之前创建 Azure 订阅。 如果没有 Azure 帐户或不想暂时创建一个帐户,可以通读说明,以便了解所显示的信息。
注释
需要使用资源组来完成本练习中的步骤。 可以使用已创建的资源组,也可以专门为此练习创建新的资源组。 如果选择创建新的资源组,这样就可以更轻松地清理完成练习时创建的任何资源。 如果没有现有资源组或想要为此练习创建新的资源组,可以按照 使用 Azure 门户和 Azure 资源管理器 中的步骤管理资源组,使用 Azure 门户创建资源组,或者可以使用 Azure CLI 通过 Azure CLI 创建资源组,按照 “管理 Azure 资源组 ”中的步骤作。
注释
在本练习中,请将示例中的 myResourceGroupName 替换为现有资源组的名称或为此练习创建的资源组的名称。
部署患者门户 Web 应用程序
首先,在单个可用性集中的两台虚拟机上部署患者门户应用程序。 为节约时间,先运行脚本来创建此应用程序。 脚本:
- 创建用于虚拟机的虚拟网络和网络基础结构。
- 在此虚拟网络中创建两台虚拟机。
要部署患者门户 Web 应用程序,请执行以下操作:
在 Azure Cloud Shell 中运行以下
git clone命令。 该命令会克隆包含应用的源的存储库,并运行 GitHub 中的设置脚本。 然后转到已克隆存储库的目录。git clone https://github.com/MicrosoftDocs/mslearn-improve-app-scalability-resiliency-with-load-balancer.git cd mslearn-improve-app-scalability-resiliency-with-load-balancer顾名思义,该脚本将在单个可用性集中生成两台虚拟机。 运行该脚本需要大约 2 分钟。
bash create-high-availability-vm-with-sets.sh myResourceGroupName脚本完成后,在 Azure 门户 菜单或 主页 上,选择 资源组,然后选择 myResourceGroupName 资源组。 查看脚本创建的资源。
创建负载均衡器
现在,我们来创建负载均衡器。
在 Azure 门户 菜单或 主页 的 Azure 服务下,选择“ 创建资源”。 此时会显示“创建资源”窗格。
在 “搜索服务和市场 搜索”框中,输入 负载均衡器,然后按 Enter。
在随后的列表中选择“负载均衡器 - Microsoft”,然后选择“创建”。
在“基本信息”选项卡上,为每个设置输入以下值:
设置 值 项目详细信息 订阅 订阅 资源组 选择“myResourceGroupName” 实例详细信息 名称 输入唯一名称。 例如,Pub-LB-PatientsPortal。 区域 选择创建虚拟机的位置。 SKU 标准 类型 公共 层 地域
添加前端 IP 配置
选择“下一步: 前端 IP 配置”。
选择“+ 添加前端 IP 配置”。 此时将显示“添加前端 IP 配置”窗格。
为每个设置输入以下值。
设置 值 名称 输入前端 IP 配置的唯一名称。 例如 myFrontendIP IP 版本 选择“IPv4” IP 类型 选择“IP 地址” 公共 IP 地址 选择“新建”,为 IP 地址指定一个名称,然后选择“保存” 网关负载均衡器 选择“无”
要关闭对话框,请选择“保存”。 此时将再次显示“创建负载均衡器”窗格。
添加后端池
选择“下一步: 后端池”。
选择“+ 添加后端池”。 此时将显示“添加后端池”窗格。
为每个设置输入以下值。
设置 值 名称 输入后端池的唯一名称。 例如,bepool-http。 虚拟网络 确认已选择“bePortalVnet”。 在“IP 配置”下选择“添加”。 此时将显示“将 IP 配置添加到后端池”窗格。
在“虚拟机”下,选择“webVM1”和“webVM2”虚拟机,然后选择“添加”。
此时将再次显示“添加后端池”屏幕。 在“IP 配置”下,选择“webVM1”和“webVM2”虚拟机,然后选择“保存”。 此时将再次显示“创建负载均衡器”屏幕。
添加负载均衡规则
最后,我们来创建负载均衡器规则。
选择“下一步: 入站规则”。
在“负载均衡规则”部分,选择“+ 添加负载均衡规则”。 此时将显示“添加负载均衡规则”窗格。
为每个设置输入以下值。
设置 值 名称 负载均衡规则的名称。 例如,lbrule-http。 IP 版本 IPv4 前端 IP 地址 选择前面命名的前端 IP 地址。 后端池 选择前面命名的后端池。 例如,bepool-http。 协议 TCP 端口 输入 80(默认值)。 后端端口 输入 80(默认值)。 运行状况探测 选择“新建”链接。 此时将显示“添加运行状况探测”对话框。 为每个设置输入以下值。
设置 值 名称 运行状况探测的名称。 例如,healthprobe-http。 协议 TCP 端口 输入 80(默认值)。 间隔 输入 5(默认值)。 此值是探测之间的时长。 选择“保存”以关闭该对话框。 此时将再次显示“添加负载均衡规则”窗格。
继续为每个设置输入以下值。
设置 值 会话持续性* 无 (默认值) 空闲超时(分钟) 选择“4”(默认值)。 此值是不依赖于客户端发送 keep-alive 消息的情况下,将传输控制协议 (TCP) 或 HTTP 连接保持打开的时间。 浮动 IP 禁用(默认值)。
选择“保存”以完成负载均衡规则配置。
此时将再次显示“创建负载均衡器”屏幕。 选择“查看 + 创建”。
验证通过后,选择“创建”。 部署完成后,选择“转到资源”。
在“概述”页上,复制并保存“公共 IP 地址”。 可能需要选择“ 查看更多...” 才能查看公共 IP 地址。
创建 IP 地址
首先,我们需要负载均衡器的公共 IP 地址。
在 Cloud Shell 中,通过运行以下命令启动 PowerShell:
pwsh在 PowerShell 中,创建新的公共 IP 地址:
$Location = $(Get-AzureRmResourceGroup -ResourceGroupName myResourceGroupName).Location $publicIP = New-AzPublicIpAddress ` -ResourceGroupName myResourceGroupName ` -Location $Location ` -AllocationMethod "Static" ` -Name "myPublicIP"使用 New-AzLoadBalancerFrontendIpConfig cmdlet 创建一个前端 IP。 以下代码创建名为 myFrontEnd 的前端 IP 配置,并附加 myPublicIP 地址:
$frontendIP = New-AzLoadBalancerFrontendIpConfig ` -Name "myFrontEnd" ` -PublicIpAddress $publicIP
创建负载均衡器
使用 PowerShell 配置负载均衡器时,必须先创建后端地址池、运行状况探测和规则,然后再创建均衡器本身。
运行 New-AzLoadBalancerBackendAddressPoolConfig cmdlet 创建一个后端地址池。 你将在最后的步骤中将虚拟机附加到此后端池。 以下示例创建名为 myBackEndPool 的后端地址池:
$backendPool = New-AzLoadBalancerBackendAddressPoolConfig -Name "myBackEndPool"创建运行状况探测,以支持负载均衡器监视医疗保健门户的状态。 运行状况探测基于其对运行状况检查的响应,从负载均衡器中动态添加或删除虚拟机。
$probe = New-AzLoadBalancerProbeConfig ` -Name "myHealthProbe" ` -Protocol http ` -Port 80 ` -IntervalInSeconds 5 ` -ProbeCount 2 ` -RequestPath "/"现在,需要一个负载均衡器规则来定义将流量分配给虚拟机的方式。 定义传入流量的前端 IP 配置和后端 IP 池以接收流量,同时定义所需源和目标端口。 若要确保仅正常运行的虚拟机接收流量,还需定义要使用的运行状况探测。
$lbrule = New-AzLoadBalancerRuleConfig ` -Name "myLoadBalancerRule" ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Protocol Tcp ` -FrontendPort 80 ` -BackendPort 80 ` -Probe $probe现在,可以通过运行 New-AzLoadBalancer cmdlet 来创建基本负载均衡器:
$lb = New-AzLoadBalancer ` -ResourceGroupName myResourceGroupName ` -Name 'MyLoadBalancer' ` -Location $Location ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Probe $probe ` -LoadBalancingRule $lbrule通过更新脚本创建以使用后端池信息的网络接口,将虚拟机连接到后端池。
$nic1 = Get-AzNetworkInterface -ResourceGroupName myResourceGroupName -Name "webNic1" $nic2 = Get-AzNetworkInterface -ResourceGroupName myResourceGroupName -Name "webNic2" $nic1.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool $nic2.IpConfigurations[0].LoadBalancerBackendAddressPools = $backendPool Set-AzNetworkInterface -NetworkInterface $nic1 -AsJob Set-AzNetworkInterface -NetworkInterface $nic2 -AsJob运行以下命令,以获取负载均衡器的公共 IP 地址和网站的 URL:
Write-Host http://$($(Get-AzPublicIPAddress ` -ResourceGroupName myResourceGroupName ` -Name "myPublicIP").IpAddress)
创建负载均衡器
让我们使用 Azure CLI 来创建负载均衡器及其相关资源。
创建新的公共 IP 地址。
az network public-ip create \ --resource-group myResourceGroupName \ --allocation-method Static \ --name myPublicIP创建负载均衡器。
az network lb create \ --resource-group myResourceGroupName \ --name myLoadBalancer \ --public-ip-address myPublicIP \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool创建允许负载均衡器监视医疗保健门户的状态的运行状况探测。 运行状况探测可基于其对运行状况检查的响应,从负载均衡器循环中动态添加或移除虚拟机。
az network lb probe create \ --resource-group myResourceGroupName \ --lb-name myLoadBalancer \ --name myHealthProbe \ --protocol tcp \ --port 80现在,需要一个负载均衡器规则来定义将流量分配给虚拟机的方式。 定义传入流量的前端 IP 配置和后端 IP 池以接收流量,同时定义所需源和目标端口。 若要确保仅正常运行的虚拟机接收流量,还需定义要使用的运行状况探测。
az network lb rule create \ --resource-group myResourceGroupName \ --lb-name myLoadBalancer \ --name myHTTPRule \ --protocol tcp \ --frontend-port 80 \ --backend-port 80 \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool \ --probe-name myHealthProbe通过更新脚本创建以使用后端池信息的网络接口,将虚拟机连接到后端池。
az network nic ip-config update \ --resource-group myResourceGroupName \ --nic-name webNic1 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool az network nic ip-config update \ --resource-group myResourceGroupName \ --nic-name webNic2 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool运行以下命令,以获取负载均衡器的公共 IP 地址和网站的 URL:
echo http://$(az network public-ip show \ --resource-group myResourceGroupName \ --name myPublicIP \ --query ipAddress \ --output tsv)
测试负载均衡器配置
让我们来测试负载均衡器设置,方法是展示它如何动态处理可用性和运行状况问题。
在新浏览器选项卡中,转到记下的公共 IP 地址。 浏览器中会显示来自其中一台虚拟机的响应。
通过多次按 Ctrl+F5 来尝试“强制刷新”,以查看响应是从两个虚拟机随机返回的。
在 Azure 门户 菜单或 主页 上,选择 “所有资源”。 选择“webVM1”,然后再选择“停止”。
返回显示网站的选项卡,并强制刷新网页。 所有请求都从“webVM2”返回。