快速入门:使用 Azure CLI 创建公共负载均衡器以对 VM 进行负载均衡

使用 Azure CLI 创建公共负载均衡器和两个虚拟机,通过这种方式开始使用 Azure 负载均衡器。 除了这些资源,还可部署 Azure Bastion、NAT 网关、虚拟网络和所需的子网。

如果没有 Azure 试用版订阅,请在开始前创建一个试用版订阅

先决条件

  • 如需在本地运行 CLI 参考命令,请安装 Azure CLI。 如果在 Windows 或 macOS 上运行,请考虑在 Docker 容器中运行 Azure CLI。 有关详细信息,请参阅如何在 Docker 容器中运行 Azure CLI

    • 如果使用的是本地安装,请使用 az login 命令登录到 Azure CLI。 若要完成身份验证过程,请遵循终端中显示的步骤。 有关其他登录选项,请参阅使用 Azure CLI 登录

    • 出现提示时,请在首次使用时安装 Azure CLI 扩展。 有关扩展详细信息,请参阅使用 Azure CLI 的扩展

    • 运行 az version 以查找安装的版本和依赖库。 若要升级到最新版本,请运行 az upgrade

  • 本快速入门需要 Azure CLI 2.0.28 或更高版本。 如果使用的是 Azure 本地 Shell,则最新版本已安装。

创建资源组

Azure 资源组是在其中部署和管理 Azure 资源的逻辑容器。

使用 az group create 创建资源组:

  az group create \
    --name CreatePubLBQS-rg \
    --location chinaeast

创建虚拟网络

需要先创建支持的虚拟网络和子网,然后才能部署 VM 和测试负载均衡器。

使用 az network vnet create 创建虚拟网络。 该虚拟网络和子网包含本文后面部署的资源。

  az network vnet create \
    --resource-group CreatePubLBQS-rg \
    --location chinaeast \
    --name myVNet \
    --address-prefixes 10.1.0.0/16 \
    --subnet-name myBackendSubnet \
    --subnet-prefixes 10.1.0.0/24

创建公共 IP 地址

若要通过 Internet 访问 Web 应用,需要负载均衡器有一个公共 IP 地址。

使用 az network public-ip create 为负载均衡器前端创建公共 IP。

  az network public-ip create \
    --resource-group CreatePubLBQS-rg \
    --name myPublicIP \
    --sku Standard \
    --zone 1 2 3

若要改为在区域 1 中创建区域性公共 IP 地址,请使用以下命令:

  az network public-ip create \
    --resource-group CreatePubLBQS-rg \
    --name myPublicIP \
    --sku Standard \
    --zone 1

创建负载均衡器

本部分详细介绍如何创建和配置负载均衡器的以下组件:

  • 前端 IP 池,用于在负载均衡器上接收传入的网络流量

  • 后端 IP 池,前端池将向其发送经过负载均衡的网络流量

  • 运行状况探测,用于确定后端 VM 实例的运行状况

  • 负载均衡器规则,用于定义如何将流量分发到各个 VM

创建负载均衡器资源

使用 az network lb create 创建公共负载均衡器:

  az network lb create \
    --resource-group CreatePubLBQS-rg \
    --name myLoadBalancer \
    --sku Standard \
    --public-ip-address myPublicIP \
    --frontend-ip-name myFrontEnd \
    --backend-pool-name myBackEndPool

如果创建的公共 IP 是区域性的,则需要在创建公共负载均衡器时定义指定的区域。

  az network lb create \
    --resource-group CreatePubLBQS-rg \
    --name myLoadBalancer \
    --sku Standard \
    --public-ip-address myPublicIP \
    --frontend-ip-name myFrontEnd \
    --public-ip-zone 1 \
    --backend-pool-name myBackEndPool

创建运行状况探测

运行状况探测会检查所有虚拟机实例,以确保它们可以发送网络流量。

从负载均衡器中删除未通过探测检查的虚拟机。 解决故障后,虚拟机将重新添加到负载均衡器中。

使用 az network lb probe create 创建运行状况探测:

  az network lb probe create \
    --resource-group CreatePubLBQS-rg \
    --lb-name myLoadBalancer \
    --name myHealthProbe \
    --protocol tcp \
    --port 80

创建负载均衡器规则

负载均衡器规则定义:

  • 针对传入流量的前端 IP 配置

  • 用于接收流量的后端 IP 池

  • 所需的源和目标端口

使用 az network lb rule create 创建负载均衡器规则:

  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

创建网络安全组

对于标准负载均衡器,后端池中的 VM 需要具有属于网络安全组的网络接口。

使用 az network nsg create 创建网络安全组:

  az network nsg create \
    --resource-group CreatePubLBQS-rg \
    --name myNSG

创建网络安全组规则

使用 az network nsg rule create 创建网络安全组规则:

  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

创建 Bastion 主机

在本部分中,为 Azure Bastion 创建资源。 Azure Bastion 用于安全地管理负载均衡器后端池中的虚拟机。

重要

小时定价从部署 Bastion 的时刻开始计算,而无论出站数据使用情况如何。 有关详细信息,请参阅定价SKU。 如果要将 Bastion 部署为教程或测试的一部分,建议在使用完此资源后将其删除。

创建公共 IP 地址

使用 az network public-ip create 为堡垒主机创建公共 IP 地址。 堡垒主机使用公共 IP 来安全访问虚拟机资源。

  az network public-ip create \
    --resource-group CreatePubLBQS-rg \
    --name myBastionIP \
    --sku Standard \
    --zone 1 2 3

创建堡垒子网

使用 az network vnet subnet create 创建堡垒子网。 堡垒主机使用堡垒子网来访问虚拟网络。

  az network vnet subnet create \
    --resource-group CreatePubLBQS-rg \
    --name AzureBastionSubnet \
    --vnet-name myVNet \
    --address-prefixes 10.1.1.0/27

创建堡垒主机

使用 az network bastion create 创建堡垒主机。 堡垒主机用于安全地连接到本文后面部分创建的虚拟机资源。

  az network bastion create \
    --resource-group CreatePubLBQS-rg \
    --name myBastionHost \
    --public-ip-address myBastionIP \
    --vnet-name myVNet \
    --location chinaeast

部署 Azure Bastion 主机需要几分钟时间。

创建后端服务器

在本节中,创建以下项:

  • 虚拟机的三个网络接口

  • 两个要用作负载均衡器后端服务器的虚拟机

为虚拟机创建网络接口

使用 az network nic create 创建两个网络接口:

  array=(myNicVM1 myNicVM2)
  for vmnic in "${array[@]}"
  do
    az network nic create \
        --resource-group CreatePubLBQS-rg \
        --name $vmnic \
        --vnet-name myVNet \
        --subnet myBackEndSubnet \
        --network-security-group myNSG
  done

创建虚拟机

使用 az vm create 创建虚拟机:

  az vm create \
    --resource-group CreatePubLBQS-rg \
    --name myVM1 \
    --nics myNicVM1 \
    --image win2019datacenter \
    --admin-username azureuser \
    --zone 1 \
    --no-wait
  az vm create \
    --resource-group CreatePubLBQS-rg \
    --name myVM2 \
    --nics myNicVM2 \
    --image win2019datacenter \
    --admin-username azureuser \
    --zone 2 \
    --no-wait

可能需要花费几分钟时间才能部署 VM。 可以在 VM 创建过程中继续执行后续步骤。

注意

Azure 会为未分配公共 IP 地址的 VM 或位于内部基本 Azure 负载均衡器的后端池中的 VM 提供默认出站访问 IP。 默认出站访问 IP 机制会提供不可配置的出站 IP 地址。

发生以下事件之一时,将禁用默认出站访问 IP:

  • 将公共 IP 地址分配给 VM。
  • 虚拟机被放置在标准负载平衡器的后端池中,有无出站规则均可。
  • 向虚拟机的子网分配了 Azure 虚拟网络 NAT 网关 资源。

在灵活业务流程模式下通过使用虚拟机规模集创建的 VM 没有默认的出站访问权限。

有关 Azure 中的出站连接的详细信息,请参阅 Azure 中的默认出站访问使用源网络地址转换(SNAT)进行出站连接

将虚拟机添加到负载均衡器后端池

使用 az network nic ip-config address-pool add 将虚拟机添加到后端池:

  array=(myNicVM1 myNicVM2)
  for vmnic in "${array[@]}"
  do
    az network nic ip-config address-pool add \
     --address-pool myBackendPool \
     --ip-config-name ipconfig1 \
     --nic-name $vmnic \
     --resource-group CreatePubLBQS-rg \
     --lb-name myLoadBalancer
  done

创建 NAT 网关

若要为后端池中的资源提供出站 Internet 访问,请创建 NAT 网关。

创建公共 IP

使用 az network public-ip create 为出站连接创建单个 IP。

  az network public-ip create \
    --resource-group CreatePubLBQS-rg \
    --name myNATgatewayIP \
    --sku Standard \
    --zone 1 2 3

若要改为在区域 1 中创建区域性冗余公共 IP 地址,请使用以下命令:

  az network public-ip create \
    --resource-group CreatePubLBQS-rg \
    --name myNATgatewayIP \
    --sku Standard \
    --zone 1

创建 NAT 网关资源

使用 az network nat gateway create 创建 NAT 网关资源。 上一步创建的公共 IP 与 NAT 网关相关联。

  az network nat gateway create \
    --resource-group CreatePubLBQS-rg \
    --name myNATgateway \
    --public-ip-addresses myNATgatewayIP \
    --idle-timeout 10

将 NAT 网关与子网相关联

在虚拟网络中配置资源子网,以通过 az network vnet subnet update 使用特定的 NAT 网关资源。

  az network vnet subnet update \
    --resource-group CreatePubLBQS-rg \
    --vnet-name myVNet \
    --name myBackendSubnet \
    --nat-gateway myNATgateway

安装 IIS

使用 az vm extension set 将 IIS 安装在虚拟机上,并将默认网站设置为计算机名。

  array=(myVM1 myVM2)
    for vm in "${array[@]}"
    do
     az vm extension set \
       --publisher Microsoft.Compute \
       --version 1.8 \
       --name CustomScriptExtension \
       --vm-name $vm \
       --resource-group CreatePubLBQS-rg \
       --settings '{"commandToExecute":"powershell Add-WindowsFeature Web-Server; powershell Add-Content -Path \"C:\\inetpub\\wwwroot\\Default.htm\" -Value $($env:computername)"}'
  done

测试负载均衡器

若要获取负载均衡器的公共 IP 地址,请使用 az network public-ip show

复制该公共 IP 地址,并将其粘贴到浏览器的地址栏。

  az network public-ip show \
    --resource-group CreatePubLBQS-rg \
    --name myPublicIP \
    --query ipAddress \
    --output tsv

测试负载均衡器

清理资源

如果不再需要资源组、负载均衡器和所有相关的资源,使用 az group delete 命令将它们删除。

  az group delete \
    --name CreatePubLBQS-rg

后续步骤

在本快速入门:

  • 你创建了一个标准公共负载均衡器

  • 连接了两个虚拟机

  • 配置了负载均衡器流量规则和运行状况探测

  • 测试了负载均衡器

若要详细了解 Azure 负载均衡器,请继续学习: