Schemat loadBalancerProbe definicji usług Azure Cloud Services (wersja klasyczna)
Ważne
Usługi Cloud Services (wersja klasyczna) są teraz przestarzałe dla wszystkich klientów od 1 września 2024 r. Wszystkie istniejące uruchomione wdrożenia zostaną zatrzymane i zamknięte przez firmę Microsoft, a dane zostaną trwale utracone od października 2024 r. Nowe wdrożenia powinny używać nowego modelu wdrażania opartego na usłudze Azure Resource Manager w usługach Azure Cloud Services (wsparcie dodatkowe).
Sonda modułu równoważenia obciążenia to sonda kondycji zdefiniowana przez klienta punktów końcowych I punktów końcowych UDP w wystąpieniach ról. Element LoadBalancerProbe
nie jest autonomicznym elementem— jest połączony z rolą internetową lub rolą procesu roboczego w pliku definicji usługi. Więcej niż jedna rola może używać funkcji LoadBalancerProbe
.
Domyślnym rozszerzeniem pliku definicji usługi jest .csdef.
Funkcja sondy modułu równoważenia obciążenia
Usługa Azure Load Balancer jest odpowiedzialna za kierowanie ruchu przychodzącego do wystąpień ról. Moduł równoważenia obciążenia określa, które wystąpienia mogą odbierać ruch, regularnie sondując każde wystąpienie w celu określenia kondycji tego wystąpienia. Sondy modułu równoważenia obciążenia co wystąpienie wiele razy na minutę. Istnieją dwie różne opcje zapewnienia kondycji wystąpienia modułu równoważenia obciążenia — domyślna sonda modułu równoważenia obciążenia lub niestandardowa sonda modułu równoważenia obciążenia, która jest implementowana przez zdefiniowanie modułu LoadBalancerProbe w pliku csdef.
Domyślna sonda modułu równoważenia obciążenia korzysta z agenta gościa wewnątrz maszyny wirtualnej, która nasłuchuje i odpowiada za pomocą odpowiedzi HTTP 200 OK tylko wtedy, gdy wystąpienie jest w stanie Gotowe (na przykład gdy wystąpienie nie znajduje się w stanie Zajęty, Odtwarzanie, Zatrzymywanie itp.). Jeśli agent gościa nie odpowie przy użyciu protokołu HTTP 200 OK, usługa Azure Load Balancer oznaczy wystąpienie jako nieodpowiadujące i przestanie wysyłać ruch do tego wystąpienia. Usługa Azure Load Balancer nadal wysyła polecenie ping do wystąpienia, a jeśli agent gościa odpowie przy użyciu protokołu HTTP 200, usługa Azure Load Balancer ponownie wysyła ruch do tego wystąpienia. W przypadku korzystania z roli internetowej kod witryny internetowej zwykle jest uruchamiany w w3wp.exe, które nie są monitorowane przez sieć szkieletową platformy Azure i agenta gościa. Błędy w w3wp.exe (na przykład odpowiedzi HTTP 500) nie są zgłaszane do agenta gościa, a moduł równoważenia obciążenia nie wie, aby zabrać to wystąpienie z rotacji.
Niestandardowa sonda modułu równoważenia obciążenia zastępuje domyślną sondę agenta gościa i umożliwia utworzenie własnej logiki niestandardowej w celu określenia kondycji wystąpienia roli. Moduł równoważenia obciążenia regularnie sonduje punkt końcowy (domyślnie co 15 sekund). Wystąpienie jest brane pod uwagę w rotacji, jeśli odpowiada za pomocą protokołu TCP ACK lub HTTP 200 w okresie przekroczenia limitu czasu (domyślnie 31 sekund). Ten proces może być przydatny do zaimplementowania własnej logiki w celu usunięcia wystąpień z rotacji modułu równoważenia obciążenia (na przykład zwracanie stanu innego niż 200, jeśli wystąpienie jest powyżej 90% procesora CPU). W przypadku ról sieci Web korzystających z w3wp.exe ta konfiguracja oznacza również automatyczne monitorowanie witryny internetowej, ponieważ błędy w kodzie witryny internetowej zwracają stan inny niż 200 do sondy modułu równoważenia obciążenia. Jeśli nie zdefiniujesz elementu LoadBalancerProbe w pliku csdef, zostanie użyte domyślne zachowanie modułu równoważenia obciążenia (zgodnie z wcześniejszym opisem).
Jeśli używasz niestandardowej sondy modułu równoważenia obciążenia, upewnij się, że logika uwzględnia metodę RoleEnvironment.OnStop. Jeśli używasz domyślnej sondy modułu równoważenia obciążenia, wystąpienie jest wyjęte z rotacji przed wywołaniem onStop, ale niestandardowa sonda modułu równoważenia obciążenia może nadal zwracać 200 OK podczas zdarzenia OnStop. Jeśli używasz zdarzenia OnStop do czyszczenia pamięci podręcznej, zatrzymaj usługę lub w inny sposób wprowadź zmiany, które mogą mieć wpływ na zachowanie środowiska uruchomieniowego usługi, musisz upewnić się, że niestandardowa logika sondy modułu równoważenia obciążenia usuwa wystąpienie z rotacji.
Podstawowy schemat definicji usługi dla sondy modułu równoważenia obciążenia
Podstawowy format pliku definicji usługi zawierającego sondę modułu równoważenia obciążenia jest następujący.
<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>
Elementy schematu
Element LoadBalancerProbes
pliku definicji usługi zawiera następujące elementy:
LoadBalancerProbes, element
Element LoadBalancerProbes
opisuje kolekcję sond modułu równoważenia obciążenia. Ten element jest elementem nadrzędnym elementu LoadBalancerProbe.
LoadBalancerProbe, element
Element LoadBalancerProbe
definiuje sondę kondycji dla modelu. Można zdefiniować wiele sond modułu równoważenia obciążenia.
W poniższej tabeli opisano atrybuty LoadBalancerProbe
elementu:
Atrybut | Type | Opis |
---|---|---|
name |
string |
Wymagane. Nazwa sondy modułu równoważenia obciążenia. Nazwa musi być unikatowa. |
protocol |
string |
Wymagany. Określa protokół punktu końcowego. Możliwe wartości to http lub tcp . Jeśli tcp zostanie określony, odebrane ACK jest wymagane, aby sonda zakończyła się pomyślnie. Jeśli http zostanie określona, odpowiedź 200 OK z określonego identyfikatora URI jest wymagana, aby sonda zakończyła się pomyślnie. |
path |
string |
Identyfikator URI używany do żądania stanu kondycji z maszyny wirtualnej. path wartość jest wymagana, jeśli protocol jest ustawiona wartość http . W przeciwnym razie nie jest to dozwolone.Nie ma wartości domyślnej. |
port |
integer |
Opcjonalny. Port do komunikowania sondy. Ten atrybut jest opcjonalny dla dowolnego punktu końcowego, ponieważ ten sam port jest używany dla sondy. Można również skonfigurować inny port na potrzeby sondowania. Możliwe wartości wahają się od 1 do 65535 włącznie. Wartość domyślna ustawiona przez punkt końcowy. |
intervalInSeconds |
integer |
Opcjonalny. Interwał w sekundach określa, jak często sondować punkt końcowy pod kątem stanu kondycji. Zazwyczaj interwał jest nieco krótszy niż połowa przydzielonego limitu czasu (w sekundach), który umożliwia wykonanie dwóch pełnych sond przed rozpoczęciem wystąpienia poza rotacją. Wartość domyślna to 15. Wartość minimalna to 5. |
timeoutInSeconds |
integer |
Opcjonalny. Limit czasu stosowany w sekundach do sondy, w której żadna odpowiedź nie powoduje zatrzymania dalszego ruchu z dostarczenia do punktu końcowego. Ta wartość umożliwia wyjęcie punktów końcowych z rotacji szybciej lub wolniej niż typowe czasy używane na platformie Azure (które są wartościami domyślnymi). Wartość domyślna to 31. Wartość minimalna to 11. |