Używanie rozszerzenia kondycji aplikacji z zestawami skalowania maszyn wirtualnych

Monitorowanie kondycji aplikacji jest ważnym sygnałem do zarządzania i uaktualniania wdrożenia. Zestawy skalowania maszyn wirtualnych platformy Azure zapewniają obsługę uaktualnień stopniowych , w tym automatycznych uaktualnień obrazów systemu operacyjnego, które polegają na monitorowaniu kondycji poszczególnych wystąpień w celu uaktualnienia wdrożenia. Można również użyć rozszerzenia kondycji, aby monitorować kondycję aplikacji każdego wystąpienia w zestawie skalowania i wykonywać naprawy wystąpień przy użyciu automatycznych napraw wystąpień.

W tym artykule opisano sposób używania rozszerzenia Application Health do monitorowania kondycji aplikacji wdrożonych w zestawach skalowania maszyn wirtualnych.

Wymagania wstępne

W tym artykule założono, że znasz następujące elementy:

Kiedy należy używać rozszerzenia Application Health

Rozszerzenie Application Health jest wdrażane wewnątrz wystąpienia zestawu skalowania maszyn wirtualnych i raportuje kondycję maszyny wirtualnej z poziomu wystąpienia zestawu skalowania. Można skonfigurować rozszerzenie do sondowania w punkcie końcowym aplikacji i zaktualizować stan aplikacji w tym wystąpieniu. Ten stan wystąpienia jest sprawdzany przez platformę Azure, aby określić, czy wystąpienie kwalifikuje się do operacji uaktualniania.

Ponieważ rozszerzenie zgłasza kondycję z poziomu maszyny wirtualnej, rozszerzenie może być używane w sytuacjach, w których nie można używać sond zewnętrznych, takich jak sondy kondycji aplikacji (korzystające z niestandardowych sond Azure Load Balancer).

Schemat rozszerzenia

Poniższy kod JSON przedstawia schemat rozszerzenia Application Health. Rozszerzenie wymaga co najmniej żądania "tcp", "http" lub "https" z odpowiednio skojarzonym portem lub ścieżką żądania.

{
  "type": "extensions",
  "name": "HealthExtension",
  "apiVersion": "2018-10-01",
  "location": "<location>",  
  "properties": {
    "publisher": "Microsoft.ManagedServices",
    "type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
    "autoUpgradeMinorVersion": true,
    "typeHandlerVersion": "1.0",
    "settings": {
      "protocol": "<protocol>",
      "port": "<port>",
      "requestPath": "</requestPath>",
      "intervalInSeconds": "5.0",
      "numberOfProbes": "1.0"
    }
  }
}  

Wartości właściwości

Nazwa Wartość / przykład Typ danych
apiVersion 2018-10-01 data
publisher Microsoft.ManagedServices ciąg
typ ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) ciąg
typeHandlerVersion 1.0 int

Ustawienia

Nazwa Wartość / przykład Typ danych
Protokół httplub lub httpstcp ciąg
port Opcjonalne, gdy protokół jest http lub https, obowiązkowy, gdy protokół jest tcp int
requestPath Obowiązkowe, gdy protokół jest http lub https, niedozwolone, gdy protokół jest tcp ciąg

Wdrażanie rozszerzenia kondycji aplikacji

Istnieje wiele sposobów wdrażania rozszerzenia kondycji aplikacji w zestawach skalowania, jak opisano w poniższych przykładach.

Interfejs API REST

Poniższy przykład dodaje rozszerzenie Application Health (o nazwie myHealthExtension) do rozszerzenia ExtensionProfile w modelu zestawu skalowania opartego na systemie Windows.

PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
  "name": "myHealthExtension",
  "properties": {
    "publisher": "Microsoft.ManagedServices",
    "type": "ApplicationHealthWindows",
    "autoUpgradeMinorVersion": true,
    "typeHandlerVersion": "1.0",
    "settings": {
      "protocol": "<protocol>",
      "port": "<port>",
      "requestPath": "</requestPath>"
    }
  }
}

Użyj PATCH polecenia , aby edytować już wdrożone rozszerzenie.

Azure PowerShell

Użyj polecenia cmdlet Add-AzVmssExtension, aby dodać rozszerzenie Application Health do definicji modelu zestawu skalowania.

W poniższym przykładzie dodano rozszerzenie Application Health do extensionProfile modelu w zestawie skalowania zestawu skalowania opartego na systemie Windows. W przykładzie użyto nowego modułu Az programu PowerShell.

# Define the scale set variables
$vmScaleSetName = "myVMScaleSet"
$vmScaleSetResourceGroup = "myVMScaleSetResourceGroup"

# Define the Application Health extension properties
$publicConfig = @{"protocol" = "http"; "port" = 80; "requestPath" = "/healthEndpoint"};
$extensionName = "myHealthExtension"
$extensionType = "ApplicationHealthWindows"
$publisher = "Microsoft.ManagedServices"

# Get the scale set object
$vmScaleSet = Get-AzVmss `
  -ResourceGroupName $vmScaleSetResourceGroup `
  -VMScaleSetName $vmScaleSetName

# Add the Application Health extension to the scale set model
Add-AzVmssExtension -VirtualMachineScaleSet $vmScaleSet `
  -Name $extensionName `
  -Publisher $publisher `
  -Setting $publicConfig `
  -Type $extensionType `
  -TypeHandlerVersion "1.0" `
  -AutoUpgradeMinorVersion $True

# Update the scale set
Update-AzVmss -ResourceGroupName $vmScaleSetResourceGroup `
  -Name $vmScaleSetName `
  -VirtualMachineScaleSet $vmScaleSet

Interfejs wiersza polecenia platformy Azure 2.0

Użyj polecenia az vmss extension set , aby dodać rozszerzenie Application Health do definicji modelu zestawu skalowania.

W poniższym przykładzie dodano rozszerzenie Application Health do modelu zestawu skalowania zestawu skalowania opartego na systemie Linux.

az vmss extension set \
  --name ApplicationHealthLinux \
  --publisher Microsoft.ManagedServices \
  --version 1.0 \
  --resource-group <myVMScaleSetResourceGroup> \
  --vmss-name <myVMScaleSet> \
  --settings ./extension.json

Zawartość pliku extension.json.

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

Rozwiązywanie problemów

Dane wyjściowe wykonywania rozszerzenia są rejestrowane w plikach znajdujących się w następujących katalogach:

C:\WindowsAzure\Logs\Plugins\Microsoft.ManagedServices.ApplicationHealthWindows\<version>\
/var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-<extension_version>/status
/var/log/azure/applicationhealth-extension

Dzienniki okresowo przechwytują również stan kondycji aplikacji.

Następne kroki

Dowiedz się, jak wdrożyć aplikację w zestawach skalowania maszyn wirtualnych.