Przeglądasz dokumentację Apigee Edge.
Przejdź do
Dokumentacja Apigee X. informacje.
Konfiguracja docelowego punktu końcowego określa sposób, w jaki Apigee Edge łączy się z usługi backendu lub interfejsu API. Wysyła żądania i otrzymuje odpowiedzi do/z z usługi backendu. Usługa backendu może być serwerem HTTP/HTTPS, NodeJS lub hostowanym miejscem docelowym.
Usługę backendu w docelowym punkcie końcowym można wywołać na jeden z tych sposobów:
- Bezpośredni URL do serwera HTTP lub HTTPS
- ScriptTarget na skrypt Node.js hostowany na serwerach brzegowych
- HostedTarget w Node.js wdrożonym w hostowanym środowisku docelowym
- Konfiguracja serwera docelowego
Podobnie zasad dotyczących objaśnień dotyczących usługi można używać do wywoływania dowolnej usługi zewnętrznej. z procesu API serwera proxy. Ta zasada obsługuje definiowanie docelowych adresów URL HTTP/HTTPS zarówno bezpośrednio w samej zasadzie lub za pomocą konfiguracji serwera docelowego.
Konfiguracja serwera docelowego
Konfiguracja serwera docelowego oddziela konkretne adresy URL punktów końcowych od Konfiguracje docelowego punktu końcowego lub w zasadach dotyczących wywołań usługi. Serwer docelowy to do którego odwołuje się nazwa zamiast adresu URL w docelowym punkcie końcowym. Konfiguracja serwera docelowego zawiera nazwę hosta usługi backendu, numer portu i inne szczegóły.
Przykładowa konfiguracja serwera docelowego:
<TargetServer name="target1"> <Host>www.mybackendservice.com</Host> <Port>80</Port> <IsEnabled>true</IsEnabled> </TargetServer>
Serwer docelowy umożliwia stosowanie różnych konfiguracji dla każdego środowiska. Zasadę docelowego punktu końcowego/objaśnienia usługi można skonfigurować za pomocą co najmniej 1 serwera docelowego o nazwie za pomocą systemu LoadBalancer. Wbudowana obsługa równoważenia obciążenia zwiększa dostępność interfejsów API i przełączania awaryjnego między skonfigurowanymi instancjami serwera backendu.
Oto przykładowa konfiguracja elementu docelowego punktu końcowego przy użyciu serwerów docelowych:
<TargetEndpoint name="default"> <HTTPTargetConnection>> <LoadBalancer> <Server name="target1"/> <Server name="target2"/> </LoadBalancer> </HTTPTargetConnection> </TargetEndpoint>
MaxFailures
Konfiguracja MaxFailures
określa maksymalną liczbę nieudanych żądań
do serwera docelowego, po którym serwer docelowy zostanie oznaczony jako wyłączony i usunięty
z rotacji w przypadku wszystkich kolejnych żądań.
Przykładowa konfiguracja z parametrem MaxFailures
:
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Server name="target1"/> <Server name="target2"/> <MaxFailures>5</MaxFailures> </LoadBalancer> </HTTPTargetConnection> </TargetEndpoint>
W powyższym przykładzie, jeśli 5 kolejnych żądań nie udało się zrealizować żądania „target1” a następnie „target1” zostanie usunięty z rotacji, a wszystkie kolejne żądania będą wysyłane tylko do target2.
Antywzór
Jeden serwer docelowy w konfiguracji LoadBalancer
Zasada docelowego punktu końcowego lub objaśnienia usługi z wartością MaxFailures
ustawioną na
nie jest zalecana, ponieważ może mieć negatywne skutki.
Rozważ poniższą przykładową konfigurację z jednym serwerem docelowym
o nazwie „cel1” z wartością MaxFailures
ustawioną na 5 (wartość inna niż 0):
<TargetEndpoint name="default"> <HTTPTargetConnection> <LoadBalancer> <Algorithm>RoundRobin</Algorithm> <Server name="target1" /> <MaxFailures>5</MaxFailures> </LoadBalancer> </HTTPTargetConnection>
Jeśli żądania wysyłane do serwera docelowego „target1” nieudane 5 razy (liczba określona w polu MaxFailures
),
Serwer docelowy zostanie usunięty z rotacji. Nie ma żadnych innych serwerów docelowych, do których można przełączyć awaryjnie,
wszystkie kolejne żądania wysyłane do serwera proxy interfejsu API z tą konfiguracją zakończą się niepowodzeniem z
503 Service Unavailable
błąd.
Nawet jeśli serwer docelowy „target1” wraca do normalnego stanu i może po wysłaniu pomyślnych odpowiedzi żądania do serwera proxy interfejsu API będą nadal przesyłane zwracają błędy 503. Dzieje się tak, ponieważ Edge nie umieszcza automatycznie serwera docelowego z powrotem w rotacji, nawet gdy wartość docelowa jest ponownie aktywna. Aby rozwiązać ten problem, Musisz ponownie wdrożyć serwer proxy API, aby przeglądarka Edge mogła umieścić Serwer docelowy z powrotem do rotacji.
Jeśli w zasadzie dotyczącej wywołań usługi używana jest ta sama konfiguracja, interfejs API Po przesłaniu żądań do serwera docelowego „target1” żądania będą zwracały błąd 500 5 razy.
Wpływ
Jeden serwer docelowy w konfiguracji LoadBalancer
:
Zasada docelowego punktu końcowego lub objaśnienia usługi z wartością MaxFailures
ustawioną na wartość inną niż zero powoduje:
- Żądania do interfejsu API kończące się niepowodzeniem z błędami 503/500 w sposób ciągły (po przekroczeniu określonej liczby żądań w przypadku maksymalnej liczby błędów), aż do ponownego wdrożenia serwera proxy interfejsu API.
- Dłuższy czas przerwy w działaniu, ponieważ jest trudny, a zdiagnozowanie przyczyny tego problemu może potrwać dłużej (bez wcześniejszej wiedzy o tym antywzorcu).
Sprawdzona metoda
- Aby uzyskać większą dostępność, masz więcej niż 1 serwer docelowy w konfiguracji
LoadBalancer
. Zawsze definiuj monitorowanie zdrowia, gdy
MaxFailures
jest ustawiona na wartość inną niż zero. Serwer docelowy zostanie usunięty z rotacji, gdy liczba błędów osiągnie liczbę określoną w funkcjiMaxFailures
. Posiadanie Monitora stanu zapewnia, że serwer docelowy jest ponownie włączany do rotacji gdy tylko serwer docelowy będzie ponownie dostępny, co oznacza, że będzie nie trzeba ponownie wdrażać serwera proxy.Aby mieć pewność, że kontrola stanu jest wykonywana na tym samym numerze portu, Edge używa do łączenia się z serwerami docelowymi, Apigee zaleca pominięcie
<Port>
elementu podrzędnego w elemencie<TCPMonitor>
, chyba że jest inny niż port serwera docelowego. Domyślnie<Port>
jest taki sam jak port serwera docelowego.Przykładowa konfiguracja w HealthMonitor:
<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> </TCPMonitor> </HealthMonitor> </HTTPTargetConnection> </TargetEndpoint>
Jeśli istnieje jakieś ograniczenie, że tylko jeden serwer docelowy i HealthMonitor nie jest używany, nie określaj
MaxFailures
w konfiguracjiLoadBalancer
.Wartość domyślna parametru MaxFailures to 0. Oznacza to, że Edge zawsze próbuje połączyć się z miejscem docelowym w przypadku każdego żądania i nigdy nie usuwa serwera docelowego z rotacji.