Azure-beli virtuálisgép-méretezési csoportpéldányok értesítésének leállítása
A méretezési csoportok példányai dönthetnek úgy, hogy megkapják a példányleállási értesítéseket, és előre meghatározott késleltetési időtúllépést állíthatnak be a leállítási műveletre. A felmondási értesítést az Azure Metadata Service – Ütemezett események szolgáltatáson keresztül küldi el a rendszer, amely értesítéseket nyújt az olyan jelentős műveletekről, mint az újraindítások és az újra üzembe helyezés. A megoldás hozzáad egy másik eseményt – Leállítás – az ütemezett események listájához, és a megszakítási esemény kapcsolódó késleltetése a felhasználók által a méretezési csoport modellkonfigurációiban megadott késleltetési korláttól függ.
Miután regisztrált az ütemezett eseményekre a metaadat-szolgáltatás megfelelő végpontjának meghívásával, a méretezési csoportok példányainak nem kell megvárniuk, amíg a megadott időtúllépés lejár a példány törlése előtt. A leállítási értesítés fogadása után a példány bármikor törölheti a leállítási időtúllépés lejárta előtt. A leállított értesítések nem engedélyezhetők a kihasználatlan példányokon. A kihasználatlan példányokkal kapcsolatos további információkért lásd: Azure Spot Virtual Machines for Virtual Machine Scale Sets
A méretezési csoportpéldányokon többféleképpen is engedélyezheti a felmondási értesítéseket, az alábbi példákban leírtak szerint.
Az alábbi lépések lehetővé teszik a leállítja az értesítést egy új méretezési csoport létrehozásakor.
- Nyissa meg a virtuálisgép-méretezési csoportokat.
- Új méretezési csoport létrehozásához válassza a + Hozzáadás lehetőséget.
- Lépjen a Felügyelet lapra.
- Keresse meg a Példány leállítása szakaszt.
- Például a felmondási értesítésnél válassza a Be lehetőséget.
- A befejezési késleltetés (perc) beállításához állítsa be a kívánt alapértelmezett időtúllépést.
- Ha végzett az új méretezési csoport létrehozásával, válassza a Véleményezés + létrehozás gombot.
A leállítási értesítéseket egy meglévő méretezési csoportban is engedélyezheti.
- Lépjen a kívánt méretezési csoportra
- Ugrás a Konfiguráció lapra
- A példányok megszüntetéséről szóló értesítés engedélyezéséhez válassza a Be lehetőséget.
- A befejezési késleltetés (perc) beállításához állítsa be a kívánt alapértelmezett időtúllépést.
- Válassza a Mentés gombot.
Az alábbi példa engedélyezi a méretezési csoport modelljén a megszakítási értesítéseket.
PUT on `/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Compute/virtualMachineScaleSets/{vmScaleSetName}?api-version=2019-03-01`
{
"properties": {
"virtualMachineProfile": {
"scheduledEventsProfile": {
"terminateNotificationProfile": {
"notBeforeTimeout":"PT5M",
"enable":true
}
}
}
}
}
A fenti blokk 5 perces időtúllépési késleltetést határoz meg (a PT5M szerint) a méretezési csoport összes példányán végzett megszakítási művelethez. A notBeforeTimeout mező 5 és 15 perc közötti értékeket vehet igénybe ISO 8601 formátumban. A megszakítási művelet alapértelmezett időtúllépését a notBeforeTimeout tulajdonság módosításával módosíthatja a fent ismertetett TerminateNotificationProfile szakaszban.
Miután engedélyezte az scheduledEventsProfile-t a méretezési csoport modelljén, és beállította a notBeforeTimeout értéket, frissítse az egyes példányokat a legújabb modellre a változásoknak megfelelően.
Megjegyzés
A méretezési csoport példányainak leállított értesítései csak az API 2019-03-01-es és újabb verziójával engedélyezhetők
Új méretezési csoport létrehozásakor a New-AzVmssConfig parancsmaggal engedélyezheti a megszüntetési értesítéseket a méretezési csoportban.
Ez a példaszkript végigvezeti egy méretezési csoport és a hozzá tartozó erőforrások létrehozásán a konfigurációs fájl használatával: Hozzon létre egy teljes virtuálisgép-méretezési csoportot. A "konfigurálás leállítása" értesítéseket úgy adhat meg, hogy hozzáadja a TerminateScheduledEvents és a TerminateScheduledEventNotBeforeTimeoutInMinutes paramétereket a méretezési csoport létrehozásához szükséges konfigurációs objektumhoz. Az alábbi példa 10 perces késleltetési időtúllépéssel teszi lehetővé a funkciót.
Fontos
2023 novemberétől a PowerShell és az Azure CLI használatával létrehozott virtuálisgép-méretezési csoportok alapértelmezés szerint rugalmas vezénylési módba kerülnek, ha nincs megadva vezénylési mód. A módosítással és a végrehajtandó műveletekkel kapcsolatos további információkért tekintse meg a VMSS PowerShell/CLI-ügyfelek kompatibilitástörő változását – Microsoft Community Hub
New-AzVmssConfig `
-Location "VMSSLocation" `
-SkuCapacity 2 `
-OrchestrationMode "Flexible" `
-SkuName "Standard_DS2" `
-TerminateScheduledEvents $true `
-TerminateScheduledEventNotBeforeTimeoutInMinutes 10
Az Update-AzVmss parancsmaggal engedélyezheti a megszüntetési értesítéseket egy meglévő méretezési csoportban.
Update-AzVmss `
-ResourceGroupName "myResourceGroup" `
-VMScaleSetName "myScaleSet" `
-TerminateScheduledEvents $true `
-TerminateScheduledEventNotBeforeTimeoutInMinutes 15
A fenti példa lehetővé teszi a leállítja az értesítéseket egy meglévő méretezési csoportban, és 15 perces időtúllépést állít be a leállítási eseményhez.
Miután engedélyezte az ütemezett eseményeket a méretezési csoport modelljében, és beállította az időtúllépést, frissítse az egyes példányokat a legújabb modellre, hogy tükrözze a változásokat.
A következő példa a felmondási értesítés engedélyezésére egy új méretezési csoport létrehozásakor.
az group create --name <myResourceGroup> --location <VMSSLocation>
az vmss create \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--image Ubuntu2204 \
--admin-username <azureuser> \
--generate-ssh-keys \
--terminate-notification-time 10
A fenti példa először létrehoz egy erőforráscsoportot, majd létrehoz egy új méretezési csoportot, amely 10 perces alapértelmezett időtúllépés esetén engedélyezve van a leállítási értesítésekkel.
A következő példa a megszüntetési értesítés engedélyezésére egy meglévő méretezési csoportban.
az vmss update \
--resource-group <myResourceGroup> \
--name <myVMScaleSet> \
--enable-terminate-notification true \
--terminate-notification-time 10
A leállított értesítések ütemezett eseményeken keresztül érkeznek, amely egy Azure Metadata-szolgáltatás. Az Azure Metadata szolgáltatás a virtuális gépről elérhető REST-végpont használatával teszi elérhetővé a virtuális gépek futtatásával kapcsolatos információkat. Az információk nem módosítható IP-címen keresztül érhetők el, így azok nem lesznek közzétéve a virtuális gépen kívül.
Az ütemezett események akkor lesznek engedélyezve a méretezési csoportban, amikor először kér eseményeket. Az első hívásban akár két perc késésre is számíthat. Rendszeresen lekérdezheti a végpontot a közelgő karbantartási események és a folyamatban lévő karbantartási tevékenységek állapotának észleléséhez.
A méretezési csoport ütemezett eseményei le vannak tiltva, ha a méretezési csoport példányai 24 órán keresztül nem kérnek kérelmet.
A VNET-kompatibilis virtuális gépek esetében a Metaadat-szolgáltatás statikus, nem módosítható IP-címről érhető el, 169.254.169.254.
Az ütemezett események legújabb verziójának teljes végpontja a következő:
'http://169.254.169.254/metadata/scheduledevents?api-version=2019-01-01'
A válasz ütemezett események tömbje. Az üres tömb azt jelenti, hogy jelenleg nincs ütemezve esemény.
Abban az esetben, ha vannak ütemezett események, a válasz eseménytömböt tartalmaz. A "Megszakítás" esemény esetén a válasz a következőképpen fog kinézni:
{
"DocumentIncarnation": {IncarnationID},
"Events": [
{
"EventId": {eventID},
"EventType": "Terminate",
"ResourceType": "VirtualMachine",
"Resources": [{resourceName}],
"EventStatus": "Scheduled",
"NotBefore": {timeInUTC},
}
]
}
A DocumentIncarnation egy ETag, és könnyen ellenőrizhető, hogy az események hasznos adatai megváltoztak-e az utolsó lekérdezés óta.
A fenti mezőkről további információt a Windows és Linux ütemezett események dokumentációjában talál.
Miután megismerkedett egy közelgő eseménysel, és befejezte a türelmes leállítás logikáját, jóváhagyhatja a kiemelkedő eseményt egy POST-hívással a metaadat-szolgáltatáshoz az EventId azonosítóval. A POST-hívás jelzi az Azure-nak, hogy folytathatja a virtuális gép törlését.
Az alábbiakban a POST kérelem törzsében várt json látható. A kérelemnek tartalmaznia kell a StartRequests listáját. Minden StartRequest tartalmazza a felgyorsítani kívánt esemény eseményazonosítóját:
{
"StartRequests" : [
{
"EventId": {EventId}
}
]
}
Győződjön meg arról, hogy a méretezési csoportban lévő összes virtuális gép csak az adott virtuális gépre vonatkozó EventID-t jóváhagyja. A virtuális gépek a példány metaadatain keresztül saját virtuálisgép-nevet kaphatnak. Ez a név "{scale-set-name}_{instance-id}" formában jelenik meg, és a fent ismertetett lekérdezési válasz "Erőforrások" szakaszában jelenik meg.
A Python eseményeinek lekérdezésére és megválaszolására szolgáló példaszkriptekre is hivatkozhat.
- Csak törlési műveletek értesítéseinek leállása – Minden törlési művelet (manuális törlés vagy automatikus skálázás által kezdeményezett méretezés) leállási eseményeket hoz létre, ha a méretezési csoport engedélyezte azScheduledEventsProfile-t . Az egyéb műveletek, például az újraindítás, az újratelepítés, az ismételt üzembe helyezés és a leállítás/felszabadítás nem hoznak létre leállási eseményeket.
- Nincs kötelező várakozás az időtúllépésre – A megszakítási műveletet bármikor elindíthatja az esemény beérkezése után és az esemény NotBefore-ideje lejárta előtt.
- Kötelező törlés időtúllépéskor – Az esemény létrehozása után nincs lehetőség az időtúllépési érték meghosszabbítására. Az időtúllépés lejárta után a függőben lévő leálló esemény feldolgozása és a virtuális gép törlése megtörténik.
- Módosítható időtúllépési érték – Az időtúllépés értékét bármikor módosíthatja a példány törlése előtt, ha módosítja a méretezési csoportmodell notBeforeTimeout tulajdonságát, és frissíti a virtuálisgép-példányokat a legújabb modellre.
- Az összes függőben lévő törlés jóváhagyása – Ha a VM_1 nincs jóváhagyva függőben lévő törlés, és ön jóváhagyott egy másik megszakítási eseményt VM_2, akkor a VM_2 nem törlődik, amíg a VM_1 leállított eseménye el nem telik, vagy az időtúllépése el nem telt. Miután jóváhagyta a VM_1 leálló eseményét, a rendszer mind a VM_1, mind a VM_2 törli.
- Az összes egyidejű törlés jóváhagyása – A fenti példa kiterjesztése, ha VM_1 és VM_2 ugyanazzal a NotBefore-idővel rendelkezik, akkor mindkét megszakítási eseményt jóvá kell hagyni, vagy egyik virtuális gépet sem kell törölni az időtúllépés lejárta előtt.
Ha "BadRequest" hibaüzenet jelenik meg, amely szerint "Nem található az "scheduledEventsProfile" tag a "VirtualMachineProfile" típusú objektumon, ellenőrizze a méretezési csoport műveleteihez használt API-verziót. A Compute API 2019-03-01-es vagy újabb verziójára van szükség.
Ha nem kap leállítási eseményeket az ütemezett eseményeken keresztül, ellenőrizze az események lekéréséhez használt API-verziót. A Metadata Service API 2019-01-01-es vagy újabb verziója szükséges a megszakítási eseményekhez.
'http://169.254.169.254/metadata/scheduledevents?api-version=2019-01-01'
Miután engedélyezte az scheduledEventsProfile-t a méretezési csoport modelljén, és beállította a notBeforeTimeout értéket, frissítse az egyes példányokat a legújabb modellre a változásoknak megfelelően.
Megtudhatja, hogyan helyezheti üzembe az alkalmazást virtuálisgép-méretezési csoportokban.