Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Metryki niestandardowe dla uaktualnień stopniowego umożliwiają korzystanie z rozszerzenia kondycji aplikacji w celu emitowania niestandardowych metryk do zestawu skalowania maszyn wirtualnych. Te metryki niestandardowe mogą służyć do określania kolejności aktualizacji maszyn wirtualnych po wyzwoleniu uaktualnienia stopniowego. Metryki niestandardowe mogą również informować zestaw skalowania, gdy uaktualnienie powinno zostać pominięte w konkretnym wystąpieniu. Dzięki temu możesz mieć większą kontrolę nad kolejnością i samym procesem aktualizacji.
Metryki niestandardowe mogą być używane w połączeniu z innymi funkcjami uaktualniania stopniowego, takimi jak automatyczne uaktualnienia systemu operacyjnego, automatyczne uaktualnienia rozszerzeń i uaktualnienia stopniowe MaxSurge.
Wymagania
- W przypadku używania metryk niestandardowych do uaktualniania stopniowego w zestawach skalowania maszyn wirtualnych zestaw skalowania musi również używać rozszerzenia kondycji aplikacji z zaawansowanymi stanami kondycji, aby zgłaszać kolejność faz lub pomijać informacje o uaktualnianiu. Uaktualnienia metryk niestandardowych nie są obsługiwane w przypadku używania rozszerzenia kondycji aplikacji ze stanami binarnymi.
- Aby otrzymywać informacje o metrykach niestandardowych, należy skonfigurować rozszerzenie kondycji aplikacji do używania protokołu HTTP lub HTTPS. Protokół TCP nie jest obsługiwany w przypadku integracji z niestandardowymi metrykami w przypadku uaktualnień stopniowego.
Pojęcia
Porządkowanie faz
Faza to konstrukcja grupowania maszyn wirtualnych. Każda faza jest określana przez ustawienie metadanych emitowanych z rozszerzenia kondycji aplikacji za pośrednictwem customMetrics właściwości . Zestaw skalowania maszyn wirtualnych pobiera informacje z metryk niestandardowych i używa ich do umieszczania maszyn wirtualnych w przypisanych fazach. W każdej fazie zestaw skalowania maszyn wirtualnych przypisze również partie uaktualniania. Każda partia jest konfigurowana przy użyciu zasad uaktualniania stopniowego, które uwzględniają domeny aktualizacji (UD), domeny błędów (FD) i informacje o strefie każdej maszyny wirtualnej.
Po zainicjowaniu uaktualnienia stopniowego maszyny wirtualne są umieszczane w wyznaczonych fazach. Uaktualnienia fazowe są wykonywane w kolejności sekwencji liczbowej. Maszyny wirtualne we wszystkich partiach w fazie zostaną ukończone przed przejściem do następnej fazy. Jeśli dla maszyny wirtualnej nie zostanie odebrane żadne kolejność faz, zestaw skalowania umieści go w ostatniej fazie
Regionalny zestaw skalowania
Zestaw skalowania strefowego
Aby określić numer fazy, z jaką maszyna wirtualna powinna być skojarzona, użyj phaseOrderingNumber parametru .
{
“applicationHealthState”: “Healthy”,
“customMetrics”: "{ \"rollingUpgrade\": { \"PhaseOrderingNumber\": 0 } }"
}
Pomiń uaktualnianie
Pomijanie funkcji uaktualniania umożliwia pominięcie pojedynczego wystąpienia z uaktualnienia podczas uaktualniania stopniowego. Jest to podobne do korzystania z ochrony wystąpienia, ale może bardziej bezproblemowo zintegrować się z przepływem pracy uaktualniania stopniowego i aplikacjami na poziomie wystąpienia. Podobnie jak w przypadku porządkowania faz, informacje o pomiń uaktualniania są przekazywane do zestawu skalowania maszyn wirtualnych za pośrednictwem rozszerzenia kondycji aplikacji i ustawień metryk niestandardowych. Po wyzwoleniu uaktualnienia stopniowego zestaw skalowania maszyn wirtualnych sprawdza odpowiedź niestandardowych metryk rozszerzeń kondycji aplikacji, a jeśli pomiń uaktualnienie ma wartość true, wystąpienie nie jest uwzględniane w uaktualnieniu stopniowego.
Aby pominąć uaktualnienie na maszynie wirtualnej, użyj SkipUpgrade parametru . Informuje to uaktualnienie stopniowe, aby pominąć tę maszynę wirtualną podczas przeprowadzania uaktualnień.
{
“applicationHealthState”: “Healthy”,
“customMetrics”: "{ \"rollingUpgrade\": { \"SkipUpgrade\": true} }"
}
Pomiń kolejność uaktualniania i fazy można również używać razem:
{
“applicationHealthState”: “Healthy”,
“customMetrics”: "{ \"rollingUpgrade\": { \"SkipUpgrade\": false, \"PhaseOrderingNumber\": 0 } }"
}
Konfigurowanie rozszerzenia kondycji aplikacji
Rozszerzenie kondycji aplikacji wymaga żądania HTTP lub HTTPS ze skojarzonym portem lub ścieżką żądania. Sondy TCP są obsługiwane w przypadku korzystania z rozszerzenia kondycji aplikacji, ale nie można ustawić ApplicationHealthState wartości za pośrednictwem treści odpowiedzi sondy i nie można ich używać z uaktualnieniami kroczącymi z metrykami niestandardowymi.
{
"extensionProfile" : {
"extensions" : [
{
"name": "HealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "2.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": 5,
"numberOfProbes": 1
}
}
}
]
}
}
| Nazwisko | Wartość / przykład | Typ danych |
|---|---|---|
| protokół |
http lub https |
ciąg |
| port | Opcjonalne, gdy protokół jest http lub https |
int (integer) |
| ścieżka żądania | Obowiązkowe w przypadku używania http lub https |
ciąg |
| interwałWSekundach | Opcjonalnie wartość domyślna to 5 sekund. To ustawienie to interwał między poszczególnymi sondami kondycji. Jeśli na przykład intervalInSeconds == 5, sonda jest wysyłana do lokalnego punktu końcowego aplikacji co 5 sekund. | int (integer) |
| liczbaSond | Opcjonalnie wartość domyślna to 1. To ustawienie jest liczbą kolejnych sond wymaganych do zmiany stanu kondycji. Jeśli na przykład numberOfProbles == 3, potrzebujesz 3 kolejnych sygnałów "W dobrej kondycji", aby zmienić stan kondycji z "W złej kondycji"/"Nieznany" na stan "W dobrej kondycji". To samo wymaganie dotyczy zmiany stanu kondycji na stan "W złej kondycji" lub "Nieznany". | int (integer) |
| okres prolongaty | Opcjonalne, domyślne = intervalInSeconds * numberOfProbes; maksymalny okres prolongaty wynosi 7200 sekund |
int (integer) |
Instalowanie rozszerzenia kondycji aplikacji
Użyj polecenia az vmss extension set , aby dodać rozszerzenie kondycji aplikacji do definicji modelu zestawu skalowania.
Utwórz plik JSON o nazwie extensions.json z żądanymi ustawieniami.
{
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"gracePeriod": <healthExtensionGracePeriod>
}
Zastosuj rozszerzenie kondycji aplikacji.
az vmss extension set \
--name ApplicationHealthLinux \
--publisher Microsoft.ManagedServices \
--version 2.0 \
--resource-group myResourceGroup \
--vmss-name myScaleSet \
--settings ./extension.json
Uaktualnij maszyny wirtualne w zestawie skalowania. Ten krok jest wymagany tylko wtedy, gdy zestaw skalowania korzysta z zasad ręcznego uaktualniania. Aby uzyskać więcej informacji na temat zasad uaktualniania, zobacz temat Upgrade policies for Virtual Machine Scale Sets (Zasady uaktualniania dla zestawów skalowania maszyn wirtualnych)
az vmss update-instances \
--resource-group myResourceGroup \
--name myScaleSet \
--instance-ids "*"
Konfigurowanie odpowiedzi rozszerzenia kondycji aplikacji
Konfigurowanie odpowiedzi metryk niestandardowych można wykonać na wiele różnych sposobów. Można ją zintegrować z istniejącymi aplikacjami, dynamicznie aktualizować i używać razem z różnymi funkcjami, aby zapewnić dane wyjściowe na podstawie określonej sytuacji.
Te przykładowe aplikacje obejmują kolejność faz i pomijanie parametrów uaktualniania do odpowiedzi metryk niestandardowych.
#!/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"
Aby uzyskać więcej przykładów konfiguracji odpowiedzi, zobacz przykłady kondycji aplikacji
Weryfikowanie i wykonywanie zapytań dotyczących niestandardowych danych metryk
Po skonfigurowaniu rozszerzenia kondycji aplikacji w celu zwrócenia metryk niestandardowych można sprawdzić, czy metryki niestandardowe są prawidłowo zgłaszane i wykonywać zapytania dotyczące danych z wystąpień zestawu skalowania maszyn wirtualnych.
Uwaga / Notatka
Metoda wykonywania zapytań dotyczących metryk niestandardowych różni się między trybami jednolitych i elastycznych aranżacji. Tryb jednolity używa klasy az vmss get-instance-view, a tryb elastyczny wymaga wykonywania zapytań dotyczących poszczególnych maszyn wirtualnych przy użyciu polecenia az vm get-instance-view.
Tryb jednolitej aranżacji
az vmss get-instance-view \
--resource-group <resource-group-name> \
--name <vmss-name> \
--instance-id <instance-id>
Przykładowe dane wyjściowe (fragment kodu):
{
"extensions": [
{
"name": "ApplicationHealthExtension",
"substatuses": [
{
"code": "ComponentStatus/CustomMetrics/succeeded",
"message": "{\"rollingUpgrade\": {\"PhaseOrderingNumber\": 2, \"SkipUpgrade\": false}}"
}
]
}
]
}
Metryki niestandardowe znajdują się w polu message substatusu ComponentStatus/CustomMetrics/succeeded.
W przypadku trybu elastycznej orkiestracji
W trybie elastycznej aranżacji wystąpienia są poszczególnymi maszynami wirtualnymi.
az vm get-instance-view Użyj polecenia i określ nazwę maszyny wirtualnej.
Pobieranie metryk niestandardowych dla określonej maszyny wirtualnej:
az vm get-instance-view \
--resource-group <resource-group-name> \
--name <vm-name>
Przykładowe dane wyjściowe (fragment kodu):
{
"extensions": [
{
"name": "ApplicationHealthExtension",
"substatuses": [
{
"code": "ComponentStatus/CustomMetrics/succeeded",
"message": "{\"rollingUpgrade\": {\"PhaseOrderingNumber\": 1, \"SkipUpgrade\": false}}"
}
]
}
]
}
Metryki niestandardowe znajdują się w polu message podstatus ComponentStatus/CustomMetrics/succeeded.
Rozwiązywanie problemów z metrykami niestandardowymi
Jeśli metryki niestandardowe nie są prawidłowo zgłaszane, sprawdź następujące kwestie:
- Sprawdź stan rozszerzenia zdrowia aplikacji:
az vmss get-instance-view \
--resource-group <resource-group-name> \
--name <vmss-name> \
--instance-id <instance-id> \
--query "extensions[?name=='ApplicationHealthExtension'].statuses"
- Sprawdź, czy punkt kontrolny kondycji odpowiada:
# Get the public IP of an instance
PUBLIC_IP=$(az vmss list-instance-public-ips \
--resource-group <resource-group-name> \
--name <vmss-name> \
--query "[0].ipAddress" \
--output tsv)
# Test the health endpoint
curl -v http://$PUBLIC_IP:<port>/<request-path>
- Sprawdź, czy format odpowiedzi jest poprawny:
Punkt końcowy kondycji aplikacji musi zwrócić odpowiedź JSON w tym dokładnym formacie:
{
"ApplicationHealthState": "Healthy",
"customMetrics": "{\"rollingUpgrade\": {\"PhaseOrderingNumber\": 0, \"SkipUpgrade\": false}}"
}
Ważne
- Wartość
customMetricsmusi być ciągiem JSON (podwójnie serializowanym), a nie obiektem JSON - Należy ustawić
ApplicationHealthStatena "Zdrowy", aby wystąpienie zostało uwzględnione w aktualizacji stopniowej. - Metryki niestandardowe są odczytywane tylko na początku uaktualnienia stopniowego; zmiany podczas uaktualniania nie będą mieć wpływu na bieżące uaktualnienie
Następne kroki
Dowiedz się, jak przeprowadzić ręczne uaktualnienia w zestawach skalowania maszyn wirtualnych .