Azure Metadata Service: Scheduled Events pro virtuální počítače s Linuxem
Platí pro: ✔️ Virtuální počítače s Linuxem ✔️ Flexibilní škálovací sady ✔️ Jednotné škálovací sady
Scheduled Events je služba Azure Metadata Service, která vaší aplikaci poskytuje čas na přípravu na údržbu virtuálních počítačů. Poskytuje informace o nadcházejících událostech údržby (například restartování), aby se na ně vaše aplikace mohl připravit a omezit přerušení. Je k dispozici pro všechny typy Virtual Machines Azure, včetně PaaS a IaaS v Windows i Linuxu.
Informace o tom, Scheduled Events na Windows, najdete v Scheduled Events pro Windows virtuální počítače.
Poznámka
Scheduled Events je obecně dostupná ve všech oblastech Azure. Informace o nejnovější verzi najdete v tématu Dostupnost verze a oblasti.
Proč používat Scheduled Events?
Řada aplikací může využívat čas přípravy na údržbu virtuálního počítače. Čas lze použít k provádění úloh specifických pro aplikaci, které zlepšují dostupnost, spolehlivost a použitelnost, včetně:
- Kontrolní bod a obnovení.
- Vyprázdnění připojení.
- Převzetí služeb při selhání primární repliky.
- Odebrání z fondu nástroje pro vyrovnávání zatížení.
- Protokolování událostí.
- Bezvýkonné vypnutí.
Díky Scheduled Events může aplikace zjistit, kdy dojde k údržbě, a aktivovat úlohy, které omezují její dopad.
Scheduled Events poskytuje události v následujících případech použití:
- Údržba iniciovaná platformou (například restartování virtuálního počítače, migrace za provozu nebo aktualizace pro zachování paměti pro hostitele)
- Virtuální počítač běží na degradovaném hostitelském hardwaru, u které se předpokládá, že brzy selže
- Údržba iniciovaná uživatelem (například uživatel restartuje nebo znovu nasadí virtuální počítač)
- Vyřazení instancí spotových virtuálních počítače a spotových škálovací sady
Základy
Metadata Service zpřístupňuje informace o spouštění virtuálních počítače pomocí koncového bodu REST, který je přístupný z virtuálního počítače. Informace jsou k dispozici prostřednictvím nesměrovatelné IP adresy, takže nejsou zveřejněné mimo virtuální počítač.
Obor
Plánované události se doručí do:
- Samostatné Virtual Machines.
- Všechny virtuální počítače v cloudové službě.
- Všechny virtuální počítače ve skupině dostupnosti.
- Všechny virtuální počítače v zóně dostupnosti.
- Všechny virtuální počítače ve skupině umístění škálovací sady
Poznámka
Naplánované události jsou specifické pro virtuální počítače v zóně dostupnosti, a to do jednoho virtuálního počítače v zóně. Pokud máte například 100 virtuálních počítače ve skupině dostupnosti a dojde k aktualizaci jednoho z nich, plánovaná událost se dostane na všech 100, zatímco pokud je v zóně 100 jednotlivých virtuálních počítače, událost se dostane jenom do ovlivněného virtuálního počítače.
V důsledku toho zkontrolujte pole v události Resources a zjistěte, které virtuální počítače jsou ovlivněné.
Zjišťování koncových bodů
Pro virtuální počítače s podporou virtuální Metadata Service k dispozici ze statické nesměrovatelné IP adresy 169.254.169.254 . Úplný koncový bod pro nejnovější verzi Scheduled Events:
http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01
Pokud virtuální počítač není vytvořený v rámci Virtual Network, výchozí případy pro cloudové služby a klasické virtuální počítače, ke zjištění IP adresy, která se má použít, se vyžaduje další logika. Informace o zjištění koncového bodu hostitele najdetev této ukázce.
Dostupnost verzí a oblastí
Služba Scheduled Events má verzi. Verze jsou povinné. aktuální verze je 2020-07-01 .
| Verze | Typ verze | Oblasti | Poznámky k verzi |
|---|---|---|---|
| 2020-07-01 | Obecná dostupnost | Vše | |
| 2019-08-01 | Obecná dostupnost | Vše | |
| 2019-04-01 | Obecná dostupnost | Vše | |
| 2019-01-01 | Obecná dostupnost | Vše | |
| 2017-11-01 | Obecná dostupnost | Vše | |
| 2017-08-01 | Obecná dostupnost | Vše | |
| 2017-03-01 | Preview | Vše |
Poznámka
Předchozí verze Preview Scheduled Events verzi {latest} jako verzi api-version. Tento formát se už nepodporuje a v budoucnu bude zastaralý.
Povolení a zakázání plánovaných událostí
Scheduled Events služba povolená při prvním vyžádání událostí. Při prvním volání až dvou minut byste měli očekávat zpožděnou odpověď.
Scheduled Events je pro vaši službu zakázaná, pokud po dobu 24 hodin nevyžádá žádost.
Údržba iniciovaná uživatelem
Při údržbě virtuálního počítače iniciované uživatelem prostřednictvím Azure Portal, rozhraní API, rozhraní příkazového řádku nebo PowerShellu dojde k plánované události. Pak můžete otestovat logiku přípravy údržby ve vaší aplikaci a vaše aplikace se může připravit na údržbu iniciované uživatelem.
Pokud virtuální počítač restartujete, naplánuje se Reboot událost s typem . Pokud virtuální počítač nasadíte znovu, naplánována bude Redeploy událost s typem .
Použití rozhraní API
Hlavičky
Při dotazování Metadata Service, musíte zadat hlavičku , abyste zajistili, že požadavek nebyl Metadata:true neúmyslně přesměrován. Hlavička Metadata:true je povinná pro všechny požadavky na naplánované události. Pokud hlavičku nezahrníte do požadavku, výsledkem bude odpověď "Chybný požadavek" z Metadata Service.
Dotaz na události
Na plánované události se můžete dotazovat následujícím voláním:
Bash
curl -H Metadata:true http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01
Odpověď obsahuje pole plánovaných událostí. Prázdné pole znamená, že aktuálně nejsou naplánované žádné události. V případě naplánovaných událostí obsahuje odpověď pole událostí.
{
"DocumentIncarnation": {IncarnationID},
"Events": [
{
"EventId": {eventID},
"EventType": "Reboot" | "Redeploy" | "Freeze" | "Preempt" | "Terminate",
"ResourceType": "VirtualMachine",
"Resources": [{resourceName}],
"EventStatus": "Scheduled" | "Started",
"NotBefore": {timeInUTC},
"Description": {eventDescription},
"EventSource" : "Platform" | "User",
"DurationInSeconds" : {timeInSeconds},
}
]
}
Vlastnosti události
| Vlastnost | Popis |
|---|---|
| ID události | Globálně jedinečný identifikátor pro tuto událost. Příklad:
|
| Typ události | Dopad této události způsobí. Hodnoty:
|
| ResourceType | Typ prostředku, na který tato událost ovlivňuje. Hodnoty:
|
| Zdroje informací | Seznam prostředků, které tato událost ovlivňuje V seznamu je zaručeno, že bude obsahovat počítače z jedné aktualizační domény, ale nemusí obsahovat všechny počítače v ud. Příklad:
|
| EventStatus | Stav této události Hodnoty:
CompletedNení k dispozici žádný nebo podobný stav. Událost již není vrácena po dokončení události. |
| NotBefore | Čas, po kterém může být tato událost spuštěna. Příklad:
|
| Description | Popis této události Příklad:
|
| EventSource | Iniciátor události. Příklad:
|
| DurationInSeconds | Očekávaná doba přerušení způsobená událostí. Příklad:
|
Plánování událostí
Každé události je naplánováno minimální množství času v budoucnu na základě typu události. Tato doba se projeví ve vlastnosti události NotBefore .
| Typ události | Minimální oznámení |
|---|---|
| Uvolnění | 15 minut |
| Restartování | 15 minut |
| Opětovné nasazení | 10 minut |
| Přerušen | 30 sekund |
| Terminate (Ukončení) | Uživatelsky konfigurovatelné: 5 až 15 minut |
Poznámka
V některých případech může Azure předpovědět selhání hostitele kvůli zhoršenému hardwaru a při plánování migrace se pokusí zmírnit přerušení služby. Ovlivněné virtuální počítače dostanou plánovanou událost NotBefore , která je obvykle několik dní v budoucnu. Skutečný čas se liší v závislosti na předpokládaném vyhodnocení rizik při selhání. Pokud je to možné, Azure se pokusí poskytnout oznámení v předstihu 7 dní, ale skutečná doba se změní a může být menší, pokud je předpověď taková, že dojde k bezprostřednímu výpadku hardwaru. Abyste minimalizovali riziko pro vaši službu pro případ, že se hardware před migrací iniciované systémem nezdařil, doporučujeme, abyste virtuální počítač co nejdříve znovu nasadili.
Frekvence cyklického dotazování
Koncový bod můžete podle potřeby dotazovat na aktualizace, jak často nebo často. Doba mezi požadavky však bude trvat déle, než budete chtít reagovat na nadcházející událost. Většina událostí má 5 až 15 minut oznámení předem, i když v některých případech může předběžné oznámení trvat až 30 sekund. Aby bylo zajištěno, že budete mít k dispozici co nejvíce času pro zmírňování akcí, doporučujeme, abyste službu provedli jednou za sekundu.
Spustit událost
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 tím, že POST zavoláte metadata Service s EventId . Toto volání indikuje Azure, že může zkrátit minimální dobu oznámení (Pokud je to možné).
V textu žádosti se očekává následující ukázka JSON POST . Žádost by měla obsahovat seznam StartRequests . Každý StartRequest obsahuje EventId pro událost, kterou chcete urychlit:
{
"StartRequests" : [
{
"EventId": {EventId}
}
]
}
Ukázka bash
curl -H Metadata:true -X POST -d '{"StartRequests": [{"EventId": "f020ba2e-3bc0-4c40-a10b-86575a9eabd5"}]}' http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01
Poznámka
Potvrzení události umožní, aby událost pokračovala v případě, že událost Resources není pouze virtuálním počítačem, který potvrzuje událost. Proto můžete zvolit vedoucího, který bude koordinovat potvrzení, což může být jednoduché jako první počítač v Resources poli.
Ukázka Pythonu
Následující ukázkové dotazy Metadata Service pro naplánované události a schvalují každou zbývající událost:
#!/usr/bin/python
import json
import socket
import urllib2
metadata_url = "http://169.254.169.254/metadata/scheduledevents?api-version=2020-07-01"
this_host = socket.gethostname()
def get_scheduled_events():
req = urllib2.Request(metadata_url)
req.add_header('Metadata', 'true')
resp = urllib2.urlopen(req)
data = json.loads(resp.read())
return data
def handle_scheduled_events(data):
for evt in data['Events']:
eventid = evt['EventId']
status = evt['EventStatus']
resources = evt['Resources']
eventtype = evt['EventType']
resourcetype = evt['ResourceType']
notbefore = evt['NotBefore'].replace(" ", "_")
description = evt['Description']
eventSource = evt['EventSource']
if this_host in resources:
print("+ Scheduled Event. This host " + this_host +
" is scheduled for " + eventtype +
" by " + eventSource +
" with description " + description +
" not before " + notbefore)
# Add logic for handling events here
def main():
data = get_scheduled_events()
handle_scheduled_events(data)
if __name__ == '__main__':
main()
Další kroky
- Podívejte se na ukázku Scheduled Events v Azure pátek .
- projděte si ukázky kódu Scheduled Events v části Metadata Instance Azure Scheduled Events úložiště GitHub.
- Přečtěte si další informace o rozhraních API, která jsou k dispozici v instance metadata Service.
- Přečtěte si o plánované údržbě virtuálních počítačů se systémem Linux v Azure.