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:
- Verwenden Sie die Definition der benutzerdefinierten HealthCheckPolicy-Ressource (CR).
- Wenn keine HealthCheckPolicy CR vorhanden ist, verwenden Sie den Bereitschaftstest
- 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. |
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