Az Application Health bővítmény használata virtuálisgép-méretezési csoportokkal

Az alkalmazás állapotának monitorozása fontos jelzés az üzembe helyezés kezeléséhez és frissítéséhez. Az Azure-beli virtuálisgép-méretezési csoportok támogatják a működés közbeni frissítéseket , beleértve az automatikus operációsrendszer-rendszerkép-frissítéseket és az automatikus virtuálisgép-vendégjavításokat, amelyek az egyes példányok állapotfigyelésére támaszkodnak az üzemelő példányok frissítéséhez. Az Application Health Extension használatával figyelheti a méretezési csoportban lévő egyes példányok alkalmazásállapotát, és automatikus példányjavításokkal elvégezheti a példányjavításokat.

Ez a cikk azt ismerteti, hogyan használhatja az Application Health-bővítmény két típusát, a bináris állapotállapotokat vagy a Rich Health-állapotokat a virtuálisgép-méretezési csoportokban üzembe helyezett alkalmazások állapotának figyelésére.

Előfeltételek

Ez a cikk a következőket feltételezi:

Figyelem

Az Application Health Extension konzisztens mintavételi választ vár a konfigurált porton tcp vagy a kérelem elérési útjánhttp/https, hogy a virtuális gép kifogástalan állapotúként legyen megjelölve. Ha nem fut alkalmazás a virtuális gépen, vagy nem tud mintavételi választ konfigurálni, a virtuális gép nem kifogástalan állapotúként (bináris állapotállapotok) vagy ismeretlenként (Rich Health-állapotok) jelenik meg.

Megjegyzés:

Egy virtuálisgép-méretezési csoporthoz csak egy állapotfigyelési forrás használható, alkalmazásállapot-bővítményhez vagy állapotadat-mintavételhez. Ha mindkét beállítás engedélyezve van, el kell távolítania egyet, mielőtt olyan vezénylési szolgáltatásokat használ, mint a Példányjavítások vagy az automatikus operációsrendszer-frissítések.

Mikor érdemes használni az Application Health bővítményt?

Az Alkalmazásállapot-bővítmény egy virtuálisgép-méretezési csoport példányán belül van üzembe helyezve, és a méretezési csoport példányán belülről jelenti az alkalmazás állapotát. A bővítmény egy helyi alkalmazásvégponton szondáz, és az alkalmazástól kapott TCP/HTTP(S) válaszok alapján frissíti az állapotot. Ezt az állapotot az Azure használja a nem megfelelő állapotú példányok javításának kezdeményezésére és annak megállapítására, hogy egy példány jogosult-e a frissítési műveletekre.

A bővítmény állapotjelentést készít egy virtuális gépről, és olyan helyzetekben használható, amikor egy külső mintavétel, például az Azure Load Balancer állapotmintái nem használhatók.

Bináris és Rich Health-állapotok

Az Alkalmazásállapot-bővítmények két lehetőség közül választhatnak: Bináris állapotállapotok és Rich Health-állapotok. Az alábbi táblázat a két lehetőség közötti néhány fő különbséget emeli ki. Az általános javaslatokért tekintse meg a szakasz végét.

Funkciók Bináris állapotállapotok Rich Health States
Elérhető állapotállapotok Két elérhető állapot: Kifogástalan, Nem kifogástalan Négy elérhető állapot: Kifogástalan, Nem kifogástalan, Inicializálás, Ismeretlen1
Állapotjelek küldése Az állapotjelek HTTP-/HTTPS-válaszkódokon vagy TCP-kapcsolatokon keresztül érkeznek. A HTTP/HTTPS protokoll állapotjeleit a mintavétel válaszkódján és választörzsén keresztül küldi el a rendszer. A TCP protokollon keresztüli állapotjelek változatlanok maradnak a bináris állapotállapotoktól.
Nem kifogástalan példányok azonosítása A példányok automatikusan kifogástalan állapotba kerülnek, ha az alkalmazás nem fogad kifogástalan jelzést. A nem megfelelő állapotú példányok jelezhetik a bővítménykonfigurációval (például elérhetetlen végponttal) vagy az alkalmazással kapcsolatos problémát (például nem 200-ra vonatkozó állapotkódot). A példányok csak akkor kerülnek kifogástalan állapotba, ha az alkalmazás nem megfelelő mintavételi választ ad ki. A felhasználók feladata, hogy egyéni logikát implementáljanak a nem megfelelő alkalmazásokkalrendelkező példányok azonosítására és megjelölésére 2. A helytelen bővítménybeállításokkal (például elérhetetlen végponttal) vagy érvénytelen állapotadat-mintavételi válaszokkal rendelkező példányok az Ismeretlen állapot 2. állapotbakerülnek.
Az újonnan létrehozott példányok állapotának inicializálása Az állapot inicializálása nem érhető el. Az újonnan létrehozott példányok eltarthatnak egy ideig, mielőtt állandó állapotba kerülnek. Az állapot inicializálása lehetővé teszi az újonnan létrehozott példányok állandó állapotba rendezését, mielőtt a példány jogosulttá válik a működés közbeni frissítésekre vagy a példányok javítási műveleteire.
HTTP/HTTPS protokoll Támogatott Támogatott
TCP-protokoll Támogatott Korlátozott támogatás – Ismeretlen állapot nem érhető el a TCP protokollon. Tekintse meg a Rich Health States protokolltáblát a TCP állapotának viselkedéséről.

1 Az ismeretlen állapot nem érhető el a TCP protokollon. 2 Csak HTTP/HTTPS protokoll esetén alkalmazható. A TCP-protokoll ugyanazt a folyamatot követi, mint a bináris állapotállapotok nem kifogástalan példányainak azonosítása.

Általában bináris állapotállapotokat kell használnia, ha:

  • Nem szeretne egyéni logikát konfigurálni a nem megfelelő példányok azonosításához és megjelöléséhez
  • Nincs szükség inicializálási türelmi időre az újonnan létrehozott példányokhoz

A Rich Health-állapotokat akkor érdemes használnia, ha:

  • Állapotjeleket http/HTTPS protokollon keresztül küld el, és az állapotinformációkat a mintavétel választörzsén keresztül küldheti el
  • Egyéni logikával szeretné azonosítani és megjelölni a nem kifogástalan állapotú példányokat
  • Az újonnan létrehozott példányok inicializálási türelmi időszakát szeretné beállítani, hogy azok stabil állapotba kerülhessenek, mielőtt a példány jogosulttá válik a működés közbeni frissítésre vagy példányjavításra

Bináris állapotállapotok

A bináris állapotjelentés két állapotállapotot tartalmaz, kifogástalan és nem megfelelő állapotot. Az alábbi táblázatok rövid leírást nyújtanak az állapotállapotok konfigurálásáról.

HTTP/HTTPS Protokoll

Protokoll Állapot Leírás
http/https Kifogástalan Ha kifogástalan jelzést szeretne küldeni, az alkalmazásnak 200 válaszkódot kell visszaadnia.
http/https Nem kifogástalan A példány sérültként lesz megjelölve, ha nem érkezik 200 válaszkód az alkalmazástól.

TCP-protokoll

Protokoll Állapot Leírás
TCP Kifogástalan Ha kifogástalan jelzést szeretne küldeni, sikeres kézfogást kell végrehajtania a megadott alkalmazásvégponttal.
TCP Nem kifogástalan A példány nem megfelelő állapotúként lesz megjelölve, ha a megadott alkalmazásvégponton sikertelen vagy hiányos kézfogás történt.

Egyes forgatókönyvek, amelyek nem megfelelő állapotot eredményezhetnek, a következők lehetnek:

  • Amikor az alkalmazásvégpont egy nem 200-ás állapotkódot ad vissza
  • Ha nincs konfigurálva alkalmazásvégpont a virtuálisgép-példányokon belül az alkalmazás állapotának megadásához
  • Ha az alkalmazásvégpont helytelenül van konfigurálva
  • Ha az alkalmazásvégpont nem érhető el

Rich Health States

A Rich Health States jelentés négy állapotállapotot tartalmaz, az inicializálást, az kifogástalan állapotot, a nem megfelelő állapotot és az Ismeretlen állapotot. Az alábbi táblázatok rövid leírást nyújtanak az egyes állapotok konfigurálásáról.

HTTP/HTTPS Protokoll

Protokoll Állapot Leírás
http/https Kifogástalan Kifogástalan jelzés küldéséhez az alkalmazás várhatóan egy mintavételi választ ad vissza a következőkkel: Mintavételi válaszkód: Status 2xx, Probe Response Body:{"ApplicationHealthState": "Healthy"}
http/https Nem kifogástalan Nem megfelelő jel küldéséhez az alkalmazás várhatóan egy mintavételi választ ad vissza a következőkkel: Mintavétel válaszkód: Status 2xx, Probe Response Body:{"ApplicationHealthState": "Unhealthy"}
http/https Inicializálás A példány automatikusan inicializálási állapotot ad meg a bővítmény indításakor. További információ: Inicializálási állapot.
http/https Ismeretlen Ismeretlen állapot fordulhat elő a következő esetekben: ha az alkalmazás nem 2xx állapotkódot ad vissza, amikor a mintavételi kérelem túllépi az időkorlátot, amikor az alkalmazás végpontja elérhetetlen vagy helytelenül van konfigurálva, ha hiányzik vagy érvénytelen érték van megadva ApplicationHealthState a válasz törzsében, vagy ha a türelmi időszak lejár. További információ: Ismeretlen állapot.

TCP-protokoll

Protokoll Állapot Leírás
TCP Kifogástalan Ha kifogástalan jelzést szeretne küldeni, sikeres kézfogást kell végrehajtania a megadott alkalmazásvégponttal.
TCP Nem kifogástalan A példány nem megfelelő állapotúként lesz megjelölve, ha a megadott alkalmazásvégponton sikertelen vagy hiányos kézfogás történt.
TCP Inicializálás A példány automatikusan inicializálási állapotot ad meg a bővítmény indításakor. További információ: Inicializálási állapot.

Állapot inicializálása

Ez az állapot csak a Rich Health-államokra vonatkozik. Az inicializálási állapot csak egyszer fordul elő a bővítmény indításakor, és a bővítmény beállításai gracePeriod és numberOfProbesa .

A bővítmény indításakor az alkalmazás állapota mindaddig inicializálási állapotban marad, amíg két forgatókönyv egyike nem következik be:

  • Ugyanazt az állapotot (kifogástalan vagy nem megfelelő) a számOfProbes által konfigurált, egymást követő számú alkalommal jelenti a rendszer.
  • A gracePeriod lejárati idő

Ha ugyanazt az állapotot (kifogástalan vagy nem megfelelő) egymás után jelentik, az alkalmazás állapota ki fog váltani az inicializálási állapotból a jelentett állapotba (kifogástalan vagy nem megfelelő).

Példa

Ha numberOfProbes = 3, az a következőt jelentené:

  • Az inicializálásról az kifogástalan állapotra való áttéréshez: Az alkalmazás állapotbővítményének három egymást követő kifogástalan jelet kell fogadnia HTTP/HTTPS vagy TCP protokollon keresztül
  • Az inicializálásról a nem kifogástalan állapotra való áttéréshez: Az alkalmazás állapotbővítményének három egymást követő nem kifogástalan jelet kell fogadnia HTTP/HTTPS vagy TCP protokollon keresztül

Ha az gracePeriod alkalmazás az egymást követő állapotjelentés előtt lejár, a példány állapota a következőképpen lesz meghatározva:

  • HTTP/HTTPS protokoll: Az alkalmazás állapota az inicializálásról ismeretlenre vált
  • TCP-protokoll: Az alkalmazás állapota az inicializálásról a nem megfelelő állapotra vált

Ismeretlen állapot

Ez az állapot csak a Rich Health-államokra vonatkozik. Az Ismeretlen állapot csak a "http" vagy a "https" mintavétel esetén jelenik meg, és a következő esetekben fordul elő:

  • Ha az alkalmazás nem 2xx állapotkódot ad vissza
  • Amikor a mintavételi kérelem túllépi az időkorlátot
  • Ha az alkalmazásvégpont elérhetetlen vagy helytelenül van konfigurálva
  • Ha hiányzik vagy érvénytelen érték van megadva ApplicationHealthState a válasz törzsében
  • A türelmi időszak lejártakor

Az ismeretlen állapotú példányok kezelése a nem megfelelő állapotú példányokhoz hasonlóan történik. Ha engedélyezve van, a példányok javítása ismeretlen példányon történik, miközben a működés közbeni frissítés addig szünetel, amíg a példány vissza nem kerül kifogástalan állapotba.

Az alábbi táblázat a működés közbeni frissítések és példányjavítások állapotelemzését mutatja be:

Állapot A gördülő frissítés értelmezése Példányjavítási eseményindító
Inicializálás Várjon, amíg az állapot kifogástalan, nem kifogástalan vagy Ismeretlen állapotú lesz Nem
Kifogástalan Kifogástalan Nem
Nem kifogástalan Nem kifogástalan Igen
Ismeretlen Nem kifogástalan Igen

Bináris állapotállapotok bővítményséma

Az alábbi JSON az Application Health bővítmény sémáját mutatja be. A bővítményhez legalább egy "tcp", "http" vagy "https" kérés szükséges egy társított porttal vagy kérési útvonallal.

{
  "extensionProfile" : {
     "extensions" : [
      {
        "name": "HealthExtension",
        "properties": {
          "publisher": "Microsoft.ManagedServices",
          "type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
          "autoUpgradeMinorVersion": true,
          "typeHandlerVersion": "1.0",
          "settings": {
            "protocol": "<protocol>",
            "port": <port>,
            "requestPath": "</requestPath>",
            "intervalInSeconds": 5,
            "numberOfProbes": 1
          }
        }
      }
    ]
  }
} 

Tulajdonságértékek

Név Érték/ Példa Adattípus
apiVersion 2018-10-01 dátum:
Publisher Microsoft.ManagedServices sztring
típus ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) sztring
typeHandlerVersion 1.0 sztring

Beállítások

Név Érték/ Példa Adattípus
Protokoll httpvagy httpstcp sztring
kikötő Nem kötelező, ha a protokoll vagy httphttps, akkor kötelező, ha a protokoll tcp egész
requestPath Kötelező, ha a protokoll a http protokoll, vagy httpsnem engedélyezett, ha a protokoll tcp sztring
intervalInSeconds Nem kötelező, az alapértelmezett érték 5 másodperc. Ez az egyes állapotminták közötti intervallum. Ha például az intervalInSeconds == 5, a rendszer 5 másodpercenként küld egy mintavételt a helyi alkalmazásvégpontnak. egész
numberOfProbes Nem kötelező, az alapértelmezett érték 1. Ez az állapot módosításához szükséges egymást követő mintavételek száma. Ha például a numberOfProbles == 3, akkor 3 egymást követő "Kifogástalan" jelre lesz szüksége az állapot "Nem kifogástalan" állapotról "Kifogástalan" állapotra való módosításához. Ugyanez a követelmény vonatkozik az állapot "Nem kifogástalan" állapotra való módosítására. egész

Rich Health-állapotok bővítményséma

Az alábbi JSON a Rich Health States bővítmény sémáját mutatja be. A bővítmény legalább egy "http" vagy "https" kérést igényel egy társított porttal vagy kérési útvonallal. A TCP-mintavételek szintén támogatottak, de nem tudják beállítani a ApplicationHealthState mintavétel válasz törzsét, és nem lesznek hozzáférésük az Ismeretlen állapothoz.

{
  "extensionProfile" : {
     "extensions" : [
      {
        "name": "HealthExtension",
        "properties": {
          "publisher": "Microsoft.ManagedServices",
          "type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
          "autoUpgradeMinorVersion": true,
          "typeHandlerVersion": "2.0",
          "settings": {
            "protocol": "<protocol>",
            "port": <port>,
            "requestPath": "</requestPath>",
            "intervalInSeconds": 5,
            "numberOfProbes": 1,
            "gracePeriod": 600
          }
        }
      }
    ]
  }
} 

Tulajdonságértékek

Név Érték/ Példa Adattípus
apiVersion 2018-10-01 dátum:
Publisher Microsoft.ManagedServices sztring
típus ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) sztring
typeHandlerVersion 2.0 sztring

Beállítások

Név Érték/ Példa Adattípus
Protokoll httpvagy httpstcp sztring
kikötő Nem kötelező, ha a protokoll vagy httphttps, akkor kötelező, ha a protokoll tcp egész
requestPath Kötelező, ha a protokoll a http protokoll, vagy httpsnem engedélyezett, ha a protokoll tcp sztring
intervalInSeconds Nem kötelező, az alapértelmezett érték 5 másodperc. Ez az egyes állapotminták közötti intervallum. Ha például az intervalInSeconds == 5, a rendszer 5 másodpercenként küld egy mintavételt a helyi alkalmazásvégpontnak. egész
numberOfProbes Nem kötelező, az alapértelmezett érték 1. Ez az állapot módosításához szükséges egymást követő mintavételek száma. Ha például a numberOfProbles == 3, akkor 3 egymást követő "Kifogástalan" jelre lesz szüksége az állapot "Nem kifogástalan"/"Ismeretlen" állapotról "Kifogástalan" állapotra való módosításához. Ugyanez a követelmény vonatkozik az állapot "Nem kifogástalan" vagy "Ismeretlen" állapotra való módosítására. egész
gracePeriod Nem kötelező, alapértelmezett = intervalInSeconds * numberOfProbes; a türelmi időszak maximális időtartama 7200 másodperc egész

Az Application Health bővítmény üzembe helyezése

Az Application Health bővítményt többféleképpen is üzembe helyezheti a méretezési csoportokban az alábbi példákban leírtak szerint.

Bináris állapotállapotok

Az alábbi példa hozzáadja az Application Health bővítményt (myHealthExtension néven) a BővítményProfile bővítményhez egy Windows-alapú méretezési csoport méretezési csoportjának modelljében.

Ezzel a példával egy meglévő bővítményt is módosíthat Rich Health-állapotról bináris állapotra, ha PUT helyett PATCH-hívást kezdeményez.

PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
  "name": "myHealthExtension",
  "location": "<location>", 
  "properties": {
    "publisher": "Microsoft.ManagedServices",
    "type": "ApplicationHealthWindows",
    "autoUpgradeMinorVersion": true,
    "typeHandlerVersion": "1.0",
    "settings": {
      "protocol": "<protocol>",
      "port": <port>,
      "requestPath": "</requestPath>"
    }
  }
}

Egy már üzembe helyezett bővítmény szerkesztésére használható PATCH .

Frissítse a virtuális gépeket a bővítmény telepítéséhez.

POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
  "instanceIds": ["*"]
}

Rich Health States

Az alábbi példa hozzáadja az Application Health – Rich States bővítményt (névvel myHealthExtension) egy extensionProfile Windows-alapú méretezési csoport méretezési csoportjának modelljéhez.

Ezzel a példával frissíthet egy meglévő bővítményt binárisról Rich Health-állapotra, ha PUT helyett PATCH-hívást kezdeményez.

PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
  "name": "myHealthExtension",
  "location": "<location>",
  "properties": {
    "publisher": "Microsoft.ManagedServices",
    "type": "ApplicationHealthWindows",
    "autoUpgradeMinorVersion": true,
    "typeHandlerVersion": "2.0",
    "settings": {
      "protocol": "<protocol>",
      "port": <port>,
      "requestPath": "</requestPath>",
      "intervalInSeconds": <intervalInSeconds>,
      "numberOfProbes": <numberOfProbes>,
      "gracePeriod": <gracePeriod>
    }
  }
}

Egy már üzembe helyezett bővítmény szerkesztésére használható PATCH .

Frissítse a virtuális gépeket a bővítmény telepítéséhez.

POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
  "instanceIds": ["*"]
}

Hibaelhárítás

Virtuális gép állapotának megtekintése – egyetlen példány

Get-AzVmssVM 
  -InstanceView `
  -ResourceGroupName <rgName> `
  -VMScaleSetName <vmssName> `
  -InstanceId <instanceId> 

Virtuális gép állapotának megtekintése – kötegelt hívás

Ez csak egységes vezénylésű virtuálisgép-méretezési csoportokhoz érhető el.

GET on `/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>/virtualMachines/?api-version=2022-03-01&$expand=instanceview`

Az állapot nem jelenik meg

Ha az Állapot állapot nem jelenik meg az Azure Portalon vagy a GET-híváson keresztül, ellenőrizze, hogy a virtuális gép a legújabb modellre van-e frissítve. Ha a virtuális gép nem a legújabb modellen található, frissítse a virtuális gépet, és megjelenik az állapot.

Bővítmény végrehajtási kimeneti naplója

A bővítményvégrehajtás kimenete a következő könyvtárakban található fájlokba lesz naplózva:

C:\WindowsAzure\Logs\Plugins\Microsoft.ManagedServices.ApplicationHealthWindows\<version>\
/var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-<extension_version>/status
/var/log/azure/applicationhealth-extension

A naplók rendszeresen rögzítik az alkalmazás állapotát is.

További lépések

Megtudhatja, hogyan helyezheti üzembe az alkalmazást virtuálisgép-méretezési csoportokban.