Megosztás a következőn keresztül:


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.

  1. Nyissa meg a virtuálisgép-méretezési csoportokat.
  2. Új méretezési csoport létrehozásához válassza a + Hozzáadás lehetőséget.
  3. Lépjen a Felügyelet lapra.
  4. Keresse meg a Példány leállítása szakaszt.
  5. Például a felmondási értesítésnél válassza a Be lehetőséget.
  6. 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.
  7. 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.

  1. Lépjen a kívánt méretezési csoportra
  2. Ugrás a Konfiguráció lapra
  3. 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.
  4. 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.
  5. 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.