
Ich habe einen Dienst, der bei zwei Zielgruppen registriert ist: alb
und wwwalb
.
Die alb
Zielgruppe ist für interne Anfragen und die wwwalb
Zielgruppe ist für externe Anfragen.
Wenn ich meinen Dienst bereitstelle, startet er wie vorgesehen und beginnt, Anfragen anzunehmen. Wenn ich mir das Zugriffsprotokoll anschaue, kann ich sehen, dass sowohl der als auch der alb
den wwwalb
Dienst prüft. Da der Dienst in 3 Zonen läuft, sehe ich 3 Anfragen für jede Zone, also insgesamt 6.
- - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:28 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
- - - [19/Jun/2022:20:45:30 +0200] "GET /api/system/status HTTP/1.1" 204 -
Trotzdem wird der Dienst letztendlich abgeschaltet, weil die Zielgruppe glaubt, dass der Dienst nicht einwandfrei ist. Tatsächlich scheint die Zielgruppe den Dienst nie für einwandfrei zu halten.
Ein API-Aufruf zur Überprüfung der Zielgruppe sagt mir Folgendes:
{
"TargetHealthDescriptions": [
{
"Target": {
"Id": "10.1.143.94",
"Port": 8182,
"AvailabilityZone": "eu-north-1b"
},
"HealthCheckPort": "8182",
"TargetHealth": {
"State": "unhealthy",
"Reason": "Target.FailedHealthChecks",
"Description": "Health checks failed"
}
}
]
}
Ich habe mir schon seit einiger Zeit Zielgruppenmetriken und Load Balancer-Konfigurationen angesehen, kann aber einfach nichts über das Setup finden, das dieses Verhalten erklären könnte. Die Einstellungen für den Integritätscheck scheinen mir ebenfalls in Ordnung zu sein:
Ich habe das erst kürzlich hinzugefügt wwwalb
und denke daher, dass dies irgendwie daran liegt, dass dieser Dienst in zwei Zielgruppen ist. Andererseits wird die Existenz eines Dienstes in zwei Zielgruppen von AWS unterstützt und erklärt.
Gibt es eine Möglichkeit, von AWS weitere Einzelheiten darüber zu erhalten, was dieses Problem tatsächlich verursacht? Gibt es eine Möglichkeit herauszufinden, warum AWS glaubt, dass der Dienst ausfällt?
Antwort1
Normalerweise stelle ich meinen Schwellenwert für einen Fehler höher ein als meinen Schwellenwert für einen Fehler. So sind beispielsweise 2 erfolgreiche Anrufe im Abstand von 10 Sekunden ein Fehler, 6 erfolglose Anrufe im Abstand von 10 Sekunden ein Fehler.
Das heißt, es sollte keine Rolle spielen und Ihre Einstellungen sollten funktionieren. Wenn sich ein Ziel registriert, tritt ein „anfänglicher“ Zustand auf. Während dieser Zeit versucht AWS, Integritätsprüfungen zu validieren und sollte nur dann in einen fehlerfreien Zustand wechseln, wenn die Integritätsprüfungen erfolgreich sind.
Sind Sie sicher, dass Ihre Anwendung nicht erfolgreich antwortet und dann so lange fehlschlägt, dass sie wieder fehlerhaft wird? Oder liegt es wirklich daran, dass der Start zu lange dauert und sie nie aus dem „Anfangszustand“ herauskommt?