Vyrovnávání zatížení virtuálních počítačů napříč všemi zónami dostupnosti pomocí Azure CLILoad balance VMs across all availability zones using Azure CLI

Tento článek vás provede vytvořením veřejné Standard Load Balancer s koncovým front-redundantním frontou pro zajištění redundance zóny bez závislosti na více záznamech DNS.This article steps through creating a public Standard Load Balancer with a zone-redundant frontend to achieve zone-redundancy without dependency on multiple DNS records. Jedna front-end IP adresa je automaticky redundantní pro zónu.A single front-end IP address is automatically zone-redundant. Pomocí zóny redundantního front-endu pro váš nástroj pro vyrovnávání zatížení s jednou IP adresou teď můžete získat přístup k libovolnému virtuálnímu počítači ve virtuální síti v rámci oblasti, která je ve všech Zóny dostupnostich.Using a zone redundant frontend for your load balancer, with a single IP address you can now reach any VM in a virtual network within a region that is across all Availability Zones. Zóny dostupnosti se používají k ochraně aplikací a dat před málo pravděpodobným selháním nebo ztrátou celého datového centra.Use availability zones to protect your apps and data from an unlikely failure or loss of an entire datacenter.

Další informace o používání zón dostupnosti s Load Balancerem úrovně Standard najdete v tématu o Load Balanceru úrovně Standard a zónách dostupnosti.For more information about using Availability zones with Standard Load Balancer, see Standard Load Balancer and Availability Zones.

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet před tím, než začnete.If you don't have an Azure subscription, create a free account before you begin.

Použití služby Azure Cloud ShellUse Azure Cloud Shell

Hostitelé Azure Azure Cloud Shell interaktivní prostředí prostředí, které můžete používat v prohlížeči.Azure hosts Azure Cloud Shell, an interactive shell environment that you can use through your browser. Cloud Shell vám umožní pracovat se bash službami PowerShell Azure pomocí nebo.Cloud Shell lets you use either bash or PowerShell to work with Azure services. Můžete použít Cloud Shell předinstalované příkazy ke spuštění kódu v tomto článku, aniž byste museli instalovat cokoli do svého místního prostředí.You can use the Cloud Shell pre-installed commands to run the code in this article without having to install anything on your local environment.

Spuštění Azure Cloud Shell:To launch Azure Cloud Shell:

MožnostOption Příklad nebo propojeníExample/Link
Zvolte Vyzkoušet v pravém horním rohu bloku kódu.Select Try It in the upper-right corner of a code block. Při výběru možnosti vyzkoušet se kód automaticky nezkopíruje do Cloud Shell.Selecting Try It doesn't automatically copy the code to Cloud Shell. Příklad pokusu o Azure Cloud Shell
V prohlížeči otevřete Cloud Shell kliknutím na tlačítko Spustit Cloud Shell. https://shell.azure.comGo to https://shell.azure.com or select the Launch Cloud Shell button to open Cloud Shell in your browser. Spustit Cloud Shell v novém okněLaunch Cloud Shell in a new window
Vyberte tlačítko Cloud Shell v pravém horním panelu nabídek v Azure Portal.Select the Cloud Shell button on the top-right menu bar in the Azure portal. Tlačítko Cloud Shell na webu Azure Portal

Chcete-li spustit kód v tomto článku v Azure Cloud Shell:To run the code in this article in Azure Cloud Shell:

  1. Spusťte Cloud Shell.Launch Cloud Shell.

  2. Vyberte tlačítko Kopírovat na bloku kódu ke zkopírování kódu.Select the Copy button on a code block to copy the code.

  3. Vložte kód do relace Cloud Shell stisknutím kombinace kláves CTRL+SHIFT+v v systému Windows a Linux nebo příkazem cmd+SHIFT+v v MacOS.Paste the code into the Cloud Shell session with Ctrl+Shift+V on Windows and Linux, or Cmd+Shift+V on macOS.

  4. Stiskněte klávesu ENTER pro spuštění kódu.Press Enter to run the code.

Pokud se rozhodnete nainstalovat a používat rozhraní příkazového řádku místně, musíte mít spuštěný Azure CLI verze 2.0.17 nebo novější.If you choose to install and use the CLI locally, this tutorial requires that you are running Azure CLI version 2.0.17 or higher. Verzi zjistíte spuštěním příkazu az --version.To find the version, run az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.If you need to install or upgrade, see Install Azure CLI.

Poznámka

Podpora pro zóny dostupnosti je k dispozici pro vyberte prostředky Azure a oblasti a velikostní řady virtuálních počítačů.Support for Availability Zones is available for select Azure resources and regions, and VM size families. Další informace o tom, jak začít a které prostředky Azure, oblasti a velikostní řady virtuálních počítačů můžete vyzkoušet zóny dostupnosti s, najdete v části přehledu zón dostupnosti.For more information on how to get started, and which Azure resources, regions, and VM size families you can try availability zones with, see Overview of Availability Zones. Pokud budete potřebovat podporu, můžete kontaktovat StackOverflow nebo otevřít lístek podpory Azure.For support, you can reach out on StackOverflow or open an Azure support ticket.

Vytvoření skupiny prostředkůCreate a resource group

Vytvořte skupinu prostředků pomocí příkazu az group create.Create a resource group with az group create. Skupina prostředků Azure je logický kontejner, ve kterém se nasazují a spravují prostředky Azure.An Azure resource group is a logical container into which Azure resources are deployed and managed.

Následující příklad vytvoří skupinu prostředků s názvem myResourceGroupSLB v umístění westeurope :The following example creates a resource group named myResourceGroupSLB in the westeurope location:

az group create \
--name myResourceGroupSLB \
--location westeurope

Vytvoření standardu veřejné IP adresy zóny redundantníCreate a zone redundant public IP Standard

Pokud chcete mít k aplikaci přístup přes internet, potřebujete pro nástroj pro vyrovnávání zatížení veřejnou IP adresu.To access your app on the Internet, you need a public IP address for the load balancer. Záložní front-end zóna je obsluhována všemi zónami dostupnosti v oblasti současně.A zone-redundant front-end is served by all availability zones in a region simultaneously. Vytvořte zónu redundantní veřejné IP adresy pomocí AZ Network Public-IP Create.Create a zone redundant public IP address with az network public-ip create. Když vytvoříte standardní veřejnou IP adresu, bude ve výchozím nastavení zóna redundantní.When you create a Standard Public IP address, it is zone redundant by default.

Následující příklad vytvoří zónu redundantní veřejnou IP adresu s názvem myPublicIP ve skupině prostředků myResourceGroupLoadBalancer .The following example creates a zone redundant public IP address named myPublicIP in the myResourceGroupLoadBalancer resource group.

az network public-ip create \
--resource-group myResourceGroupSLB \
--name myPublicIP \
--sku Standard

Vytvoření Standard Load Balancer AzureCreate Azure Standard Load Balancer

Tato část podrobně popisuje vytvoření a konfiguraci následujících komponent nástroje pro vyrovnávání zatížení:This section details how you can create and configure the following components of the load balancer:

  • Front-endový fond IP adres, který přijímá příchozí síťový provoz do nástroje pro vyrovnávání zatížení.a frontend IP pool that receives the incoming network traffic on the load balancer.
  • Back-endový fond IP adres, kam front-endový fond odesílá síťový provoz s vyrovnáváním zatížení.a backend IP pool where the frontend pool sends the load balanced network traffic.
  • Sonda stavu, která určuje stav back-endových instancí virtuálních počítačů.a health probe that determines health of the backend VM instances.
  • Pravidlo nástroje pro vyrovnávání zatížení, které definuje způsob distribuce provozu do virtuálních počítačů.a load balancer rule that defines how traffic is distributed to the VMs.

Vytvoření nástroje pro vyrovnávání zatíženíCreate the load balancer

Vytvořte standardní nástroj pro vyrovnávání zatížení pomocí AZ Networkdiskont Create.Create a Standard load balancer with az network lb create. Následující příklad vytvoří nástroj pro vyrovnávání zatížení s názvem myLoadBalancer a přiřadí myPublicIP adresu konfigurace front-endové IP adresy.The following example creates a load balancer named myLoadBalancer and assigns the myPublicIP address to the front-end IP configuration.

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

Vytvoření sondy stavu na portu 80Create health probe on port 80

Test stavu kontroluje všechny instance virtuálních počítačů a ověřuje, že mohou posílat síťový provoz.A health probe checks all virtual machine instances to make sure they can send network traffic. Instance virtuálního počítače, u níž se kontroly testu nezdaří, se odebere z nástroje pro vyrovnávání zatížení do té doby, než znovu přejde do režimu online a kontrola testu určí, že je v pořádku.The virtual machine instance with failed probe checks is removed from the load balancer until it goes back online and a probe check determines that it's healthy. Vytvořte sondu stavu pomocí AZ Network disprobe Create a Monitorujte stav virtuálních počítačů.Create a health probe with az network lb probe create to monitor the health of the virtual machines. Sondu stavu protokolu TCP vytvoříte pomocí příkazu az network lb probe create.To create a TCP health probe, you use az network lb probe create. Následující příklad vytvoří sondu stavu myHealthProbe:The following example creates a health probe named myHealthProbe:

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

Vytvoření pravidla nástroje pro vyrovnávání zatížení pro port 80Create load balancer rule for port 80

Pravidlo nástroje pro vyrovnávání zatížení definuje konfiguraci front-endových IP adres pro příchozí provoz, back-endový fond IP adres pro příjem provozu a také požadovaný zdrojový a cílový port.A load balancer rule defines the front-end IP configuration for the incoming traffic and the back-end IP pool to receive the traffic, along with the required source and destination port. Pomocí příkazu myLoadBalancerRuleWeb vytvořte pravidlo nástroje pro vyrovnávání zatížení myLoadBalancerRuleWeb pro naslouchání na portu 80 ve front-endovém fondu myFrontEndPool a odesílání síťového provozu s vyrovnáváním zatížení do back-endového fondu adres myBackEndPool rovněž na portu 80.Create a load balancer rule myLoadBalancerRuleWeb with az network lb rule create for listening to port 80 in the frontend pool myFrontEndPool and sending load-balanced network traffic to the backend address pool myBackEndPool also using port 80.

az network lb rule create \
--resource-group myResourceGroupSLB \
--lb-name myLoadBalancer \
--name myLoadBalancerRuleWeb \
--protocol tcp \
--frontend-port 80 \
--backend-port 80 \
--frontend-ip-name myFrontEnd \
--backend-pool-name myBackEndPool \
--probe-name myHealthProbe

Konfigurace virtuální sítěConfigure virtual network

Než nasadíte několik virtuálních počítačů a budete moci otestovat svůj nástroj pro vyrovnávání zatížení, vytvořte podpůrné prostředky virtuální sítě.Before you deploy some VMs and can test your load balancer, create the supporting virtual network resources.

Vytvoření virtuální sítěCreate a virtual network

Vytvořte virtuální síť s názvem myVnet s podsítí s názvem mySubnet v myResourceGroup pomocí AZ Network VNet Create.Create a virtual network named myVnet with a subnet named mySubnet in the myResourceGroup using az network vnet create.

az network vnet create \
--resource-group myResourceGroupSLB \
--location westeurope \
--name myVnet \
--subnet-name mySubnet

Vytvoření skupiny zabezpečení sítěCreate a network security group

Vytvořte skupinu zabezpečení sítě s názvem myNetworkSecurityGroup , která definuje příchozí připojení k virtuální síti pomocí AZ Network NSG Create.Create network security group named myNetworkSecurityGroup to define inbound connections to your virtual network with az network nsg create.

az network nsg create \
--resource-group myResourceGroupSLB \
--name myNetworkSecurityGroup

Vytvořte pravidlo skupiny zabezpečení sítě s názvem myNetworkSecurityGroupRule pro port 80 pomocí AZ Network NSG Rule Create.Create a network security group rule named myNetworkSecurityGroupRule for port 80 with az network nsg rule create.

az network nsg rule create \
--resource-group myResourceGroupSLB \
--nsg-name myNetworkSecurityGroup \
--name myNetworkSecurityGroupRule \
--protocol tcp \
--direction inbound \
--source-address-prefix '*' \
--source-port-range '*' \
--destination-address-prefix '*' \
--destination-port-range 80 \
--access allow \
--priority 200

Vytvoření síťových rozhraníCreate NICs

Vytvořte tři virtuální síťové karty pomocí AZ Network nic Create a přidružte je k veřejné IP adrese a skupině zabezpečení sítě.Create three virtual NICs with az network nic create and associate them with the Public IP address and the network security group. Následující příklad vytvoří šest virtuálních síťových karet.The following example creates six virtual NICs. (Jednu virtuální síťovou kartu pro každý virtuální počítač, který pro svou aplikaci vytvoříte v následujících krocích).(One virtual NIC for each VM you create for your app in the following steps). Kdykoli můžete vytvořit další virtuální síťové karty a virtuální počítače a přidat je do nástroje pro vyrovnávání zatížení:You can create additional virtual NICs and VMs at any time and add them to the load balancer:

for i in `seq 1 3`; do
    az network nic create \
        --resource-group myResourceGroupSLB \
        --name myNic$i \
        --vnet-name myVnet \
        --subnet mySubnet \
        --network-security-group myNetworkSecurityGroup \
        --lb-name myLoadBalancer \
        --lb-address-pools myBackEndPool
done

Vytvoření serverů back-endCreate backend servers

V tomto příkladu vytvoříte tři virtuální počítače umístěné v zóně 1, v zóně 2 a v zóně 3 jako servery back-end pro nástroj pro vyrovnávání zatížení.In this example, you create three virtual machines located in zone 1, zone 2, and zone 3 to be used as backend servers for the load balancer. Na virtuální počítače nainstalujete také NGINX a ověříte tak, že nástroj pro vyrovnávání zatížení byl úspěšně vytvořen.You also install NGINX on the virtual machines to verify that the load balancer was successfully created.

Vytvoření konfigurace cloud-initCreate cloud-init config

K instalaci serveru NGINX a spuštění aplikace Hello World v Node.js na virtuálním počítači s Linuxem můžete použít konfigurační soubor cloud-init.You can use a cloud-init configuration file to install NGINX and run a 'Hello World' Node.js app on a Linux virtual machine. V aktuálním prostředí vytvořte soubor cloud-init.txt a zkopírujte následující konfiguraci a vložte ji do prostředí.In your current shell, create a file named cloud-init.txt and copy and paste the following configuration into the shell. Ujistěte se, že správně kopírujete celý soubor cloud-init, zejména první řádek:Make sure that you copy the whole cloud-init file correctly, especially the first line:

#cloud-config
package_upgrade: true
packages:
  - nginx
  - nodejs
  - npm
write_files:
  - owner: www-data:www-data
  - path: /etc/nginx/sites-available/default
    content: |
      server {
        listen 80;
        location / {
          proxy_pass http://localhost:3000;
          proxy_http_version 1.1;
          proxy_set_header Upgrade $http_upgrade;
          proxy_set_header Connection keep-alive;
          proxy_set_header Host $host;
          proxy_cache_bypass $http_upgrade;
        }
      }
  - owner: azureuser:azureuser
  - path: /home/azureuser/myapp/index.js
    content: |
      var express = require('express')
      var app = express()
      var os = require('os');
      app.get('/', function (req, res) {
        res.send('Hello World from host ' + os.hostname() + '!')
      })
      app.listen(3000, function () {
        console.log('Hello world app listening on port 3000!')
      })
runcmd:
  - service nginx restart
  - cd "/home/azureuser/myapp"
  - npm init
  - npm install express -y
  - nodejs index.js

Vytvoření virtuálních počítačů s více oblastmiCreate the zonal virtual machines

Virtuální počítače vytvoříte pomocí AZ VM Create v zóně 1, zóně 2 a zóně 3.Create the VMs with az vm create in zone 1, zone 2, and zone 3. Následující příklad vytvoří virtuální počítač v každé zóně a vygeneruje klíče SSH, pokud ještě neexistují:The following example creates a VM in each zone and generates SSH keys if they do not already exist:

Vytvořte virtuální počítač v každé zóně (zóna 1, zóna 2 a zóna 3) umístění westeurope .Create a VM in each zone (zone 1, zone2, and zone 3) of the westeurope location.

for i in `seq 1 3`; do
  az vm create \
    --resource-group myResourceGroupSLB \
    --name myVM$i \
    --nics myNic$i \
    --image UbuntuLTS \
    --generate-ssh-keys \
    --zone $i \
    --custom-data cloud-init.txt
done

Test nástroje pro vyrovnávání zatíženíTest the load balancer

Získejte veřejnou IP adresu nástroje pro vyrovnávání zatížení pomocí AZ Network Public-IP show.Get the public IP address of the load balancer using az network public-ip show.

  az network public-ip show \
    --resource-group myResourceGroupSLB \
    --name myPublicIP \
    --query [ipAddress] \
    --output tsv

Veřejnou IP adresu pak můžete zadat do webového prohlížeče.You can then enter the public IP address in to a web browser. Nezapomeňte, že příprava virtuálních počítačů několik minut trvá, a až pak do nich začne nástroj pro vyrovnávání zatížení distribuovat provoz.Remember - it takes a few minutes for the VMs to be ready before the load balancer starts to distribute traffic to them. Zobrazí se aplikace, včetně názvu hostitele virtuálního počítače, do kterého nástroj pro vyrovnávání zatížení distribuoval provoz, jako v následujícím příkladu:The app is displayed, including the hostname of the VM that the load balancer distributed traffic to as in the following example:

Spuštěná aplikace Node.js

Pokud chcete vidět, že nástroj pro vyrovnávání zatížení distribuuje provoz mezi virtuálními počítači ve všech třech zónách dostupnosti, na kterých běží vaše aplikace, můžete zastavit virtuální počítač v konkrétní zóně a aktualizovat si prohlížeč.To see the load balancer distribute traffic across VMs in all three availability zones running your app, you can stop a VM in a particular zone and refresh your browser.

Další postupNext steps