练习 - 配置公共负载均衡器
可使用 Azure 门户、PowerShell 或 Azure CLI 配置 Azure 负载均衡器。
在医疗保健组织中,你希望根据患者门户 Web 服务器的运行状况对客户端流量进行负载均衡,以提供一致的响应。 可用性集中的两台虚拟机 (VM) 可以充当医疗保健门户 Web 应用程序。
你将在此处创建负载均衡器资源,并使用它在虚拟机之间分配负载。
部署患者门户 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 <rgn>[sandbox resource group name]</rgn>
脚本运行完成后,在 Azure 门户菜单上或在门户主页中,选择“资源组”,然后选择
[沙盒资源组名称] 资源组。 查看脚本创建的资源。
创建负载均衡器
现在,我们来创建负载均衡器。
在 Azure 门户菜单上或在“主页”中,选择“Azure 服务”下的“创建资源”。 此时会显示“创建资源”窗格。
在“搜索服务和市场”搜索框中,输入“负载均衡器”,然后按 Enter。
在随后的列表中选择“负载均衡器 - Microsoft”,然后选择“创建”。
在“基本信息”选项卡上,为每个设置输入以下值:
设置 值 项目详细信息 订阅 订阅 资源组 选择 [沙盒资源组名称] 实例详细信息 名称 输入唯一名称。 例如,Pub-LB-PatientsPortal。 区域 选择创建虚拟机的位置。 SKU 标准 类型 Public 层 Regional
添加前端 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 <rgn>[sandbox resource group name]</rgn>).Location $publicIP = New-AzPublicIpAddress ` -ResourceGroupName <rgn>[sandbox resource group name]</rgn> ` -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 <rgn>[sandbox resource group name]</rgn> ` -Name 'MyLoadBalancer' ` -Location $Location ` -FrontendIpConfiguration $frontendIP ` -BackendAddressPool $backendPool ` -Probe $probe ` -LoadBalancingRule $lbrule
通过更新脚本创建以使用后端池信息的网络接口,将虚拟机连接到后端池。
$nic1 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "webNic1" $nic2 = Get-AzNetworkInterface -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -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 <rgn>[sandbox resource group name]</rgn> ` -Name "myPublicIP").IpAddress)
创建负载均衡器
让我们使用 Azure CLI 来创建负载均衡器及其相关资源。
创建新的公共 IP 地址。
az network public-ip create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --allocation-method Static \ --name myPublicIP
创建负载均衡器。
az network lb create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myLoadBalancer \ --public-ip-address myPublicIP \ --frontend-ip-name myFrontEndPool \ --backend-pool-name myBackEndPool
创建允许负载均衡器监视医疗保健门户的状态的运行状况探测。 运行状况探测可基于其对运行状况检查的响应,从负载均衡器循环中动态添加或移除虚拟机。
az network lb probe create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --lb-name myLoadBalancer \ --name myHealthProbe \ --protocol tcp \ --port 80
现在,需要一个负载均衡器规则来定义将流量分配给虚拟机的方式。 定义传入流量的前端 IP 配置和后端 IP 池以接收流量,同时定义所需源和目标端口。 若要确保仅正常运行的虚拟机接收流量,还需定义要使用的运行状况探测。
az network lb rule create \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --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 <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic1 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool az network nic ip-config update \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --nic-name webNic2 \ --name ipconfig1 \ --lb-name myLoadBalancer \ --lb-address-pools myBackEndPool
运行以下命令,以获取负载均衡器的公共 IP 地址和网站的 URL:
echo http://$(az network public-ip show \ --resource-group <rgn>[sandbox resource group name]</rgn> \ --name myPublicIP \ --query ipAddress \ --output tsv)
测试负载均衡器配置
让我们来测试负载均衡器设置,方法是展示它如何动态处理可用性和运行状况问题。
在新浏览器选项卡中,转到记下的公共 IP 地址。 浏览器中会显示来自其中一台虚拟机的响应。
尝试按 Ctrl+F5几次来“强制刷新”,以查看是否会从两台虚拟机随机返回响应。
在 Azure 门户菜单上或在门户主页中,选择“所有资源”。 选择“webVM1”,然后再选择“停止”。
返回显示网站的选项卡,并强制刷新网页。 所有请求都从“webVM2”返回。