今天联系使用CLI 来创建balancor 对VM进行均衡测试:
如果使用界面来创建,可以参考:https://docs.microsoft.com/zh-cn/azure/load-balancer/tutorial-load-balancer-standard-public-zone-redundant-portal
先看一下测试图:
1:建资源组:
az group create \
--name CreatePubLBQS-rg \
--location eastus
2:配置虚拟网络 - 标准:
- 命名为“myVNet”。
- 地址前缀为 10.1.0.0/16。
- 子网命名为“myBackendSubnet”。
- 子网前缀为 10.1.0.0/24。
- 在“CreatePubLBQS-rg”资源组中。
- eastus 的位置。
az network vnet create \
--resource-group CreatePubLBQS-rg \
--location eastus \
--name myVNet \
--address-prefixes 10.1.0.0/16 \
--subnet-name myBackendSubnet \
--subnet-prefixes 10.1.0.0/24
3:创建公共 IP 地址:
az network public-ip create \
--resource-group CreatePubLBQS-rg \
--name myBastionIP \
--sku Standard
4:创建堡垒子网:
az network vnet subnet create \
--resource-group CreatePubLBQS-rg \
--name AzureBastionSubnet \
--vnet-name myVNet \
--address-prefixes 10.1.1.0/24
5:创建堡垒主机
- 命名为 myBastionHost。
- 在“CreatePubLBQS-rg”中。
- 与公共 IP myBastionIP 相关联。
- 与虚拟网络 myVNet 相关联。
- 在位置“eastus”中
az network bastion create \
--resource-group CreatePubLBQS-rg \
--name myBastionHost \
--public-ip-address myBastionIP \
--vnet-name myVNet \
--location eastus
6:创建网络安全组
- 命名为“myNSG”。
- 在“CreatePubLBQS-rg”资源组中。
az network nsg create \
--resource-group CreatePubLBQS-rg \
--name myNSG
7:创建网络安全组规则
- 命名为“myNSGRuleHTTP”。
- 在上一步创建的网络安全组“myNSG”中。
- 在“CreatePubLBQS-rg”资源组中。
- 协议为“(*)”。
- 方向为“入站”。
- 源为“(*)”。
- 目标为“(*)”。
- 目标端口为“端口 80”。
- 访问为“允许”。
- 优先级为“200”。
az network nsg rule create \
--resource-group CreatePubLBQS-rg \
--nsg-name myNSG \
--name myNSGRuleHTTP \
--protocol '*' \
--direction inbound \
--source-address-prefix '*' \
--source-port-range '*' \
--destination-address-prefix '*' \
--destination-port-range 80 \
--access allow \
--priority 200
注意,上面的红色部分我测试的时候,需要--protocol *,不能有 单引号。要建好长时间,我通过图形手动建了:
8: 创建后端服务器 - 标准
使用 az network nic create 创建三个网络接口:
- 名为 myNicVM1、myNicVM2 和 myNicVM3 。
- 在“CreatePubLBQS-rg”资源组中。
- 在虚拟网络“myVNet”中。
- 在子网“myBackendSubnet”中。
- 在网络安全组“myNSG”中。
az network nic create \
--resource-group CreatePubLBQS-rg \
--name myNicVM1 \
--vnet-name myVNet \
--subnet myBackEndSubnet \
--network-security-group myNSG
上面同样方法创建myNicVM2 和 myNicVM3
9:创建虚拟机
- 命名为“myVM1”。
- 在“CreatePubLBQS-rg”资源组中。
- 附加到网络接口“myNicVM1”。
- 虚拟机映像 win2019datacenter。
- 在“区域 1”中。
az vm create \
--resource-group CreatePubLBQS-rg \
--name myVM1 \
--nics myNicVM1 \
--image win2019datacenter \
--admin-username azureuser \
--zone 1 \
--no-wait
同样方法创建myVM2, myVM3: (我创建的时候报错,因为我是在eastasia, 上面没有zone, 所以选region 很重要)
az vm create \
--resource-group CreatePubLBQS-rg \
--name myVM2 \
--nics myNicVM2 \
--image win2019datacenter \
--admin-username azureuser \
--zone 2 \
--no-wait
az vm create \
--resource-group CreatePubLBQS-rg \
--name myVM3 \
--nics myNicVM3 \
--image win2019datacenter \
--admin-username azureuser \
--zone 3 \
--no-wait
10: 创建公共 IP 地址 - 标准
若要通过 Internet 访问 Web 应用,需要负载均衡器有一个公共 IP 地址。
使用 az network public-ip create 执行以下操作:
- 创建名为“myPublicIP”的标准区域冗余公共 IP 地址。
- 在“CreatePubLBQS-rg”中。
az network public-ip create \
--resource-group CreatePubLBQS-rg \
--name myPublicIP \
--sku Standard
在区域 1 中创建区域性冗余公共 IP 地址:
az network public-ip create \
--resource-group CreatePubLBQS-rg \
--name myPublicIP \
--sku Standard \
--zone 1
11:创建标准负载均衡器
本部分详细介绍如何创建和配置负载均衡器的以下组件:
- 前端 IP 池,用于在负载均衡器上接收传入网络流量。
- 后端 IP 池,前端池将负载均衡的网络流量发送到此处。
- 运行状况探测,用于确定后端 VM 实例的运行状况。
- 负载均衡器规则,用于定义如何将流量分配给 VM。
创建负载均衡器资源
使用 az network lb create 创建公共负载均衡器:
- 命名为 myLoadBalancer。
- 前端池命名为 myFrontEnd。
- 后端池命名为 myBackEndPool。
- 与你在上一步中创建的公共 IP 地址 myPublicIP 关联。
az network lb create \
--resource-group CreatePubLBQS-rg \
--name myLoadBalancer \
--sku Standard \
--public-ip-address myPublicIP \
--frontend-ip-name myFrontEnd \
--backend-pool-name myBackEndPool
12: 创建运行状况探测
运行状况探测会检查所有虚拟机实例,以确保它们可以发送网络流量。
从负载均衡器中删除未通过探测检查的虚拟机。 解决故障后,虚拟机将重新添加到负载均衡器中。
使用 az network lb probe create 创建运行状况探测:
- 监视虚拟机的运行状况。
- 命名为“myHealthProbe”。
- 协议为“TCP”。
- 监视“端口 80”。
az network lb probe create \
--resource-group CreatePubLBQS-rg \
--lb-name myLoadBalancer \
--name myHealthProbe \
--protocol tcp \
--port 80
13: 创建负载均衡器规则
负载均衡器规则定义:
- 针对传入流量的前端 IP 配置。
- 用于接收流量的后端 IP 池。
- 所需的源和目标端口。
使用 az network lb rule create 创建负载均衡器规则:
- 命名为“myHTTPRule”
- 对前端池“myFrontEnd”中的“端口 80”进行侦听 。
- 使用“端口 80”将负载均衡的网络流量发送到后端地址池“myBackEndPool” 。
- 使用运行状况探测“myHealthProbe”。
- 协议为“TCP”。
- 空闲超时 15 分钟。
- 启用 TCP 重置。
az network lb rule create \
--resource-group CreatePubLBQS-rg \
--lb-name myLoadBalancer \
--name myHTTPRule \
--protocol tcp \
--frontend-port 80 \
--backend-port 80 \
--frontend-ip-name myFrontEnd \
--backend-pool-name myBackEndPool \
--probe-name myHealthProbe \
--disable-outbound-snat true \
--idle-timeout 15 \
--enable-tcp-reset true
14: 将虚拟机添加到负载均衡器后端池
使用 az network nic ip-config address-pool add 将虚拟机添加到后端池:
- 在后端地址池“myBackEndPool”中。
- 在“CreatePubLBQS-rg”资源组中。
- 与负载均衡器 myLoadBalancer 关联。
az network nic ip-config address-pool add \
--address-pool myBackendPool \
--ip-config-name ipconfig1 \
--nic-name myNicVM1 \
--resource-group CreatePubLBQS-rg \
--lb-name myLoadBalancer
同样方法,把 myNicVM2, myNicVM3, 加入到loadbalance 里面
15: 创建出站规则配置
负载均衡器出站规则为后端池中的 VM 配置出站 SNAT。
有关出站连接的详细信息,请参阅 Azure 中的出站连接。
公共 IP 或前缀可用于出站配置。
公共 IP
使用 az network public-ip create 为出站连接创建单个 IP。
- 命名为 myPublicIPOutbound。
- 在“CreatePubLBQS-rg”中。
az network public-ip create \
--resource-group CreatePubLBQS-rg \
--name myPublicIPOutbound \
--sku Standard
16:在区域 1 中创建区域性冗余公共 IP 地址:
az network public-ip create \
--resource-group CreatePubLBQS-rg \
--name myPublicIPOutbound \
--sku Standard \
--zone 1
17: 公共 IP 前缀
使用 az network public-ip create 为出站连接创建公共 IP 前缀。
- 命名为 myPublicIPPrefixOutbound。
- 在“CreatePubLBQS-rg”中。
- 前缀长度为 28。
az network public-ip prefix create \
--resource-group CreatePubLBQS-rg \
--name myPublicIPPrefixOutbound \
--length 28
在区域 1 中创建区域性冗余公共 IP 前缀:
az network public-ip prefix create \
--resource-group CreatePubLBQS-rg \
--name myPublicIPPrefixOutbound \
--length 28 \
--zone 1
18:创建出站前端 IP 配置
使用 az network lb frontend-ip create 创建新的前端 IP 配置:
根据上一步中的决定选择公共 IP 或公共 IP 前缀命令。
公共 IP
- 命名为“myFrontEndOutbound”。
- 在“CreatePubLBQS-rg”资源组中。
- 与公共 IP 地址 myPublicIPOutbound 关联。
- 与负载均衡器 myLoadBalancer 关联。
az network lb frontend-ip create \
--resource-group CreatePubLBQS-rg \
--name myFrontEndOutbound \
--lb-name myLoadBalancer \
--public-ip-address myPublicIPOutbound
19: 公共 IP 前缀
- 命名为“myFrontEndOutbound”。
- 在“CreatePubLBQS-rg”资源组中。
- 与公共 IP 前缀 myPublicIPPrefixOutbound 关联。
- 与负载均衡器 myLoadBalancer 关联。
az network lb frontend-ip create \
--resource-group CreatePubLBQS-rg \
--name myFrontEndOutbound \
--lb-name myLoadBalancer \
--public-ip-prefix myPublicIPPrefixOutbound
20:创建出站池
使用 az network lb address create 创建新的出站池:
- 命名为“myBackEndPoolOutbound”。
- 在“CreatePubLBQS-rg”资源组中。
- 与负载均衡器 myLoadBalancer 关联。
az network lb address-pool create \
--resource-group CreatePubLBQS-rg \
--lb-name myLoadBalancer \
--name myBackendPoolOutbound
21:创建出站规则
- 命名为“myOutboundRule”。
- 在“CreatePubLBQS-rg”资源组中。
- 与负载均衡器 myLoadBalancer 关联
- 与前端 myFrontEndOutbound 关联。
- 协议为“所有”。
- 空闲超时时间为 15。
- 出站端口为 10000 个。
- 与后端池 myBackEndPoolOutbound 关联
az network lb outbound-rule create \
--resource-group CreatePubLBQS-rg \
--lb-name myLoadBalancer \
--name myOutboundRule \
--frontend-ip-configs myFrontEndOutbound \
--protocol All \
--idle-timeout 15 \
--outbound-ports 10000 \
--address-pool myBackEndPoolOutbound
22:向出站池添加虚拟机
使用 az network nic ip-config address-pool add 将虚拟机添加到出站池:
- 在后端地址池“myBackEndPoolOutbound”中。
- 在“CreatePubLBQS-rg”资源组中。
- 与负载均衡器 myLoadBalancer 关联
az network nic ip-config address-pool add \
--address-pool myBackendPoolOutbound \
--ip-config-name ipconfig1 \
--nic-name myNicVM1 \
--resource-group CreatePubLBQS-rg \
--lb-name myLoadBalancer
同样的方法,添加myNicVM2, myNicVM3 到出站池。
23:安装 IIS
使用 az vm extension set 将 IIS 安装在虚拟机上,并将默认网站设置为计算机名。
az vm extension set \
--publisher Microsoft.Compute \
--version 1.8 \
--name CustomScriptExtension \
--vm-name myVM1 \
--resource-group CreatePubLBQS-rg \
--settings '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
同样的方法,设置一下 myVM2, myVM3
24: 测试负载均衡器:
若要获取负载均衡器的公共 IP 地址,请使用 az network public-ip show。
复制该公共 IP 地址,并将其粘贴到浏览器的地址栏
az network public-ip show \
--resource-group CreatePubLBQS-rg \
--name myPublicIP \
--query ipAddress \
--output tsv
最后还是要感谢一下官方文档: