Oznámení o ukončení pro instance škálovací sady virtuálních počítačů Azure
platí pro: : heavy_check_mark: virtuální počítače se systémem Linux: heavy_check_mark: Windows virtuálních počítačů: heavy_check_mark: jednotné škálování sady: heavy_check_mark: flexibilní sady škálování
Instance sady škálování můžou vyjádřit výslovný souhlas s přijetím oznámení o ukončení instance a nastavením předem definovaného časového limitu prodlevy na operaci ukončení. Oznámení ukončení se odesílá prostřednictvím služby Azure Metadata Service – Scheduled Events, která poskytuje oznámení a zpoždění ovlivněných operací, jako je třeba restartování a opětovné nasazení. Řešení přidá další událost – ukončit – do seznamu Scheduled Events a přidružená prodleva události ukončení bude záviset na limitu zpoždění zadaného uživateli ve svých konfiguracích modelu sady škálování.
Po zaregistrování do funkce nemusí instance sady škálování čekat na vypršení platnosti zadaného časového limitu, než se instance odstraní. Po přijetí oznámení o ukončení se může instance kdykoli odstranit, a to až do vypršení časového limitu ukončení.
Povolit ukončení oznámení
Existuje několik způsobů, jak povolit koncová oznámení na instancích sady škálování, jak je popsáno v následujících příkladech.
portál Azure
Následující kroky umožňují ukončit oznámení při vytváření nové sady škálování.
- Přejít na Virtual Machine Scale Sets.
- Vyberte + Přidat a vytvořte novou sadu škálování.
- Přejít na kartu Správa .
- Vyhledejte část ukončení instance .
- V případě oznámení o ukončení instance vyberte zapnuto.
- Pro zpoždění ukončení (minuty) nastavte požadovaný výchozí časový limit.
- Až budete hotovi s vytvářením nové sady škálování, vyberte tlačítko zkontrolovat + vytvořit .
Poznámka
Pro existující sady škálování v Azure Portal nemůžete nastavit oznámení o ukončení.
REST API
Následující příklad umožňuje ukončení oznámení na modelu sady škálování.
PUT on `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2019-03-01`
{
"properties": {
"virtualMachineProfile": {
"scheduledEventsProfile": {
"terminateNotificationProfile": {
"notBeforeTimeout":"PT5M",
"enable":true
}
}
}
}
}
Výše uvedený blok Určuje prodlevu s časovým limitem 5 minut (jak je uvedeno v PT5M) pro všechny operace ukončení u všech instancí ve vaší sadě škálování. Pole notBeforeTimeout může ve formátu ISO 8601 trvat od 5 do 15 minut libovolnou hodnotu. Výchozí časový limit pro operaci ukončení můžete změnit úpravou vlastnosti notBeforeTimeout v části terminateNotificationProfile popsané výše.
Po povolení scheduledEventsProfile v modelu sady škálování a nastavení notBeforeTimeout aktualizujte jednotlivé instance na nejnovější model , aby se změny projevily.
Poznámka
Oznámení o ukončení u instancí sady škálování je možné povolit jenom pomocí rozhraní API verze 2019-03-01 a vyšší.
Azure PowerShell
Při vytváření nové sady škálování můžete v sadě škálování povolit oznámení o ukončení pomocí rutiny New-AzVmssConfig .
Tento vzorový skript vás provede vytvořením sady škálování a přidružených prostředků pomocí konfiguračního souboru: vytvořte úplnou sadu škálování virtuálního počítače. Můžete poskytnout oznámení o ukončení konfigurace přidáním parametrů TerminateScheduledEvents a TerminateScheduledEventNotBeforeTimeoutInMinutes do objektu konfigurace pro vytvoření sady škálování. Následující příklad povoluje funkci s časovým limitem zpoždění 10 minut.
New-AzVmssConfig `
-Location "VMSSLocation" `
-SkuCapacity 2 `
-SkuName "Standard_DS2" `
-UpgradePolicyMode "Automatic" `
-TerminateScheduledEvents $true `
-TerminateScheduledEventNotBeforeTimeoutInMinutes 10
Pomocí rutiny Update-AzVmss povolte koncová oznámení v existující sadě škálování.
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-TerminateScheduledEvents $true `
-TerminateScheduledEventNotBeforeTimeoutInMinutes 15
Výše uvedený příklad umožňuje ukončit oznámení v existující sadě škálování a nastavit časový limit 15 minut pro událost ukončení.
Po povolení plánovaných událostí v modelu sady škálování a nastavení časového limitu aktualizujte jednotlivé instance na nejnovější model , aby se změny projevily.
Azure CLI 2.0
Následující příklad slouží k povolení oznámení ukončení při vytváření nové sady škálování.
az group create --name <myResourceGroup> --location <VMSSLocation>
az vmss create \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--image UbuntuLTS \
--admin-username <azureuser> \
--generate-ssh-keys \
--terminate-notification-time 10
Výše uvedený příklad vytvoří skupinu prostředků a pak vytvoří novou sadu škálování s povolenými oznámeními ukončení pro výchozí časový limit 10 minut.
Následující příklad slouží k povolení oznámení ukončení v existující sadě škálování.
az vmss update \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--enable-terminate-notification true \
--terminate-notification-time 10
Získat oznámení o ukončení
Oznámení o ukončení se doručují prostřednictvím Scheduled Events, což je Azure metadata Service. Služba Azure metadata Service zpřístupňuje informace o spouštění Virtual Machines pomocí koncového bodu REST přístupného v rámci virtuálního počítače. Tyto informace jsou k dispozici prostřednictvím IP adresy bez směrování, takže nejsou vystaveny mimo virtuální počítač.
Scheduled Events je povolená pro sadu škálování při prvním vytvoření žádosti o události. Můžete očekávat opožděnou odpověď v prvním volání až do dvou minut. Pravidelné dotazování koncového bodu pro detekci nadcházejících událostí údržby a stavu probíhajících aktivit údržby
Pokud instance sady škálování nevytváří požadavek na 24 hodin, je Scheduled Events pro sadu škálování zakázané.
Zjišťování koncových bodů
Pro virtuální počítače s povolenými VIRTUÁLNÍmi sítěmi je Metadata Service k dispozici ze statické IP adresy, která není směrovatelný, 169.254.169.254.
Úplný koncový bod pro nejnovější verzi Scheduled Events je:
'http://169.254.169.254/metadata/scheduledevents?api-version=2019-01-01'
Odpověď na dotaz
Odpověď obsahuje pole naplánovaných událostí. Prázdné pole znamená, že aktuálně nejsou naplánovány žádné události.
V případě naplánovaných událostí obsahuje odpověď pole událostí. V případě události "ukončit" bude odpověď vypadat takto:
{
"DocumentIncarnation": {IncarnationID},
"Events": [
{
"EventId": {eventID},
"EventType": "Terminate",
"ResourceType": "VirtualMachine",
"Resources": [{resourceName}],
"EventStatus": "Scheduled",
"NotBefore": {timeInUTC},
}
]
}
DocumentIncarnation je ETag a poskytuje snadný způsob, jak zkontrolovat, jestli se od posledního dotazu změnila datová část událostí.
další informace o jednotlivých polích výše najdete v dokumentaci k Scheduled Events pro Windows a Linux.
Reakce na události
Jakmile se seznámíte s nadcházející událostí a dokončíte logiku pro řádné vypnutí, můžete tuto událost schválit voláním POST služby metadat pomocí ID události. Volání POST indikuje službě Azure, že může pokračovat v odstranění virtuálního počítače.
Níže je v textu požadavku POST očekáván kód JSON. Požadavek by měl obsahovat seznam StartRequests. Jednotlivé StartRequest obsahují ID události pro událost, kterou chcete urychlit:
{
"StartRequests" : [
{
"EventId": {EventId}
}
]
}
Zajistěte, aby každý virtuální počítač v sadě škálování schválil jenom ID události relevantní pouze pro tento virtuální počítač. VIRTUÁLNÍ počítač může získat vlastní název virtuálního počítače prostřednictvím metadat instance. Tento název má podobu "{Scale-set-Name} _ {instance-ID}" a zobrazí se v části "prostředky" odpovědi na dotaz popsané výše.
Můžete se také podívat na ukázky skriptů pro dotazování a reakci na události Pythonu.
Tipy a osvědčené postupy
- Ukončit oznámení pouze na operacích DELETE – všechny operace odstranění (ruční odstranění nebo škálování iniciované automaticky v měřítku) vygenerují události ukončení, pokud je vaše sada škálování zapnutá scheduledEventsProfile . Jiné operace, jako je restartování, obnovení bitové kopie, opětovné nasazení a zastavení nebo zrušení přidělení, negenerují události ukončení.
- Žádné povinné čekání na časový limit – operaci ukončení můžete spustit kdykoli po přijetí události a vypršení doby NotBefore události.
- Povinné odstranění v časovém limitu – neexistují žádné možnosti rozšíření hodnoty časového limitu po vygenerování události. Po vypršení časového limitu se zpracuje událost ukončení, která čeká na dokončení, a virtuální počítač se odstraní.
- Upravitelná hodnota časového limitu – hodnotu časového limitu můžete změnit kdykoli před odstraněním instance, úpravou vlastnosti notBeforeTimeout v modelu sady škálování a aktualizací instancí virtuálních počítačů na nejnovější model.
- Schválit všechna nevyřízená odstranění – Pokud dojde k neschválenému odstranění na VM_1, která není schválená a jste schválili další událost ukončení na VM_2, VM_2 se neodstraní, dokud není schválená událost ukončení pro VM_1 nebo uplynul časový limit. Po schválení události ukončení pro VM_1 se odstraní oba VM_1 a VM_2.
- Schválení všech současných odstranění – rozšířením výše uvedeného příkladu, pokud VM_1 a VM_2 mají stejný čas NotBefore , musí být obě události ukončení schválené nebo se žádný virtuální počítač neodstranil před vypršením časového limitu.
Řešení potíží
Nepovedlo se povolit scheduledEventsProfile.
Pokud se zobrazí chyba "důvodu chybného požadavku" s chybovou zprávou "nebylo možné najít člena" scheduledEventsProfile "u objektu typu" VirtualMachineProfile ", ověřte verzi rozhraní API použitou pro operace sady škálování. Je vyžadováno rozhraní COMPUTE API verze 2019-03-01 nebo vyšší.
Nepovedlo se získat události ukončení.
Pokud nezískáváte žádné události ukončení prostřednictvím Scheduled Events, zkontrolujte verzi rozhraní API, která se používá pro získání událostí. Pro události ukončení se vyžaduje Metadata Service rozhraní API verze 2019-01-01 nebo vyšší.
'http://169.254.169.254/metadata/scheduledevents?api-version=2019-01-01'
Získání události ukončení s nesprávným NotBefore časem
Po povolení scheduledEventsProfile v modelu sady škálování a nastavení notBeforeTimeout aktualizujte jednotlivé instance na nejnovější model , aby se změny projevily.
Další kroky
Naučte se, jak nasadit vaši aplikaci do služby Virtual Machine Scale Sets.