Kurz: Vyrovnávání zatížení virtuálních počítačů pro zajištění vysoké dostupnosti

Platí pro: ✔️ Flexibilní škálovací sady virtuálních počítačů s ✔️ Linuxem

Vyrovnávání zatížení zajišťuje vyšší úroveň dostupnosti tím, že rozprostírá příchozí požadavky na více virtuálních počítačů. V tomto kurzu se seznámíte s různými komponentami nástroje pro vyrovnávání zatížení Azure, které distribuují provoz a zajišťují vysokou dostupnost. Získáte informace o těchto tématech:

  • Vytvoření nástroje pro vyrovnávání zatížení
  • Vytvoření sondy stavu
  • Vytvoření pravidel provozu
  • Instalace základní aplikace Node.js pomocí cloud-init
  • Vytvoření virtuálních počítačů a jejich připojení k nástroji pro vyrovnávání zatížení
  • Zobrazení nástroje pro vyrovnávání zatížení v akci
  • Přidání a odebrání virtuálních počítačů z nástroje pro vyrovnávání zatížení

Tento kurz používá rozhraní příkazového řádku v rámci Azure Cloud Shell, které se neustále aktualizuje na nejnovější verzi. Pokud chcete otevřít Cloud Shell, vyberte Vyzkoušet v horní části libovolného bloku kódu.

Pokud se rozhodnete nainstalovat a používat rozhraní příkazového řádku místně, musíte mít Azure CLI verze 2.0.30 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Azure Load Balancer – přehled

Nástroj pro vyrovnávání zatížení Azure je nástroj pro vyrovnávání zatížení úrovně 4 (TCP, UDP), který poskytuje vysokou dostupnost díky distribuci příchozího provozu mezi virtuální počítače v dobrém stavu. Sonda stavu nástroje pro vyrovnávání zatížení na všech virtuálních počítačích monitoruje daný port a distribuuje provoz pouze do virtuálních počítačů, které jsou v provozu.

Nadefinujete konfiguraci front-endových IP adres, která obsahuje jednu nebo více veřejných IP adres. Tato konfigurace front-endových IP adres povoluje přístup k vašemu nástroji pro vyrovnávání zatížení a vašim aplikacím přes internet.

Virtuální počítače se k nástroji pro vyrovnávání zatížení připojují pomocí své virtuální síťové karty. Za účelem distribuce provozu do virtuálních počítačů obsahuje fond back-endových adres IP adresy virtuálních síťových karet připojených k nástroji pro vyrovnávání zatížení.

Pro řízení toku provozu definujete pravidla nástroje pro vyrovnávání zatížení pro konkrétní porty a protokoly, které se mapují na vaše virtuální počítače.

Pokud jste postupovali podle předchozího kurzu věnovaného vytvoření škálovací sady virtuálních počítačů, nástroj pro vyrovnávání zatížení už se pro vás vytvořil. Všechny tyto komponenty se pro vás nakonfigurovaly jako součást škálovací sady.

Vytvoření nástroje pro vyrovnávání zatížení Azure

Tato část podrobně popisuje vytvoření a konfiguraci jednotlivých komponent nástroje pro vyrovnávání zatížení. Než budete vytvoříte nástroj pro vyrovnávání zatížení, vytvořte skupinu prostředků pomocí příkazu az group create. Následující příklad vytvoří skupinu prostředků myResourceGroupLoadBalancer v umístění eastus:

az group create --name myResourceGroupLoadBalancer --location eastus

Vytvoření veřejné IP adresy

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. Vytvořte veřejnou IP adresu pomocí příkazu az network public-ip create. Následující příklad vytvoří veřejnou IP adresu s názvem myPublicIP ve skupině prostředků myResourceGroupLoadBalancer:

az network public-ip create \
    --resource-group myResourceGroupLoadBalancer \
    --name myPublicIP

Vytvoření nástroje pro vyrovnávání zatížení

Vytvořte nástroj pro vyrovnávání zatížení pomocí příkazu az network lb create. Následující příklad vytvoří nástroj pro vyrovnávání zatížení myLoadBalancer a přiřadí adresu myPublicIP ke konfiguraci front-end IP adres:

az network lb create \
    --resource-group myResourceGroupLoadBalancer \
    --name myLoadBalancer \
    --frontend-ip-name myFrontEndPool \
    --backend-pool-name myBackEndPool \
    --public-ip-address myPublicIP

Vytvoření sondy stavu

Pokud chcete nástroji pro vyrovnávání zatížení povolit monitorování stavu vaší aplikace, použijte sondu stavu. Sonda stavu dynamicky přidává virtuální počítače do oběhu nástroje pro vyrovnávání zatížení nebo je z něj odebírá na základě jejich reakce na kontroly stavu. Ve výchozím nastavení se virtuální počítač odebere z distribuce nástroje pro vyrovnávání zatížení po dvou selháních po sobě v 15sekundových intervalech. Sondu stavu můžete vytvořit na základě protokolu nebo konkrétní stránky kontroly stavu pro vaši aplikaci.

Následující příklad vytvoří sondu protokolu TCP. Pokud potřebujete jemněji odstupňované kontroly stavu, můžete vytvářet i vlastní sondy protokolu HTTP. Pokud použijete vlastní sondu protokolu HTTP, musíte vytvořit stránku kontroly stavu, například healthcheck.js. Aby nástroj pro vyrovnávání zatížení udržel hostitele v oběhu, musí sonda vracet odpověď HTTP 200 OK.

Sondu stavu protokolu TCP vytvoříte pomocí příkazu az network lb probe create. Následující příklad vytvoří sondu stavu myHealthProbe:

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

Vytvoření pravidla nástroje pro vyrovnávání zatížení

Pravidlo nástroje pro vyrovnávání zatížení slouží k definování způsobu distribuce provozu do virtuálních počítačů. Nadefinujte 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. Abyste zajistili, že provoz budou přijímat pouze virtuální počítače, které jsou v pořádku, nadefinujete také sondu stavu, která se má použít.

Vytvořte pravidlo nástroje pro vyrovnávání zatížení pomocí příkazu az network lb rule create. Následující příklad vytvoří pravidlo myLoadBalancerRule, použije sondu stavu myHealthProbe a nastaví vyrovnávání provozu na portu 80:

az network lb rule create \
    --resource-group myResourceGroupLoadBalancer \
    --lb-name myLoadBalancer \
    --name myLoadBalancerRule \
    --protocol tcp \
    --frontend-port 80 \
    --backend-port 80 \
    --frontend-ip-name myFrontEndPool \
    --backend-pool-name myBackEndPool \
    --probe-name myHealthProbe

Konfigurace virtuální sítě

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ě. Další informace o virtuálních sítích najdete v kurzu Správa virtuálních sítí Azure.

Vytvoření síťových prostředků

Vytvořte virtuální síť pomocí příkazu az network vnet create. Následující příklad vytvoří virtuální síť myVnet s podsítí mySubnet:

az network vnet create \
    --resource-group myResourceGroupLoadBalancer \
    --name myVnet \
    --subnet-name mySubnet

Skupinu zabezpečení sítě přidáte pomocí příkazu az network nsg create. Následující příklad vytvoří skupinu zabezpečení sítě myNetworkSecurityGroup:

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

Vytvořte pravidlo skupiny zabezpečení sítě pomocí příkazu az network nsg rule create. Následující příklad vytvoří pravidlo skupiny zabezpečení sítě myNetworkSecurityGroupRule:

az network nsg rule create \
    --resource-group myResourceGroupLoadBalancer \
    --nsg-name myNetworkSecurityGroup \
    --name myNetworkSecurityGroupRule \
    --priority 1001 \
    --protocol tcp \
    --destination-port-range 80

Virtuální síťové karty se vytvářejí pomocí příkazu az network nic create. Následující příklad vytvoří tři virtuální síťové karty. (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). 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í:

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

Po vytvoření všech tří virtuálních síťových karet pokračujte k dalšímu kroku.

Vytvoření virtuálních počítačů

Vytvoření konfigurace cloud-init

V předchozím kurzu týkajícím se postupu přizpůsobení virtuálního počítače s Linuxem při prvním spuštění, jste se dozvěděli, jak automatizovat přizpůsobení virtuálního počítače s prostředím cloud-init. Stejný konfigurační soubor cloud-init můžete použít k instalaci serveru NGINX a spuštění jednoduché aplikace Hello World v Node.js v dalším kroku. Pokud chcete vidět nástroj pro vyrovnávání zatížení v akci, na konci tohoto kurzu otevřete tuto jednoduchou aplikaci ve webovém prohlížeči.

V aktuálním prostředí vytvořte soubor cloud-init.txt a vložte do něj následující konfiguraci. Soubor vytvořte například v Cloud Shellu, pokud nepracujete na místním počítači. Zadáním příkazu sensible-editor cloud-init.txt soubor vytvořte a zobrazte seznam editorů k dispozici. Ujistěte se, že se celý soubor cloud-init zkopíroval správně, zejména první řádek:

#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čů

Pokud chcete zlepšit vysokou dostupnost aplikace, umístěte své virtuální počítače do skupiny dostupnosti. Další informace o skupinách dostupnosti najdete v předchozím kurzu Vytváření vysoce dostupných virtuálních počítačů.

Vytvořte skupinu dostupnosti pomocí příkazu az vm availability-set create. Následující příklad vytvoří skupinu dostupnosti myAvailabilitySet:

az vm availability-set create \
    --resource-group myResourceGroupLoadBalancer \
    --name myAvailabilitySet

Teď můžete vytvořit virtuální počítače pomocí příkazu az vm create. Následující příklad vytvoří tři virtuální počítače a vygeneruje klíče SSH, pokud ještě neexistují:

for i in `seq 1 3`; do
    az vm create \
        --resource-group myResourceGroupLoadBalancer \
        --name myVM$i \
        --availability-set myAvailabilitySet \
        --nics myNic$i \
        --image UbuntuLTS \
        --admin-username azureuser \
        --generate-ssh-keys \
        --custom-data cloud-init.txt \
        --no-wait
done

Když vás Azure CLI vrátí na příkazový řádek, na pozadí stále poběží úlohy. Parametr --no-wait znamená, že se nečeká na dokončení všech úloh. Než k aplikaci budete mít přístup, může to ještě několik minut trvat. Sonda stavu nástroje pro vyrovnávání zatížení automaticky rozpozná, jakmile bude aplikace spuštěná na všech virtuálních počítačích. Jakmile bude aplikace spuštěná, pravidlo nástroje pro vyrovnávání zatížení začne distribuovat provoz.

Test nástroje pro vyrovnávání zatížení

Získejte veřejnou IP adresu svého nástroje pro vyrovnávání zatížení pomocí příkazu az network public-ip show. Následující příklad získá dříve vytvořenou IP adresu myPublicIP:

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

Veřejnou IP adresu pak můžete zadat do webového prohlížeče. 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. 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:

Spuštěná aplikace Node.js

Pokud chcete zobrazit distribuci provozu nástrojem pro vyrovnávání zatížení mezi všechny virtuální počítače, na kterých je vaše aplikace spuštěná, můžete vynutit aktualizaci webového prohlížeče.

Přidání a odebrání virtuálních počítačů

Na virtuálních počítačích, na kterých je vaše aplikace spuštěná, možná budete potřebovat provést údržbu, například nainstalovat aktualizace operačního systému. Abyste si poradili se zvýšením provozu do vaší aplikace, možná budete muset přidat další virtuální počítače. V této části se dozvíte, jak z nástroje pro vyrovnávání zatížení odebrat virtuální počítač nebo ho do něj přidat.

Odebrání virtuálního počítače z nástroje pro vyrovnávání zatížení

Virtuální počítač můžete odebrat z fondu back-end adres pomocí příkazu az network nic ip-config address-pool remove. Následující příklad odebere virtuální síťovou kartu virtuálního počítače myVM2 z nástroje pro vyrovnávání zatížení myLoadBalancer:

az network nic ip-config address-pool remove \
    --resource-group myResourceGroupLoadBalancer \
    --nic-name myNic2 \
    --ip-config-name ipConfig1 \
    --lb-name myLoadBalancer \
    --address-pool myBackEndPool 

Pokud chcete zobrazit distribuci provozu nástrojem pro vyrovnávání zatížení mezi zbývající dva virtuální počítače, na kterých je vaše aplikace spuštěná, můžete vynutit aktualizaci webového prohlížeče. Teď můžete na virtuálním počítači provést údržbu, například nainstalovat aktualizace operačního systému nebo provést restartování virtuálního počítače.

Pokud chcete zobrazit seznam virtuálních počítačů s virtuálními síťovými kartami připojenými k nástroji pro vyrovnávání zatížení, použijte příkaz az network lb address-pool show. Následujícím způsobem zadejte dotaz s filtrem podle ID virtuální síťové karty:

az network lb address-pool show \
    --resource-group myResourceGroupLoadBalancer \
    --lb-name myLoadBalancer \
    --name myBackEndPool \
    --query backendIpConfigurations \
    --output tsv | cut -f5

Výstup bude podobný jako v následujícím příkladu, který ukazuje, že virtuální síťová karta virtuálního počítače 2 už není součástí fondu back-end adres:

/subscriptions/<guid>/resourceGroups/myResourceGroupLoadBalancer/providers/Microsoft.Network/networkInterfaces/myNic1/ipConfigurations/ipconfig1
/subscriptions/<guid>/resourceGroups/myResourceGroupLoadBalancer/providers/Microsoft.Network/networkInterfaces/myNic3/ipConfigurations/ipconfig1

Přidání virtuálního počítače do nástroje pro vyrovnávání zatížení

Po provedení údržby virtuálního počítače, nebo pokud potřebujete rozšířit kapacitu, můžete přidat virtuální počítač do fondu back-end adres pomocí příkazu az network nic ip-config address-pool add. Následující příklad přidá virtuální síťovou kartu virtuálního počítače myVM2 do nástroje pro vyrovnávání zatížení myLoadBalancer:

az network nic ip-config address-pool add \
    --resource-group myResourceGroupLoadBalancer \
    --nic-name myNic2 \
    --ip-config-name ipConfig1 \
    --lb-name myLoadBalancer \
    --address-pool myBackEndPool

Pokud chcete ověřit připojení virtuální síťové karty k fondu back-end adres, znovu použijte příkaz az network lb address-pool show z předchozího kroku.

Další kroky

V tomto kurzu jste vytvořili nástroj pro vyrovnávání zatížení a připojili jste k němu virtuální počítače. Naučili jste se:

  • Vytvoření nástroje pro vyrovnávání zatížení Azure
  • Vytvoření sondy stavu nástroje pro vyrovnávání zatížení
  • Vytvoření pravidel provozu pro nástroj pro vyrovnávání zatížení
  • Vytvoření základní aplikace Node.js pomocí cloud-init
  • Vytvoření virtuálních počítačů a jejich připojení k nástroji pro vyrovnávání zatížení
  • Zobrazení nástroje pro vyrovnávání zatížení v akci
  • Přidání virtuálních počítačů do nástroje pro vyrovnávání zatížení nebo jejich odebrání

Přejděte k dalšímu kurzu, kde najdete další informace o komponentách virtuální sítě Azure.