Azure Cloud Services (erweiterter Support): Definition des LoadBalancerProbe-Schemas
Der Lastenausgleichstest ist ein vom Kunden definierter Integritätstest von UDP-Endpunkten und Endpunkten in Rolleninstanzen. LoadBalancerProbe
ist kein eigenständiges Element, sondern wird mit der Webrolle oder der Workerrolle in einer Dienstdefinitionsdatei kombiniert. Mehrere Rollen können LoadBalancerProbe
verwenden.
Die Standarderweiterung für die Dienstdefinitionsdatei lautet „.csdef“.
Die Funktion eines Lastenausgleichstests
Der Azure Load Balancer ist für das Routing von eingehendem Datenverkehr zu Ihren Rolleninstanzen verantwortlich. Der Lastenausgleich bestimmt, welche Instanzen Datenverkehr empfangen können, indem sie in regelmäßigen Zeitabständen getestet werden, um die Integrität dieser Instanz zu ermitteln. Bei dem Lastenausgleich wird jede Instanz mehrmals pro Minute getestet. Der Zustand der Instanz kann auf zwei Weisen für den Lastenausgleich bereitgestellt werden: mit dem standardmäßigen Lastenausgleichstest oder mit einem benutzerdefinierten Lastenausgleichstest, der durch die Definition von LoadBalancerProbe in der CSDEF-Datei implementiert wird.
Beim Standard-Lastenausgleichstest wird der Gast-Agent auf dem virtuellen Computer genutzt. Dieser lauscht und antwortet nur dann mit einer HTTP 200-Antwort „OK“, wenn die Instanz den Zustand „Bereit“ aufweist, d. h. nicht in den Zuständen „Ausgelastet“, „Wiederverwendung“ oder „Wird angehalten“ etc. Wenn der Gast-Agent nicht mit HTTP 200 OK antwortet, kennzeichnet der Azure Load Balancer die Instanz als nicht reagierend und sendet keinen Datenverkehr mehr an diese Instanz. Der Azure Load Balancer pingt die Instanz weiterhin, und wenn der Gast-Agent mit einer HTTP 200-Antwort reagiert, sendet der Azure Load Balancer erneut Datenverkehr an diese Instanz. Wenn Sie eine Webrolle verwenden, wird Ihr Websitecode in der Regel in „w3wp.exe“ ausgeführt. Dieses Programm wird nicht von Azure-Fabric oder dem Gast-Agent überwacht. Das bedeutet, dass Fehler in „w3wp.exe“ – z. B. HTTP 500-Antworten – dem Gast-Agent nicht gemeldet werden und der Lastenausgleich diese Instanz nicht aus der Rotation entfernen kann.
Der benutzerdefinierte Lastenausgleichstest erhält Vorrang vor dem Standard-Gast-Agent-Test und ermöglicht es Ihnen, Ihre eigene benutzerdefinierte Logik zum Bestimmen der Integrität der Rolleninstanz zu erstellen. Beim Lastenausgleich wird in regelmäßigen Zeitabständen Ihr Endpunkt getestet, standardmäßig alle 15 Sekunden. Die Instanz gilt als rotierend, wenn sie innerhalb des Timeoutzeitraums – standardmäßig 31 Sekunden – mit einer TCP-Bestätigung oder HTTP 200 antwortet. Dies kann für die Implementierung Ihrer eigenen Logik hilfreich sein, um Instanzen aus der Lastenausgleichsrotation zu entfernen, z.B. bei der Rückgabe eines von 200 abweichenden Status, wenn die Instanz mehr als 90 % CPU-Auslastung erreicht. Für Webrollen, die „w3wp.exe“ verwenden, bedeutet dies auch, dass Ihre Website automatisch überwacht wird, da Fehler im Websitecode einen Nicht-200-Status an den Lastenausgleichstest zurückgibt. Wenn Sie in der CSDEF-Datei kein LoadBalancerProbe-Element definieren, wird das zuvor beschriebene Standard-Lastenausgleichsverhalten verwendet.
Wenn Sie einen benutzerdefinierten Lastenausgleichstest verwenden, müssen Sie sicherstellen, dass Ihre Logik die Methode RoleEnvironment.OnStop berücksichtigt. Bei Verwendung des Standard-Lastenausgleichstests wird die Instanz von der Rotation ausgenommen, bevor OnStop aufgerufen wird. Bei einem benutzerdefinierten Lastenausgleichstest kann während des OnStop-Ereignisses jedoch weiterhin eine 200-Antwort „OK“ zurückgegeben werden. Bei Verwendung des OnStop-Ereignisses zum Bereinigen des Cache, zum Beenden des Diensts oder zum Durchführen anderer Änderungen, die Auswirkungen auf das Runtimeverhalten Ihres Diensts haben können, müssen Sie sicherstellen, dass die Logik Ihres benutzerdefinierten Lastenausgleichstests die Instanz aus der Rotation entfernt.
Grundlegendes Dienstdefinitionsschema für einen Lastenausgleichstest
Das Standardformat einer Dienstdefinitionsdatei, die einen Lastenausgleichstest enthält, lautet wie folgt.
<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>
Schema-Elemente
Das Element LoadBalancerProbes
der Dienstdefinitionsdatei umfasst folgende Elemente:
LoadBalancerProbes-Element
Das Element LoadBalancerProbes
beschreibt die Sammlung von Lastenausgleichstests. Dieses Element ist dem LoadBalancerProbe-Element übergeordnet.
LoadBalancerProbe-Element
Das Element LoadBalancerProbe
definiert den Integritätstest für ein Modell. Sie können mehrere Lastenausgleichstests definieren.
In der folgenden Tabelle sind die Attribute des LoadBalancerProbe
-Elements beschrieben:
Attribut | type | BESCHREIBUNG |
---|---|---|
name |
string |
Erforderlich. Der Name des Lastenausgleichstests. Der Name muss eindeutig sein. |
protocol |
string |
Erforderlich. Gibt das Protokoll des Endpunkts an. Mögliche Werte sind http oder tcp . Wenn tcp angegeben wird, ist der Empfang einer Bestätigung erforderlich, damit der Test erfolgreich ist. Wenn http angegeben wird, ist eine 200 OK-Antwort vom angegebenen URI erforderlich, damit der Test erfolgreich ist. |
path |
string |
Der URI, mit dem der Integritätsstatus über den virtuellen Computer angefordert wird. path ist erforderlich, wenn protocol auf http festgelegt ist. Andernfalls wird dies nicht erlaubt.Es gibt keinen Standardwert. |
port |
integer |
Optional. Der Port für die Übertragung des Tests. Dieses Attribut ist für jeden Endpunkt optional, da derselbe Port für den Test verwendet wird. Sie können einen anderen Port für die Ausführung des Tests konfigurieren. Mögliche Werte reichen von 1 bis einschließlich 65535. Der Standardwert wird vom Endpunkt festgelegt. |
intervalInSeconds |
integer |
Optional. Das Intervall in Sekunden, in dem der Endpunkt auf den Integritätsstatus getestet werden soll. In der Regel ist das Intervall etwas kleiner als die Hälfte des zugeordneten Zeitlimits (in Sekunden). Dies ermöglicht die Durchführung von zwei vollständigen Tests, bevor die Instanz von der Rotation ausgenommen wird. Der Standardwert lautet 15. Der Mindestwert ist 5. |
timeoutInSeconds |
integer |
Optional. Das Zeitlimit in Sekunden für den Test, bei dem keine Antwort dazu führt, dass die Übermittlung von weiterem Datenverkehr an den Endpunkt beendet wird. Mit diesem Wert können Endpunkte schneller oder langsamer als bei den typischen, in Azure verwendeten Zeiten (Standardwerte) von der Rotation ausgenommen werden. Der Standardwert ist 31. Der Mindestwert ist 11. |