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
Leállítási értesítések engedélyezése
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.
Azure Portal
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.
REST API
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.
Feljegyzé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
Azure PowerShell
Ú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.
Azure CLI 2.0
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
Leállítási értesítések lekérése
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.
Végpontfelderítés
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'
Lekérdezési válasz
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.
Reagálás eseményekre
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.
Tippek és ajánlott eljárások
- 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.
Hibaelhárítás
Nem sikerült engedélyezni az scheduledEventsProfile-t
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.
Nem sikerült lekérni a leállítási eseményeket
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'
Leállítási esemény lekérése helytelen NotBefore időponttal
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.
Következő lépések
Megtudhatja, hogyan helyezheti üzembe az alkalmazást virtuálisgép-méretezési csoportokban.