Sdílet prostřednictvím


Konfigurace vlastních metrik pro postupné upgrady ve škálovacích sadách virtuálních počítačů (Preview)

Poznámka:

Vlastní metriky pro postupné upgrady ve škálovacích sadách virtuálních počítačů jsou aktuálně ve verzi Preview. Verze Preview vám zpřístupňujeme pod podmínkou, že budete souhlasit s dodatečnými podmínkami použití. Některé aspekty těchto funkcí se můžou před obecnou dostupností (GA) změnit.

Vlastní metriky pro postupné upgrady umožňují využít rozšíření stavu aplikace k generování vlastních metrik do škálovací sady virtuálních počítačů. Pomocí těchto vlastních metrik můžete škálovací sadě sdělit pořadí, ve kterém se mají virtuální počítače aktualizovat při aktivaci postupného upgradu. Vlastní metriky můžou také informovat vaši škálovací sadu, když by se měl upgrade přeskočit na konkrétní instanci. To vám umožní mít větší kontrolu nad řazením a samotným procesem aktualizace.

Vlastní metriky je možné použít v kombinaci s dalšími funkcemi postupného upgradu, jako jsou automatické upgrady operačního systému, automatické upgrady rozšíření a upgrady maxSurge.

Požadavky

  • Pokud pro škálovací sady virtuálních počítačů používáte vlastní metriky pro postupné upgrady, musí škálovací sada také použít rozšíření stavu aplikace s bohatými stavy k hlášení pořadí fází nebo přeskočení informací o upgradu. Při použití rozšíření stavu aplikace s binárními stavy se nepodporují upgrady vlastních metrik.
  • Aby bylo možné přijímat informace o vlastních metrikách, musí být rozšíření stavu aplikace nastavené tak, aby používalo protokol HTTP nebo HTTPS. Protokol TCP není podporován pro integraci s vlastními metrikami pro postupné upgrady.

Koncepty

Řazení fází

Fáze je seskupovací konstrukce pro virtuální počítače. Každá fáze je určena nastavením metadat vygenerovaných z rozšíření stavu aplikace prostřednictvím customMetrics vlastnosti. Škálovací sada virtuálních počítačů přebírá informace získané z vlastních metrik a používá je k umístění virtuálních počítačů do jejich přiřazených fází. V každé fázi přiřadí škálovací sada virtuálních počítačů také dávky upgradu. Každá dávka se konfiguruje pomocí zásad postupného upgradu, které berou v úvahu aktualizační domény (UD), domény selhání (FD) a informace o zónách jednotlivých virtuálních počítačů.

Při zahájení postupného upgradu se virtuální počítače umístí do určených fází. Postupné upgrady se provádějí v pořadí číselných sekvencí. Virtuální počítače ve všech dávkách v rámci fáze se dokončí před přechodem na další fázi. Pokud pro virtuální počítač není přijato žádné řazení fází, škálovací sada ji umístí do poslední fáze.

Místní škálovací sadaDiagram znázorňující základní diagram toho, co se stane při použití nfázových upgradů v regionální škálovací sadě

Zónová škálovací sadaDiagram znázorňující základní diagram toho, co se stane při použití nfázových upgradů ve škálovací sadě zón

Pokud chcete zadat číslo fáze, ke které by měl být virtuální počítač přidružený, použijte phaseOrderingNumber parametr.

{
     “applicationHealthState”: “Healthy”,
      “customMetrics”: "{ \"rollingUpgrade\": { \"PhaseOrderingNumber\": 0 } }"
}

Přeskočit upgrade

Funkce přeskočit upgrade umožňuje vynechat jednotlivé instance z upgradu během postupného upgradu. Podobá se využití ochrany instancí, ale může se bezproblémově integrovat do pracovního postupu postupného upgradu a do aplikací na úrovni instancí. Podobně jako u řazení fází se informace o upgradu přeskočení předávají do škálovací sady virtuálních počítačů prostřednictvím rozšíření stavu aplikace a vlastního nastavení metrik. Při aktivaci postupného upgradu zkontroluje škálovací sada virtuálních počítačů odpověď vlastních metrik rozšíření stavu aplikace a pokud je upgrade přeskočení nastaven na hodnotu true, instance se do postupného upgradu nezahrne.

Diagram znázorňující diagram vysoké úrovně toho, co se stane při použití upgradu přeskočení v zónové škálovací sadě

Pokud chcete přeskočit upgrade na virtuálním počítači, použijte SkipUpgrade parametr. To říká postupnému upgradu, aby při provádění upgradů přeskočí tento virtuální počítač.

{
     “applicationHealthState”: “Healthy”,
      “customMetrics”: "{ \"rollingUpgrade\": { \"SkipUpgrade\": true} }"
}

Přeskočit upgrade a pořadí fází je možné použít také společně:

{
     “applicationHealthState”: “Healthy”,
      “customMetrics”: "{ \"rollingUpgrade\": { \"SkipUpgrade\": false, \"PhaseOrderingNumber\": 0 } }"
}

Konfigurace rozšíření stavu aplikace

Rozšíření stavu aplikace vyžaduje požadavek HTTP nebo HTTPS s přidruženým portem nebo cestou požadavku. Testy PROTOKOLU TCP se podporují při použití rozšíření stavu aplikace, ale nemůžou nastavit ApplicationHealthState tělo odpovědi sondy a nejde je použít se kumulativními upgrady s vlastními metrikami.

{
  "extensionProfile" : {
     "extensions" : [
      {
        "name": "HealthExtension",
        "properties": {
          "publisher": "Microsoft.ManagedServices",
          "type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
          "autoUpgradeMinorVersion": true,
          "typeHandlerVersion": "1.0",
          "settings": {
            "protocol": "<protocol>",
            "port": <port>,
            "requestPath": "</requestPath>",
            "intervalInSeconds": 5,
            "numberOfProbes": 1
          }
        }
      }
    ]
  }
}
Název Hodnota / příklad Datový typ
protokol http nebo https string
port Volitelné, pokud je http protokol nebo https int
requestPath Povinné při použití http nebo https string
intervalInSeconds Volitelné, výchozí hodnota je 5 sekund. Toto nastavení je interval mezi jednotlivými sondou stavu. Pokud například intervalInSeconds == 5, odešle se sonda do místního koncového bodu aplikace jednou za 5 sekund. int
numberOfProbes Volitelné, výchozí hodnota je 1. Toto nastavení je počet po sobě jdoucích testů potřebných ke změně stavu. Pokud například numberOfProbles == 3, potřebujete 3 po sobě jdoucí signály "V pořádku", abyste změnili stav z "Není v pořádku"/"Neznámý" do stavu V pořádku. Stejný požadavek platí pro změnu stavu na Stav není v pořádku nebo Neznámý stav. int
gracePeriod Volitelné, výchozí = intervalInSeconds * numberOfProbes; maximální období odkladu je 7200 sekund int

Instalace rozšíření stavu aplikace

Pomocí příkazu az vmss extension set přidejte rozšíření stavu aplikace do definice modelu škálovací sady.

Vytvořte soubor JSON s požadovaným extensions.json nastavením.

{
  "protocol": "<protocol>",
  "port": <port>,
  "requestPath": "</requestPath>",
  "gracePeriod": <healthExtensionGracePeriod>
}

Použijte rozšíření stavu aplikace.

az vmss extension set \
  --name ApplicationHealthLinux \
  --publisher Microsoft.ManagedServices \
  --version 2.0 \
  --resource-group myResourceGroup \
  --vmss-name myScaleSet \
  --settings ./extension.json

Upgradujte virtuální počítače ve škálovací sadě. Tento krok se vyžaduje jenom v případě, že vaše škálovací sada používá zásady ručního upgradu. Další informace o zásadách upgradu najdete v tématu Zásady upgradu pro škálovací sady virtuálních počítačů.

az vmss update-instances \
  --resource-group myResourceGroup \
  --name myScaleSet \
  --instance-ids "*"

Konfigurace odpovědi rozšíření stavu aplikace

Konfiguraci vlastní odpovědi na metriky je možné provést mnoha různými způsoby. Lze ho integrovat do stávajících aplikací, dynamicky aktualizovat a používat společně s různými funkcemi k poskytování výstupu na základě konkrétní situace.

Mezi tyto ukázkové aplikace patří pořadí fází a přeskočení parametrů upgradu do odpovědi na vlastní metriky.

#!/bin/bash

# Open firewall port (replace with your firewall rules as needed)
sudo iptables -A INPUT -p tcp --dport 8000 -j ACCEPT

# Create Python HTTP server for responding with JSON
cat <<EOF > server.py
import json
from http.server import BaseHTTPRequestHandler, HTTPServer

# Function to generate the JSON response
def generate_response_json():
    return json.dumps({
        "ApplicationHealthState": "Healthy",
        "CustomMetrics": json.dumps({
            "RollingUpgrade": {
                "PhaseOrderingNumber": 1,
                "SkipUpgrade": "false"
            }
        })
    })

class RequestHandler(BaseHTTPRequestHandler):
    def do_GET(self):
        # Respond with HTTP 200 and JSON content
        self.send_response(200)
        self.send_header('Content-type', 'application/json')
        self.end_headers()
        response = generate_response_json()
        self.wfile.write(response.encode('utf-8'))

# Set up the HTTP server
def run(server_class=HTTPServer, handler_class=RequestHandler):
    server_address = ('localhost', 8000)
    httpd = server_class(server_address, handler_class)
    print('Starting server on port 8000...')
    httpd.serve_forever()

if __name__ == "__main__":
    run()
EOF

# Run the server in the background
python3 server.py &

# Store the process ID of the server
SERVER_PID=$!

# Wait a few seconds to ensure the server starts
sleep 2

# Confirm execution
echo "Server has been started on port 8000 with PID $SERVER_PID"

Další příklady konfigurace odpovědí najdete v ukázkách stavu aplikací.

Další kroky

Naučte se provádět ruční upgrady ve škálovacích sadách virtuálních počítačů.