Azure Cloud Services (kiterjesztett támogatás) definíció LoadBalancerProbe séma
A terheléselosztó-mintavétel az UDP-végpontok és a szerepkörpéldányok végpontjainak ügyfél által meghatározott állapotadat-mintavétele. Ez LoadBalancerProbe
nem önálló elem, hanem egy szolgáltatásdefiníciós fájl webes vagy feldolgozói szerepkörével kombinálva. Egynél több szerepkör is használhat .LoadBalancerProbe
A szolgáltatásdefiníciós fájl alapértelmezett bővítménye a csdef.
A terheléselosztó-mintavétel funkciója
Az Azure Load Balancer feladata a bejövő forgalom átirányítása a szerepkörpéldányokhoz. A terheléselosztó határozza meg, hogy mely példányok fogadhatják a forgalmat az egyes példányok rendszeres próbafuttatásával a példány állapotának meghatározásához. A terheléselosztó percenként többször is mintavételt ad minden példányra. A példány állapotának a terheléselosztó számára való biztosításának két különböző lehetősége van: az alapértelmezett terheléselosztó-mintavétel vagy egy egyéni terheléselosztó-mintavétel, amelyet a LoadBalancerProbe a csdef fájlban való definiálásával valósít meg.
Az alapértelmezett terheléselosztó-mintavétel a vendégügynököt használja a virtuális gépen belül, amely csak akkor figyel és válaszol HTTP 200 OK-válaszsal, ha a példány kész állapotban van (például ha a példány nincs foglalt, újrahasznosítási, leállási stb. állapotban). Ha a vendégügynök nem tud HTTP 200 OK-val válaszolni, az Azure Load Balancer nem válaszolóként jelöli meg a példányt, és leállítja a forgalom küldését az adott példányra. Az Azure Load Balancer továbbra is pingeli a példányt, és ha a vendégügynök HTTP 200-zal válaszol, az Azure Load Balancer ismét elküldi a forgalmat a példánynak. Webes szerepkör használatakor a webhely kódja általában w3wp.exe fut, amelyet az Azure Fabric vagy a vendégügynök nem figyel, ami azt jelenti, hogy a w3wp.exe hibáit (például HTTP 500-válaszokat) nem jelenti a vendégügynök, és a terheléselosztó nem tudja, hogy a példányt kivegye a forgatásból.
Az egyéni terheléselosztó-mintavétel felülírja az alapértelmezett vendégügynök-mintavételt, és lehetővé teszi saját egyéni logika létrehozását a szerepkörpéldány állapotának meghatározásához. A terheléselosztó rendszeresen mintavételezi a végpontot (alapértelmezés szerint 15 másodpercenként), és a példány rotációban van, ha TCP ACK vagy HTTP 200 protokollal válaszol az időtúllépési időszakon belül (alapértelmezés szerint 31 másodperc). Ez hasznos lehet a saját logikájának implementálásához, hogy eltávolítsa a példányokat a terheléselosztó rotációjából, például 200-nál nem nagyobb állapotot ad vissza, ha a példány 90%-os processzorhasználat felett van. A w3wp.exe használó webes szerepkörök esetében ez azt is jelenti, hogy automatikusan figyeli a webhelyét, mivel a webhelykód hibái nem 200-as állapotot adnak vissza a terheléselosztó mintavételének. Ha nem határoz meg LoadBalancerProbe fájlt a csdef fájlban, akkor a rendszer az alapértelmezett terheléselosztó-viselkedést használja (a korábban leírtak szerint).
Ha egyéni terheléselosztó-mintavételt használ, győződjön meg arról, hogy a logika figyelembe veszi a RoleEnvironment.OnStop metódust. Ha az alapértelmezett terheléselosztó-mintavételt használja, a rendszer a példányt kiveheti a forgatásból az OnStop meghívása előtt, de az egyéni terheléselosztó-mintavétel továbbra is 200 OK értéket adhat vissza az OnStop esemény során. Ha az OnStop esemény használatával megtisztítja a gyorsítótárat, leállítja a szolgáltatást, vagy egyéb módon módosítja a szolgáltatás futásidejét, akkor gondoskodnia kell arról, hogy az egyéni terheléselosztó mintavételi logikája eltávolítsa a példányt a rotációból.
Alapszintű szolgáltatásdefiníciós séma terheléselosztó-mintavételhez
A terheléselosztó-mintavételt tartalmazó szolgáltatásdefiníciós fájl alapformátuma a következő.
<ServiceDefinition …>
<LoadBalancerProbes>
<LoadBalancerProbe name="<load-balancer-probe-name>" protocol="[http|tcp]" path="<uri-for-checking-health-status-of-vm>" port="<port-number>" intervalInSeconds="<interval-in-seconds>" timeoutInSeconds="<timeout-in-seconds>"/>
</LoadBalancerProbes>
</ServiceDefinition>
Sémaelemek
A LoadBalancerProbes
szolgáltatásdefiníciós fájl eleme a következő elemeket tartalmazza:
LoadBalancerProbes elem
Az LoadBalancerProbes
elem a terheléselosztó-mintavételek gyűjteményét írja le. Ez az elem a LoadBalancerProbe elem szülőeleme.
LoadBalancerProbe elem
Az LoadBalancerProbe
elem egy modell állapotmintájának definiálása. Több terheléselosztó-mintavételt is definiálhat.
Az alábbi táblázat az elem attribútumait LoadBalancerProbe
ismerteti:
Attribútum | Típus | Leírás |
---|---|---|
name |
string |
Szükséges. A terheléselosztó-mintavétel neve. A névnek egyedinek kell lennie. |
protocol |
string |
Szükséges. A végpont protokollját adja meg. A lehetséges értékek: http és tcp . Ha tcp meg van adva, egy fogadott ACK szükséges a mintavétel sikerességéhez. Ha http meg van adva, a mintavétel sikerességéhez 200 OK-válasz szükséges a megadott URI-tól. |
path |
string |
A virtuális gép állapotának lekéréséhez használt URI. path szükség van, ha protocol be van állítva a következőre http : . Ellenkező esetben nem engedélyezett.Nincs alapértelmezett érték. |
port |
integer |
Opcionális. A mintavétel kommunikációjának portja. Ez az attribútum bármely végponthoz választható, mivel ugyanazt a portot használja a mintavételhez. A próbaidőhöz másik portot is konfigurálhat. A lehetséges értékek 1 és 65535 között mozognak, beleértve az értékeket is. A végpont által beállított alapértelmezett érték. |
intervalInSeconds |
integer |
Opcionális. A végpont állapotának mintavételi gyakorisága másodpercben. Az intervallum általában valamivel kisebb, mint a lefoglalt időtúllépési időszak fele (másodpercben), ami két teljes mintavételt tesz lehetővé, mielőtt a példányt kivennénk a forgatásból. Az alapértelmezett érték 15. A minimális érték 5. |
timeoutInSeconds |
integer |
Opcionális. Az időtúllépési időszak másodpercben alkalmazva van a mintavételre, ahol a válasz nem eredményezi a további forgalom végpontra való kézbesítésének leállítását. Ez az érték lehetővé teszi, hogy a végpontok gyorsabban vagy lassabban legyenek kivehetők a forgatásból, mint az Azure-ban használt szokásos időpontok (amelyek az alapértelmezett értékek). Az alapértelmezett érték 31. A minimális érték 11. |