Delen via


Azure Cloud Services-definitie (uitgebreide ondersteuning) definitie LoadBalancerProbe-schema

De load balancer-test is een door de klant gedefinieerde statustest van UDP-eindpunten en -eindpunten in rolinstanties. Het LoadBalancerProbe is geen zelfstandig element; dit wordt gecombineerd met de webrol of werkrol in een servicedefinitiebestand. Meer dan één rol kan een LoadBalancerProbe.

De standaardextensie voor het servicedefinitiebestand is csdef.

De functie van een load balancer-test

De Azure Load Balancer is verantwoordelijk voor het routeren van binnenkomend verkeer naar uw rolinstanties. De load balancer bepaalt welke exemplaren verkeer kunnen ontvangen door elk exemplaar regelmatig te onderzoeken om de status van dat exemplaar te bepalen. De load balancer test elk exemplaar meerdere keren per minuut. Er zijn twee verschillende opties voor het bieden van de status van de instantie aan de load balancer: de standaardtest van de load balancer of een aangepaste load balancer-test, die wordt geïmplementeerd door de LoadBalancerProbe in het csdef-bestand te definiëren.

De standaard load balancer-test maakt gebruik van de gastagent in de virtuele machine, die luistert en reageert met een HTTP 200 OK-antwoord alleen wanneer het exemplaar de status Gereed heeft (bijvoorbeeld wanneer het exemplaar zich niet in de status Bezet, Recyclen, Stoppen, enzovoort bevindt). Als de gastagent niet reageert met HTTP 200 OK, markeert de Azure Load Balancer het exemplaar als niet-reagerend en stopt het verzenden van verkeer naar dat exemplaar. De Azure Load Balancer blijft het exemplaar pingen en als de gastagent reageert met een HTTP 200, verzendt de Azure Load Balancer opnieuw verkeer naar dat exemplaar. Wanneer u een webrol gebruikt, wordt uw websitecode doorgaans uitgevoerd in w3wp.exe, die niet wordt bewaakt door de Azure-infrastructuuragent of gastagent. Dit betekent dat fouten in w3wp.exe (bijvoorbeeld HTTP 500-antwoorden) niet worden gerapporteerd aan de gastagent en dat de load balancer dat exemplaar niet meer hoeft te draaien.

Met de aangepaste load balancer-test wordt de standaardtest van de gastagent overschreven en kunt u uw eigen aangepaste logica maken om de status van het rolexemplaren te bepalen. De load balancer test regelmatig uw eindpunt (standaard elke 15 seconden) en het exemplaar wordt in rotatie beschouwd als deze reageert met een TCP ACK of HTTP 200 binnen de time-outperiode (standaard van 31 seconden). Dit kan handig zijn om uw eigen logica te implementeren om exemplaren te verwijderen uit de load balancer-rotatie, bijvoorbeeld het retourneren van een niet-200-status als het exemplaar hoger is dan 90% CPU. Voor webrollen die gebruikmaken van w3wp.exe betekent dit ook dat u automatische bewaking van uw website krijgt, omdat fouten in uw websitecode een niet-200-status retourneren aan de load balancer-test. Als u geen LoadBalancerProbe definieert in het csdef-bestand, wordt het standaardgedrag van de load balancer (zoals eerder beschreven) gebruikt.

Als u een aangepaste load balancer-test gebruikt, moet u ervoor zorgen dat uw logica rekening houdt met de methode RoleEnvironment.OnStop. Wanneer u de standaardtest van de load balancer gebruikt, wordt het exemplaar uit de rotatie gehaald voordat OnStop wordt aangeroepen, maar kan een aangepaste load balancer-test een 200 OK blijven retourneren tijdens de OnStop-gebeurtenis. Als u de OnStop-gebeurtenis gebruikt om de cache op te schonen, de service te stoppen of anderszins wijzigingen aan te brengen die van invloed kunnen zijn op het runtimegedrag van uw service, moet u ervoor zorgen dat de aangepaste load balancer-testlogica het exemplaar uit rotatie verwijdert.

Basisschema voor servicedefinities voor een load balancer-test

De basisindeling van een servicedefinitiebestand met een load balancer-test is als volgt.

<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-elementen

Het LoadBalancerProbes element van het servicedefinitiebestand bevat de volgende elementen:

Het element LoadBalancerProbes

Het LoadBalancerProbes element beschrijft de verzameling load balancer-tests. Dit element is het bovenliggende element van het element LoadBalancerProbe.

Het element LoadBalancerProbe

Het LoadBalancerProbe element definieert de statustest voor een model. U kunt meerdere load balancer-tests definiëren.

In de volgende tabel worden de kenmerken van het LoadBalancerProbe element beschreven:

Kenmerk Type Description
name string Vereist. De naam van de load balancer-test. De naam moet uniek zijn.
protocol string Vereist. Hiermee geeft u het protocol van het eindpunt. Mogelijke waarden zijn http en tcp. Als tcp dit is opgegeven, is een ontvangen ACK vereist om de test te laten slagen. Als http dit is opgegeven, is een 200 OK-antwoord van de opgegeven URI vereist om de test te laten slagen.
path string De URI die wordt gebruikt voor het aanvragen van de status van de VM. path is vereist als protocol deze is ingesteld op http. Anders is het niet toegestaan.

Er is geen standaardwaarde.
port integer Optioneel. De poort voor het communiceren van de test. Dit kenmerk is optioneel voor elk eindpunt, omdat dezelfde poort wordt gebruikt voor de test. U kunt ook een andere poort configureren voor hun test. Mogelijke waarden variëren van 1 tot 65535, inclusief.

De standaardwaarde die is ingesteld door het eindpunt.
intervalInSeconds integer Optioneel. Het interval, in seconden, voor hoe vaak het eindpunt moet worden gecontroleerd op de status. Normaal gesproken is het interval iets minder dan de helft van de toegewezen time-outperiode (in seconden), waardoor twee volledige tests mogelijk zijn voordat het exemplaar uit de rotatie wordt gehaald.

De standaardwaarde is 15. De minimumwaarde is 5.
timeoutInSeconds integer Optioneel. De time-outperiode, in seconden, toegepast op de test waarbij geen reactie resulteert in het stoppen van verder verkeer naar het eindpunt. Met deze waarde kunnen eindpunten sneller of langzamer worden verwijderd dan de gebruikelijke tijden die in Azure worden gebruikt (dit zijn de standaardwaarden).

De standaardwaarde is 31. De minimumwaarde is 11.

Zie ook

Definitieschema voor cloudservice (uitgebreide ondersteuning).