Równoważenie obciążenia na serwerach backendu

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

Apigee Edge zwiększa dostępność interfejsu API, zapewniając wbudowaną obsługę wczytywania zrównoważenie i przełączanie awaryjne między wieloma instancjami serwera backendu.

Konfiguracje serwera docelowego odłączając konkretne adresy URL punktów końcowych od punktu docelowego konfiguracji. Do każdego serwera docelowego odwołuje się nazwa w docelowym punkcie końcowym HTTPConnection. Zamiast definiować w konfiguracji konkretny adres URL, lub więcej nazwanych serwerów docelowych zgodnie z opisem w sekcji TargetEndpoint (Punkt końcowy).

Definicja serwera docelowego składa się z nazwy, hosta i portu oraz dodatkowego elementu wskazują, czy serwer docelowy jest włączony czy wyłączony.

Filmy

Obejrzyj te filmy, aby dowiedzieć się więcej o routingu i równoważeniu obciążenia interfejsu API za pomocą wartości docelowej serwery

Wideo Opis
Równoważenie obciążenia przy użyciu serwerów docelowych Interfejsy API równoważenia obciążenia na serwerach docelowych.
Oparty na routingu API w środowisku wykorzystującym serwery docelowe kierować interfejs API na inny serwer docelowy w zależności od środowiska,
Routing API równoważenie obciążenia z użyciem serwerów docelowych (Classic Edge) Kieruj interfejs API do innego serwera docelowego na podstawie środowiska i równoważenia obciążenia API na serwerach docelowych w interfejsie Classic Edge.

Przykładowa konfiguracja serwera docelowego

Ten kod określa serwer docelowy:

<TargetServer  name="target1">
  <Host>1.mybackendservice.com</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer >

Elementy konfiguracji serwera docelowego

W poniższej tabeli opisano elementy używane do tworzenia i konfigurowania serwera docelowego:

Nazwa Opis Domyślny Wymagana?
name Nazwa konfiguracji serwera docelowego, która musi być unikalna w obrębie dla środowiska. Nazwa serwera docelowego może zawierać tylko znaki alfanumeryczne. Nie dotyczy Tak
Host

Adres URL hosta usługi backendu (bez protokołu).

Nie dotyczy Tak
Port Port, na którym nasłuchuje usługa backendu Nie dotyczy Tak
IsEnabled Wartość logiczna wskazująca, czy konfiguracja serwera docelowego jest włączona czy wyłączona. Umożliwia to wyłączenie serwerów docelowych z rotacji bez zmiany serwera proxy interfejsu API. konfiguracji. Typowym zastosowaniem jest napisanie aplikacji lub skryptu do włączania i wyłączania funkcji Serwery docelowe automatycznie opierają się na oczekiwanych wymaganiach w zakresie mocy obliczeniowej, harmonogramach konserwacji, ip. true Tak

Zarządzanie serwerami docelowymi za pomocą interfejsu użytkownika

Zarządzaj serwerami docelowymi w sposób opisany poniżej.

Edge

Aby zarządzać serwerami docelowymi za pomocą interfejsu Edge:

  1. Zaloguj się na stronie apigee.com/edge.
  2. Wybierz Administracja > Środowiska > Serwery docelowe na pasku nawigacyjnym po lewej stronie.
  3. Wybierz odpowiednie środowisko, na przykład test lub prod.
  4. Aby utworzyć serwer docelowy:
    1. Kliknij + Serwer docelowy.
    2. Wpisz nazwę, hosta i port serwera docelowego.

      Na przykład:

      • Nazwa:cel1
      • Host: 1.mybackendservice.com
      • Port: 80
    3. W razie potrzeby wybierz SSL.
    4. Kliknij Włączono, aby włączyć serwer docelowy.
    5. Kliknij Dodaj.
  5. Aby edytować serwer docelowy:
    1. Najedź kursorem na serwer docelowy, który chcesz edytować, aby wyświetlić menu czynności.
    2. Kliknij .
    3. Edytuj docelowe wartości serwera.
    4. Kliknij Aktualizuj.
  6. Aby usunąć serwer docelowy:
    1. Najedź kursorem na serwer docelowy, który chcesz usunąć, aby wyświetlić menu czynności.
    2. Kliknij .
    3. Kliknij Usuń, aby potwierdzić operację.

Classic Edge (Private Cloud)

Aby uzyskać dostęp do kreatora tworzenia serwera proxy w interfejsie klasycznej wersji Edge:

  1. Zaloguj się w aplikacji http://ms-ip:9000, gdzie ms-ip to adres Adres IP lub nazwa DNS węzła serwera zarządzania.
  2. Wybierz Interfejsy API > Konfiguracja środowiska > Serwery docelowe na pasku nawigacyjnym po lewej stronie.
  3. Wybierz odpowiednie środowisko, na przykład test lub prod.
  4. Aby utworzyć serwer docelowy:
    1. Kliknij Edytuj.
    2. Kliknij + Serwer docelowy.
    3. Wpisz nazwę, hosta i port serwera docelowego.

      Na przykład:

      • Nazwa:cel1
      • Host: 1.mybackendservice.com
      • Port: 80
    4. Kliknij Włączono, aby włączyć serwer docelowy.
    5. Kliknij Zapisz.
  5. Aby edytować serwer docelowy:
    1. Kliknij Edytuj.
    2. Edytuj docelowe wartości serwera.
    3. Kliknij Zapisz.
  6. Aby usunąć serwer docelowy:
    1. Kliknij Edytuj.
    2. Kliknij Usuń.

Zarządzanie serwerami docelowymi za pomocą interfejsu API

Za pomocą interfejsu Edge API możesz tworzyć, usuwać, aktualizować, pobierać i wyświetlać serwery docelowe. Dla: więcej informacji znajdziesz w sekcji TargetServers (Serwery docelowe).

Aby utworzyć serwer docelowy, użyj tego wywołania interfejsu API:

$ curl -H "Content-Type:text/xml" -X POST -d \
'<TargetServer name="target1">
   <Host>1.mybackendservice.com</Host>
   <Port>80</Port>
   <IsEnabled>true</IsEnabled>
 </TargetServer>' \
-u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers

Przykładowa odpowiedź:

{
  "host" : "1.mybackendservice.com",
  "isEnabled" : true,
  "name" : "target1",
  "port" : 80
}

Po utworzeniu pierwszego serwera docelowego użyj poniższego wywołania interfejsu API, aby utworzyć drugi serwer docelowy. Definiując 2 serwery docelowe, podajesz 2 adresy URL, których element TargetEndpoint może używać do równoważenia obciążenia:

$ curl -H "Content-type:text/xml" -X POST -d \
'<TargetServer  name="target2">
  <Host>2.mybackendservice.com</Host>
  <Port>80</Port>
  <IsEnabled>true</IsEnabled>
</TargetServer >' \
-u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers

Przykładowa odpowiedź:

{
  "host" : "2.mybackendservice.com",
  "isEnabled" : true,
  "name" : "target2",
  "port" : 80
}

Aby pobrać listę serwerów docelowych w środowisku, użyj tego wywołania interfejsu API:

$ curl -u email:password https://api.enterprise.apigee.com/v1/o/{org_name}/environments/test/targetservers

Przykładowa odpowiedź:

[ "target2", "target1" ]

Serwery docelowe API wdrożone w teście mogą teraz używać 2 serwerów docelowych dla środowiska. Aby równoważyć obciążenie ruchu między tymi serwerami docelowymi, skonfigurujesz w docelowym punkcie końcowym serwera proxy interfejsu API w celu użycia serwerów docelowych.

Obowiązuje limit 500 serwerów docelowych na środowisko, omówione w temacie Limity.

Konfigurowanie Docelowy punkt końcowy do równoważenia obciążenia na nazwanych serwerach docelowych

Gdy masz już dwa serwery docelowe, możesz zmodyfikować połączenia, aby móc odwoływać się do tych dwóch serwerów docelowych według nazwy:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <LoadBalancer>
      <Server name="target1" />
      <Server name="target2" />
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

Powyższa konfiguracja to najbardziej podstawowa konfiguracja równoważenia obciążenia. Obciążenie System równoważenia obciążenia obsługuje 3 algorytmy równoważenia obciążenia: Round Robin, Ważony i Najmniej połączenia. Domyślny algorytm to system kołowy. W powyższej konfiguracji nie określono żadnego algorytmu, żądania wychodzące z serwera proxy interfejsu API do serwerów backendu będą naprzemienne, jedna za drugą, cel1 i cel 2.

Element <Path> tworzy ścieżkę bazową identyfikatora URI TargetEndpoint dla wszystkich serwerów docelowych. Jest używane tylko wtedy, gdy jest używana zasada <LoadBalancer>. W przeciwnym razie jest ignorowany. W powyższym przykładzie żądanie docierające do celu „target1” zostanie http://target1/test itd. w przypadku innych serwerów docelowych.

Ustawianie opcji systemu równoważenia obciążenia

Dostępność możesz dostosować, używając opcji równoważenia obciążenia i przełączania awaryjnego podczas wczytywania na poziomie systemu systemu równoważenia obciążenia i serwera docelowego. W tej sekcji opisano te opcje.

Algorytm

Ustawia algorytm używany przez funkcję <LoadBalancer>. Dostępne algorytmy to RoundRobin, Weighted i LeastConnections, Każdy z nich jest opisany poniżej.

Algorytm karuzelowy

Domyślny algorytm (rota robin) przekazuje żądanie do każdego serwera docelowego w kolejności które serwery są wymienione w połączeniu HTTP z docelowym punktem końcowym. Na przykład:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
      </LoadBalancer>
      <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

Ważona

Algorytm równoważenia obciążenia umożliwia skonfigurowanie proporcjonalnych obciążeń dla serwerów docelowych. Ważony system równoważenia obciążenia rozdziela żądanie na serwery docelowe bezpośrednio proporcjonalną do wagi każdego serwera docelowego. Dlatego algorytm ważony wymaga ustawienia atrybut weight dla każdego serwera docelowego. Na przykład:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
    <LoadBalancer>
      <Algorithm>Weighted</Algorithm>
      <Server name="target1">
        <Weight>1</Weight>
      </Server>
      <Server name="target2">
        <Weight>2</Weight>
      </Server>
    </LoadBalancer>
    <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

W tym przykładzie w przypadku każdego żądania przekierowanego do lokalizacji target2 2 żądania zostaną przekierowane do cel1.

Najmniejszy kontakt

Systemy równoważenia obciążenia skonfigurowane w taki sposób, aby używać jak najmniejszego algorytmu połączeń, kierują żądania wychodzące do Serwer docelowy z najmniejszą liczbą otwartych połączeń HTTP. Na przykład:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>LeastConnections</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
      </LoadBalancer>
  </HTTPTargetConnection>
  <Path>/test</Path>
</TargetEndpoint>

Maksymalna liczba błędów

Maksymalna liczba nieudanych żądań z serwera proxy interfejsu API do serwera docelowego, które zakończyły się wynikiem gdy żądanie jest przekierowywane do innego serwera docelowego.

Błąd odpowiedzi oznacza, że Apigee nie otrzymuje odpowiedzi z serwera docelowego. Kiedy tak się dzieje, licznik błędów zwiększa się o 1.

Jednak gdy Apigee otrzyma odpowiedź od celu, nawet jeśli odpowiedź to błąd HTTP (np. 500), liczy się to jako odpowiedź z na serwerze docelowym, a licznik błędów zostanie zresetowany. Aby mieć pewność, że nieprawidłowe odpowiedzi HTTP (np. 500) zwiększa też licznik błędów, aby usunąć serwer w złym stanie. systemu równoważenia obciążenia możesz dodać parę klucz-wartość <ServerUnhealthyResponse> element z wartością <ResponseCode> elementów podrzędnych do konfiguracji systemu równoważenia obciążenia. Edge będzie też liczyć odpowiedzi z tymi jako błędów.

W poniższym przykładzie pole target1 zostanie usunięte z rotacji po 5. nieudanych żądań, w tym niektórych odpowiedzi 5XX z serwera docelowego.

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
        <MaxFailures>5</MaxFailures>
        <ServerUnhealthyResponse>
            <ResponseCode>500</ResponseCode>
            <ResponseCode>502</ResponseCode>
            <ResponseCode>503</ResponseCode>
        </ServerUnhealthyResponse>
      </LoadBalancer>
      <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

Wartość domyślna MaxFailures to 0. Oznacza to, że Edge zawsze próbuje nawiązywać połączenia z miejscem docelowym w przypadku każdego żądania i nigdy nie usuwa serwera docelowego z rotacji.

Najlepiej jest używać MaxFailures > 0 z HealthMonitor. Jeśli skonfigurujesz MaxFailures > 0, serwer docelowy zostanie usunięty z rotacji gdy cel nie powiedzie się we wskazanej przez Ciebie liczbie. Gdy HealthMonitor jest dostępny, Apigee automatycznie umieszcza Serwer docelowy z powrotem w rotacji po uruchomieniu środowiska docelowego zgodnie z konfigurację HealthMonitor. Zobacz Monitorowanie zdrowia .

Możesz też skonfigurować MaxFailures > 0, a Ty nie skonfigurujesz HealthMonitor, Apigee nie uwzględni ponownie serwera docelowego w rotacji automatycznie, gdy Apigee wykryje błąd. W tym przypadku musisz wdrożyć ponownie serwer proxy API, zanim Apigee umieści serwer docelowy z powrotem i rotacji. Zobacz Wdrażanie serwera proxy interfejsu API.

Spróbuj ponownie

Jeśli włączone jest ponawianie, żądanie będzie ponawiane w przypadku niepowodzenia odpowiedzi (błąd wejścia-wyjścia lub przekroczenia limitu czasu HTTP). lub otrzymana odpowiedź pasuje do wartości ustawionej przez <ServerUnhealthyResponse>. Więcej informacji o ustawianiu znajdziesz w sekcji Maksymalna liczba błędów powyżej. <ServerUnhealthyResponse>

Domyślnie <RetryEnabled> ma wartość true. Aby wyłączyć ponawianie próby, ustaw wartość false. Na przykład:

<RetryEnabled>false</RetryEnabled>

IsFallback

Jeden (i tylko jeden) serwer docelowy można ustawić jako serwer zastępczy serwera. Zastępczy serwer docelowy nie jest uwzględniany w procedurach równoważenia obciążenia, dopóki wszystkie inne serwery docelowe nie zostaną zidentyfikowane jako niedostępne przez system równoważenia obciążenia. Gdy system równoważenia obciążenia określi, że wszystkie serwery docelowe niedostępny, cały ruch jest kierowany na serwer zastępczy. Na przykład:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
        <Server name="target3">
          <IsFallback>true</IsFallback>
        </Server>
      </LoadBalancer>
      <Path>/test</Path>
  </HTTPTargetConnection>
</TargetEndpoint>

Powyższa konfiguracja powoduje równoważenie obciążenia w modelu „round robin” między celami 1 i 2 do momentu oba cele 1 i 2 są niedostępne. Gdy cele 1 i 2 są niedostępne, cały ruch jest kierowany do kierowania reklam. 3.

Ścieżka

Ścieżka definiuje fragment identyfikatora URI, który będzie dołączany do wszystkich żądań wysyłanych przez serwer docelowy do serwera backendu.

Ten element akceptuje ścieżkę ciągu tekstowego literału lub szablon wiadomości. Wiadomość umożliwia zastępowanie ciągów zmiennych w czasie działania. Na przykład w tej definicji docelowego punktu końcowego dla ścieżki używana jest wartość {mypath}:

<HTTPTargetConnection>
    <SSLInfo>
      <Enabled>true</Enabled>
    </SSLInfo>
    <LoadBalancer>
      <Server name="testserver"/>
    </LoadBalancer>
    <Path>{mypath}</Path>
</HTTPTargetConnection>

Konfigurowanie serwera docelowego dla TLS/SSL

Jeśli do definiowania usługi backendu używasz serwera docelowego, a usługa backendu wymaga, aby połączenie korzystało z protokołu HTTPS, musisz włączyć TLS/SSL w Definicja serwera docelowego. Jest to konieczne, ponieważ tag <Host> nie pozwala Ci określ protokół połączenia. Poniżej znajduje się definicja serwera docelowego dla połączenia jednokierunkowego Protokół TLS/SSL, gdy Edge wysyła żądania HTTPS do usługi backendu:

<TargetServer name="target1">
  <Host>mocktarget.apigee.net</Host>
  <Port>443</Port>
  <IsEnabled>true</IsEnabled>
  <SSLInfo>
      <Enabled>true</Enabled>
  </SSLInfo> 
</TargetServer>

Jeśli usługa backendu wymaga dwukierunkowego lub wzajemnego protokołu TLS/SSL, skonfigurujesz serwer docelowy przy użyciu tych samych ustawień konfiguracji TLS/SSL co w TargetEndpoints:

<TargetServer  name="TargetServer 1">
    <IsEnabled>true</IsEnabled>
    <Host>www.example.com</Host>
    <Port>443</Port>
    <SSLInfo>
        <Ciphers/>
        <ClientAuthEnabled>true</ClientAuthEnabled>
        <Enabled>true</Enabled>
        <IgnoreValidationErrors>false</IgnoreValidationErrors>
        <KeyAlias>keystore-alias</KeyAlias>
        <KeyStore>keystore-name</KeyStore>
        <Protocols/>
        <TrustStore>truststore-name</TrustStore>
    </SSLInfo>
</TargetServer >

Informacje na temat właściwości <SSLInfo>, takich jak: <Ciphers> i <ClientAuthEnabled>, zobacz Więcej informacji na temat konfigurowania tych właściwości dla hosta wirtualnego znajdziesz w artykule Konfigurowanie dostępu TLS do interfejsu API dla chmury Private Cloud.

Pełne instrukcje konfigurowania wychodzących protokołu TLS/SSL znajdziesz w artykule Konfigurowanie TLS z Edge do backendu (Cloud i Private Cloud).

Schemat serwera docelowego

Zobacz schemat serwera docelowego i innych encji w GitHub.

Monitorowanie zdrowia

Monitorowanie stanu umożliwia ulepszenie konfiguracji równoważenia obciążenia przez aktywne odpytywanie URL-e usługi backendu zdefiniowane w konfiguracjach serwera docelowego. Po włączeniu monitorowania stanu niesprawny serwer docelowy zostanie automatycznie przywrócony do rotacji po określeniu przez HealthMonitor że serwer docelowy jest aktywny.

Monitorowanie zdrowia współpracuje z aplikacją <MaxFailures>. Bez włączonego monitorowania stanu <MaxFailures> określa liczbę nieudanych żądań z serwera proxy interfejsu API do Serwer docelowy, który powoduje przekierowanie żądania do innego serwera docelowego. Awaria serwera docelowego zostanie wycofana z rotacji do czasu ponownego wdrożenia serwera proxy.

Gdy monitorowanie stanu jest włączone, uszkodzony serwer docelowy jest automatycznie przywrócony do rotacji bez serwera proxy ponownych wdrożeń są wymagane.

HealthMonitor działa jak prosty klient, który wywołuje usługę backendu przez TCP lub HTTP:

  • Klient TCP po prostu zapewnia możliwość otwarcia gniazda.
  • Konfigurujesz klienta HTTP tak, aby przesyłał prawidłowe żądanie HTTP do usługi backendu. Ty mogą zdefiniować operacje HTTP GET, PUT, POST i DELETE. Odpowiedź wywołania monitorowania HTTP musi być zgodna z skonfigurowane ustawienia w bloku <SuccessResponse>.

Czynności zakończone powodzeniem i niepowodzeniem

Gdy włączysz monitorowanie stanu, Edge rozpocznie wysyłanie kontroli stanu do środowiska docelowego. serwera. Kontrola stanu to żądanie wysyłane do serwera docelowego, które określa, czy czy serwer docelowy jest sprawny.

Kontrola stanu może przynieść jeden z dwóch wyników:

  • Sukces: jeśli stan serwera docelowego przebiegnie pomyślnie, uznaje się, że serwer docelowy jest sprawny. Zazwyczaj jest to spowodowane co najmniej jednym z tych problemów:
    • Serwer docelowy akceptuje nowe połączenie z określonym portem, odpowiada na żądanie z tego portu, a następnie zamyka ten port w określonym przedziale czasu. Odpowiedź z serwera docelowego zawiera tekst „Connection: close” (Połączenie: zamknij)
    • Serwer docelowy odpowiada na żądanie kontroli stanu, wysyłając kod stanu 200 (OK) lub inny kod stanu HTTP, który uznajesz za akceptowalny.
    • Serwer docelowy odpowiada na żądanie kontroli stanu, wysyłając wiadomość, która jest zgodna z jej oczekiwaną treścią.

    Gdy Edge ustali, że serwer jest sprawny, Edge kontynuuje lub wznawia wysyłanie żądań.

  • Błąd:serwer docelowy może nie przejść kontroli stanu na różne sposoby, w zależności od typu weryfikacji. Niepowodzenie może być rejestrowane, gdy serwer docelowy:
    • Odmawia połączenia między Edge a portem kontroli stanu.
    • Nie odpowiada na żądanie kontroli stanu w określonym czasie.
    • Zwraca nieoczekiwany kod stanu HTTP.
    • Treść wiadomości jest niezgodna z jej oczekiwaną treścią.

    Gdy serwer docelowy nie przejdzie kontroli stanu, Edge zwiększa liczbę błędów tego serwera. Jeśli liczba niepowodzeń tego serwera osiągnie lub przekracza wstępnie zdefiniowany próg; (<MaxFailures>), Edge przestanie wysyłać żądania do tego serwera.

Włączanie monitorowania stanu

Aby utworzyć HealthMonitor, dodaj element <HealthMonitor> do interfejsu HTTPConnection docelowego punktu końcowego dla serwera proxy. Nie można tego zrobić w interfejsie użytkownika. Zamiast tego musisz utworzyć konfigurację proxy przesłać do Edge jako plik ZIP. Konfiguracja serwera proxy to uporządkowany opis wszystkich aspektów serwera proxy API. Konfiguracje serwera proxy składają się z plików XML we wstępnie zdefiniowanej strukturze katalogów. Więcej informacje znajdziesz w sekcji Serwer proxy interfejsu API: Dokumentacja konfiguracji.

Prosty HealthMonitor definiuje IntervalInSec w połączeniu z TCPMonitor lub HTTPMonitor. Element <MaxFailures> określa maksimum liczba nieudanych żądań z serwera proxy interfejsu API do serwera docelowego, które zakończyły się wykonaniem żądania zostanie przekierowany do innego serwera docelowego. Domyślnie <MaxFailures> ma wartość 0, co oznacza, że Edge nie wykonuje żadnych działań naprawczych. Konfigurując monitor stanu, upewnij się, że ustawiono <MaxFailures> w: Tag <HTTPTargetConnection> tagu <TargetEndpoint> na wartość inną niż zero.

TCPMonitor

Poniższa konfiguracja definiuje HealthMonitor, który odpytuje każdy serwer docelowy, otwierając i połączenie z portem 80 co pięć sekund. (Port jest opcjonalny. Jeśli nie określono tego portu, port TCPMonitor to port serwera docelowego).

  • Jeśli nie uda się nawiązać połączenia lub trwa ono dłużej niż 10 sekund, wtedy wyświetla się liczba niepowodzeń. zwiększa się o 1 dla danego serwera docelowego.
  • Jeśli uda się nawiązać połączenie, liczba błędów serwera docelowego zostanie zresetowana do 0.

Możesz dodać HealthMonitor jako element potomny połączenia HTTPTargetEndpoint z docelowym punktem końcowym tak jak poniżej:

<TargetEndpoint name="default">
  <HTTPTargetConnection>
      <LoadBalancer>
        <Algorithm>RoundRobin</Algorithm>
        <Server name="target1" />
        <Server name="target2" />
        <MaxFailures>5</MaxFailures>
      </LoadBalancer>
      <Path>/test</Path>
      <HealthMonitor>
        <IsEnabled>true</IsEnabled>
        <IntervalInSec>5</IntervalInSec>
        <TCPMonitor>
            <ConnectTimeoutInSec>10</ConnectTimeoutInSec>
            <Port>80</Port>
        </TCPMonitor>
      </HealthMonitor>
  </HTTPTargetConnection>
. . .

HealthMonitor z elementami konfiguracji TCPMonitor

W poniższej tabeli opisano elementy konfiguracji TCPMonitor:

Nazwa Opis Domyślny Wymagana?
IsEnabled Wartość logiczna, która włącza lub wyłącza HealthMonitor. fałsz Nie
IntervalInSec Wyrażony w sekundach przedział czasu między każdym odpytywaniem żądania TCP. 0 Tak
ConnectTimeoutInSec Czas, w którym musi zostać nawiązane połączenie z portem TCP, aby zostało uznane za . Brak połączenia w określonym czasie jest liczony jako błąd, co zwiększa liczbę błędów systemu równoważenia obciążenia dla serwera docelowego. 0 Tak
Port Opcjonalnie: Port, na którym zostanie nawiązane połączenie TCP. Jeśli nie podasz żadnej wartości, port TCPMonitor to port serwera docelowego. 0 Nie

HTTPMonitor

Przykładowy HealthMonitor, który korzysta z HTTPMonitor, prześle żądanie GET do backendu co pięć sekund. W przykładzie poniżej dodano nagłówek podstawowej autoryzacji HTTP do z prośbą o połączenie. Konfiguracja odpowiedzi definiuje ustawienia, które będą porównywane z rzeczywistymi ustawieniami z usługi backendu. W poniższym przykładzie oczekiwaną odpowiedzią jest HTTP kod odpowiedzi 200 i niestandardowy nagłówek HTTP ImOK, którego wartość to YourOK Jeśli odpowiedź nie będzie zgodna, żądanie zostanie potraktowane jako nieudane. przez konfigurację systemu równoważenia obciążenia.

HTTPMonitor obsługuje usługi backendu skonfigurowane pod kątem użycia HTTP i jednokierunkowego protokołu HTTPS protokoły API. Nie obsługuje on jednak:

  • Dwukierunkowa protokół HTTPS (zwana też dwukierunkowym TLS/SSL),
  • podpisane samodzielnie,

Pamiętaj, że wszystkie ustawienia żądań i odpowiedzi w monitorze HTTP będą specyficzne dla usługi backendu, którą trzeba wywołać.

    <HealthMonitor>
      <IsEnabled>true</IsEnabled>
      <IntervalInSec>5</IntervalInSec>
      <HTTPMonitor>
        <Request>
          <IsSSL>true</IsSSL>
          <ConnectTimeoutInSec>10</ConnectTimeoutInSec>
          <SocketReadTimeoutInSec>30</SocketReadTimeoutInSec>
          <Port>80</Port>
          <Verb>GET</Verb>
          <Path>/healthcheck</Path>
          <Header name="Authorization">Basic 12e98yfw87etf</Header>
          <IncludeHealthCheckIdHeader>true</IncludeHealthCheckIdHeader>
        </Request>
        <SuccessResponse>
          <ResponseCode>200</ResponseCode>
          <Header name="ImOK">YourOK</Header>
        </SuccessResponse>
      </HTTPMonitor>
    </HealthMonitor>
    

HealthMonitor z elementami konfiguracji HTTPMonitor

W poniższej tabeli opisano elementy konfiguracji HTTPMonitor:

Nazwa Opis Domyślny Wymagana?
IsEnabled Wartość logiczna, która włącza lub wyłącza HealthMonitor. fałsz Nie
IntervalInSec Wyrażony w sekundach przedział czasu między poszczególnymi żądaniami odpytywania. 0 Tak
Request

Opcje konfiguracji dla wiadomości żądania wychodzącego wysyłanej przez HealthMonitor do serwerów docelowych w rotacji.

Ścieżka nie obsługuje zmiennych.

Nie dotyczy Tak
IsSSL Określa, czy do monitorowania połączeń ma być używany protokół HTTPS (bezpieczny HTTP).

Potencjalne wartości:
  • true: używane są HTTPS.
  • false: używany jest protokół HTTP.
  • Nie określono: używa konfiguracji serwera docelowego.
fałsz Nie
ConnectTimeoutInSec Czas (w sekundach), w którym musi nastąpić uzgadnianie połączenia TCP z usługą HTTP można uznać za sukces. Brak połączenia w określonym czasie jest liczony jako błąd, zwiększając liczbę błędów systemu równoważenia obciążenia na serwerze docelowym. 0 Nie
SocketReadTimeoutInSec Czas (w sekundach), w którym muszą być odczytywane dane z usługi HTTP, aby zostały uznane za . Brak odczytu w określonym czasie jest liczony jako błąd, co zwiększa Liczba błędów systemu równoważenia obciążenia dla serwera docelowego. 0 Nie
Port Port, na którym zostanie nawiązane połączenie HTTP z usługą backendu. Nie dotyczy Nie
Verb Czasownik HTTP używany w przypadku każdego odpytywania żądania HTTP do usługi backendu . Nie dotyczy Nie
Path Ścieżka dołączana do adresu URL zdefiniowanego na serwerze docelowym. Użycie elementu ścieżki skonfigurować „punkt końcowy ankiety” w usłudze HTTP. Nie dotyczy Nie

IncludeHealthCheckIdHeader

Możliwości: w celu śledzenia żądań kontroli stanu w systemach nadrzędnych. IncludeHealthCheckIdHeader pobiera wartość logiczną, a funkcja domyślna wartość to false. Jeśli ustawisz wartość true, jest: Header o nazwie X-Apigee-Healthcheck-Id który otrzymuje wstrzyknięty do żądania kontroli stanu. Wartość nagłówka to jest przypisywany dynamicznie i przyjmuje postać ORG/ENV/SERVER_UUID/N, gdzie ORG to nazwa organizacji, ENV to nazwa środowiska, SERVER_UUID to unikalny identyfikator identyfikujący MP oraz N to liczba milisekund, które upłynęły od 1 stycznia 1970 roku.

Przykładowy nagłówek żądania:

X-Apigee-Healthcheck-Id: orgname/envname/E8C4D2EE-3A69-428A-8616-030ABDE864E0/1586802968123
fałsz Nie
Payload Treść HTTP generowana dla każdego odpytywania żądania HTTP. Zwróć uwagę, że ten element nie jest wymagane dla żądań GET. Nie dotyczy Nie
SuccessResponse Opcje dopasowania wiadomości przychodzącej odpowiedzi HTTP wygenerowanej przez ankietowany backend posprzedażna. Odpowiedzi, które nie są zgodne, zwiększają liczbę niepowodzeń o 1. Nie dotyczy Nie
ResponseCode Oczekiwany kod odpowiedzi HTTP, który powinien zostać odebrany z ankietowanego serwera docelowego. kod, nie musi być zgodny z podanym kodem, co powoduje błąd, a naliczanie kolejnych wartości z użyciem odpytanej usługi backendu. Możesz zdefiniować wiele elementów ResponseCode. Nie dotyczy Nie
Headers Lista co najmniej 1 nagłówka HTTP i wartości, które powinny zostać odebrane z ankietowanego źródła i usług backendu. jakiekolwiek nagłówki HTTP lub wartości w odpowiedzi, które różnią się od tych; zakończy się niepowodzeniem, a liczba ankietowanych serwerów docelowych będzie zwiększana o 1. Możesz zdefiniować wiele elementów Header. Nie dotyczy Nie