Freigeben über


Benutzerdefinierter Integritätstest für Application Gateway für Container

Application Gateway für Container überwacht standardmäßig die Integrität aller Back-End-Ziele. Da Back-End-Ziele fehlerfrei oder fehlerhaft werden, verteilt das Application Gateway für Container nur Datenverkehr an fehlerfreie Endpunkte.

Zusätzlich zur Nutzung der standardmäßigen Überwachung der Integritätsüberprüfung können Sie die Integritätsüberprüfung auch an die Anforderungen Ihrer Anwendung anpassen. In diesem Artikel werden sowohl Standard- als auch benutzerdefinierte Integritätstests erläutert.

Die Reihenfolge und Logik der Integritätstestung lautet wie folgt:

  1. Verwenden Sie die Definition der benutzerdefinierten HealthCheckPolicy-Ressource (CR).
  2. Wenn keine HealthCheckPolicy CR vorhanden ist, verwenden Sie den Bereitschaftstest
  3. Wenn kein Bereitschaftstest definiert ist, verwenden Sie den Standardintegritätstest

Die folgenden Eigenschaften machen benutzerdefinierte Integritätstests aus:

Eigenschaft Standardwert
interval Wie oft in Sekunden Integritätstests an das Back-End-Ziel gesendet werden sollen. Das Mindestintervall muss > 0 Sekunden betragen.
timeout Wie lange in Sekunden die Anforderung warten sollte, bis sie als fehlerhaft gekennzeichnet wird. Das Mindestintervall muss > 0 Sekunden betragen.
healthyThreshold Anzahl der Integritätstests, bevor der Zielendpunkt als fehlerfrei markiert wird. Das Mindestintervall muss > 0 sein.
port Die Portnummer, die beim Testen des Back-End-Ziels verwendet wird.
unhealthyThreshold Anzahl der Integritätstests, die fehlschlagen, bevor das Back-End-Ziel als fehlerhaft bezeichnet werden soll. Das Mindestintervall muss > 0 sein.
grpc Angegeben, wenn der Back-End-Dienst gRPC-Verbindungen erwartet. Der Wert muss {} sein.
(http) Angegeben, wenn der Back-End-Dienst HTTP-Verbindungen erwartet.
(http)-Host Der in der Anforderung an das Back-End-Ziel angegebene Hostname.
(http)-Pfad Der spezifische Pfad der Anforderung. Wenn eine einzelne Datei geladen werden soll, lautet der Pfad möglicherweise „/index.html“.
(http -> match) statusCodes Enthält zwei Eigenschaften start und end, die den Bereich gültiger HTTP-Statuscodes definieren, die vom Back-End zurückgegeben werden.
useTLS Gibt an, ob die Integritätsprüfung TLS erzwingen soll. Wenn nicht angegeben, verwendet die Integritätsprüfung dasselbe Protokoll wie der Dienst, wenn derselbe Port für die Integritätsprüfung verwendet wird. Wenn der Port unterschiedlich ist, ist die Integritätsprüfung Klartext.

Ein Diagramm, das zeigt, wie das Application Gateway für Container benutzerdefinierte Integritätstests verwendet, um die Integrität des Back-Ends zu ermitteln.

Standardmäßige Integritätsüberprüfung

Application Gateway für Containers konfiguriert automatisch einen Standardintegritätstest, wenn Sie keine benutzerdefinierte Testkonfiguration definieren oder einen Bereitschaftstest konfigurieren. Das Überwachungsverhalten funktioniert, indem eine HTTP-GET-Anforderung an die IP-Adressen der konfigurierten Back-End-Ziele gestellt wird. Wenn bei Standardtests das Back-End-Ziel für HTTPS konfiguriert ist, verwendet der Test HTTPS, um den Zustand der Back-End-Ziele zu testen.

Weitere Implementierungsdetails finden Sie unter HealthCheckPolicyConfig in der API-Spezifikation.

Wenn der Standardintegritätstest verwendet wird, werden die folgenden Werte für jede Integritätstesteigenschaft verwendet:

Eigenschaft Standardwert
interval 5 Sekunden
timeout 30 Sekunden
healthyThreshold 1 Test
unhealthyThreshold 3 Tests
port Die verwendete Portnummer wird durch die Back-End-Portnummer in der Eingangs-Ressource oder httpRoute-Back-End-Port in der HttpRoute-Ressource definiert.
(http)-Host localhost
(http)-Pfad /
useTLS HTTP für HTTP und HTTPS, wenn TLS angegeben ist.

1 HTTPS wird verwendet, wenn eine backendTLSPolicy auf einen Ziel-Back-End-Dienst (für die Gateway-API-Implementierung) verweist oder wenn IngressExtension mit einem backendSetting-Protokoll von HTTPS (für die Eingangs-API-Implementierung) angegeben ist.

Hinweis

Integritätssonden werden mit dem User-Agent-Wert von Microsoft-Azure-Application-LB/AGC initiiert.

Benutzerdefinierte Integritätsüberprüfung

Sowohl in der Gateway-API als auch in der eingehenden API kann ein benutzerdefinierter Integritätstest definiert werden, indem eine HealthCheckPolicyPolicyPolicy-Ressource definiert sowie auf einen Dienst verwiesen wird, auf den die Integritätstests überprüft werden sollen. Da der Dienst von einer HTTPRoute- oder eingehende Ressource mit einem Klassenverweis auf das Application Gateway für Container referenziert wird, wird der benutzerdefinierte Integritätstest für jeden Verweis verwendet.

In diesem Beispiel sendet der vom Application Gateway für Container ausgegebene Integritätstest den Hostnamen contoso.com an die Pods, die Testdienst bilden. Das angeforderte Protokoll ist http mit einem Pfad von /. Ein Test wird alle 5 Sekunden ausgegeben und wartet 3 Sekunden, bevor er feststellt, dass die Verbindung eine Zeitüberschreitung aufweist. Wenn eine Antwort empfangen wird, wird ein HTTP-Antwortcode zwischen 200 und 299 (einschließlich 200 und 299) als fehlerfrei betrachtet, alle anderen Antworten werden als fehlerhaft betrachtet.

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