Udostępnij za pośrednictwem


Niestandardowa sonda kondycji dla usługi Application Gateway dla kontenerów

Usługa Application Gateway dla kontenerów domyślnie monitoruje kondycję wszystkich obiektów docelowych zaplecza. Ponieważ obiekty docelowe zaplecza stają się w dobrej kondycji lub są w złej kondycji, usługa Application Gateway dla kontenerów dystrybuuje ruch tylko do punktów końcowych w dobrej kondycji.

Oprócz korzystania z domyślnego monitorowania sondy kondycji można również dostosować sondę kondycji do wymagań aplikacji. W tym artykule omówiono zarówno domyślne, jak i niestandardowe sondy kondycji.

Kolejność i logika sondowania kondycji są następujące:

  1. Użyj definicji zasobu niestandardowego HealthCheckPolicy (CR).
  2. Jeśli nie ma wartości HealthCheckPolicy CR, użyj sondy gotowości
  3. Jeśli nie zdefiniowano sondy gotowości, użyj domyślnej sondy kondycji

Następujące właściwości składają się na niestandardowe sondy kondycji:

Właściwości Wartość domyślna
interval Częstotliwość wysyłania sond kondycji w sekundach do obiektu docelowego zaplecza. Minimalny interwał musi wynosić > 0 sekund.
timeout Jak długo w sekundach żądanie powinno czekać, aż zostanie oznaczone jako błąd. Minimalny interwał musi wynosić > 0 sekund.
healthyThreshold Liczba sond kondycji przed oznaczeniem docelowego punktu końcowego w dobrej kondycji. Minimalny interwał musi wynosić > 0.
port Numer portu używany podczas sondowania obiektu docelowego zaplecza.
zła kondycjaThreshold Liczba sond kondycji, które mają zakończyć się niepowodzeniem, zanim element docelowy zaplecza powinien być oznaczony etykietą w złej kondycji. Minimalny interwał musi wynosić > 0.
grpc Określono, czy usługa zaplecza oczekuje połączeń gRPC. Wartość musi mieć wartość {}.
(http) Określono, czy usługa zaplecza oczekuje połączeń HTTP.
(http) host Nazwa hosta określona w żądaniu do obiektu docelowego zaplecza.
(http) ścieżka Określona ścieżka żądania. Jeśli należy załadować jeden plik, ścieżka może być /index.html.
(http —> dopasowanie) StatusCodes Zawiera dwie właściwości start i end, które definiują zakres prawidłowych kodów stanu HTTP zwracanych z zaplecza.
useTLS Określa, czy sprawdzanie kondycji powinno wymuszać protokół TLS. Jeśli nie zostanie określony, kontrola kondycji używa tego samego protokołu co usługa, jeśli ten sam port jest używany do sprawdzania kondycji. Jeśli port jest inny, sprawdzanie kondycji to cleartext.

Diagram przedstawiający usługę Application Gateway for Containers korzystającą z niestandardowych sond kondycji w celu określenia kondycji zaplecza.

Domyślna sonda kondycji

Usługa Application Gateway dla kontenerów automatycznie konfiguruje domyślną sondę kondycji, gdy nie definiujesz niestandardowej konfiguracji sondy ani nie konfigurujesz sondy gotowości. Zachowanie monitorowania działa przez wysłanie żądania HTTP GET do adresów IP skonfigurowanych obiektów docelowych zaplecza. W przypadku domyślnych sond, jeśli obiekt docelowy zaplecza jest skonfigurowany dla protokołu HTTPS, sonda używa protokołu HTTPS do testowania kondycji obiektów docelowych zaplecza.

Aby uzyskać więcej szczegółów implementacji, zobacz HealthCheckPolicyConfig w specyfikacji interfejsu API.

Gdy jest używana domyślna sonda kondycji, są używane następujące wartości dla każdej właściwości sondy kondycji:

Właściwości Wartość domyślna
interval 5 s
timeout 30 sekund
healthyThreshold 1 sonda
zła kondycjaThreshold 3 sondy
port Używany numer portu jest definiowany przez numer portu zaplecza w zasobie ruchu przychodzącego lub porcie zaplecza httpRoute w zasobie httpRoute.
(http) host localhost
(http) ścieżka /
useTLS Protokół HTTP dla protokołu HTTP i HTTPS po określeniu protokołu TLS.

1 Protokół HTTPS jest używany, gdy element backendTLSPolicy odwołuje się do docelowej usługi zaplecza (w przypadku implementacji interfejsu API bramy) lub ingressExtension z protokołem backendSetting protokołu HTTPS (dla implementacji interfejsu API ruchu przychodzącego) jest określony.

Uwaga

Sondy kondycji są inicjowane przy użyciu User-Agent wartości Microsoft-Azure-Application-LB/AGC.

Niestandardowa sonda kondycji

W interfejsie API bramy i interfejsie API ruchu przychodzącego można zdefiniować niestandardową sondę kondycji, definiując zasób HealthCheckPolicyPolicyPolicy i odwołując się do usługi, względem których sondy kondycji powinny być sprawdzane. W miarę odwoływania się do usługi PRZEZ zasób HTTPRoute lub Ingress z odwołaniem do klasy usługi Application Gateway for Containers, niestandardowa sonda kondycji jest używana dla każdego odwołania.

W tym przykładzie sonda kondycji emitowana przez usługę Application Gateway for Containers wysyła nazwę hosta contoso.com do zasobników tworzących usługę testową. Żądany protokół ma http ścieżkę /. Sonda jest emitowana co 5 sekund i czeka 3 sekundy przed ustaleniem limitu czasu połączenia. Jeśli zostanie odebrana odpowiedź, kod odpowiedzi HTTP z zakresu od 200 do 299 (włącznie z 200 i 299) jest uznawany za w dobrej kondycji, wszystkie inne odpowiedzi są uznawane za w złej kondycji.

kubectl apply -f - <<EOF
apiVersion: alb.networking.azure.io/v1
kind: HealthCheckPolicy
metadata:
  name: gateway-health-check-policy
  namespace: test-infra
spec:
  targetRef:
    group: ""
    kind: Service
    name: test-service
    namespace: test-infra
  default:
    interval: 5s
    timeout: 3s
    healthyThreshold: 1
    unhealthyThreshold: 1
    port: 8123
    # grpc: {} # defined if probing a gRPC endpoint
    http:
      host: contoso.com
      path: /
      match:
        statusCodes: 
        - start: 200
          end: 299
    useTLS: true
EOF