Ich habe in AWS einen Load Balancer eingerichtet, der den Datenverkehr an einen Apache-Ubuntu-Server weiterleitet.
Wenn ich zu meiner URL navigiere, läuft manchmal alles reibungslos. Dann klicke ich auf die Schaltfläche „Aktualisieren“ und beim Herunterladen einiger Dateien erhalte ich 502-Fehler. Es sind jedes Mal andere Dateien.
Dann klicke ich erneut auf „Aktualisieren“ und alles läuft einwandfrei.
Ich bin derzeit der Einzige, der den Server nutzt.
Mein Load Balancer ist folgendermaßen eingerichtet:
- Verfügbarkeitszonen: us-east-1a und us-east-1b
- Sicherheitsgruppen: Port 80 und 443 geöffnet
- Listener: Port 80 leitet auf Port 443 um, Port 443 leitet an mein Ziel weiter
Meine Zielgruppe ist wie folgt konfiguriert:
- Zieltyp: Instanz
- Protokoll: HTTP: 80
- Load Balancer: Mein Load Balancer-Name
- Ziele registrieren: Ich habe in jeder Zone 1 Instanz laufen.
Meine Auto Scaling-Gruppe ist folgendermaßen konfiguriert:
- Gewünschte Kapazität: 2
- Mindestteilnehmerzahl: 2
- Maximale Kapazität: 5
- Verfügbarkeitszonen: us-east-1a, us-east-1b
Mein Apache-Server ist mit den Standardinstallationswerten konfiguriert, plus:
- KeepAlive Ein
- Zeitüberschreitung 120
- KeepAliveTimeout 120
- MaxKeepAliveAnfragen 100
- AcceptFilter http keine
- AcceptFilter https keine
Ich bin kein Server-Typ, sondern Programmierer, also weiß ich wirklich nicht, was ich überprüfen soll. Ich dachte, die Konfiguration eines Load Balancers wäre unkompliziert ...
Vielen Dank für Ihre Hilfe
BEARBEITEN 27.08.2020 15:39
Ich habe die Protokolle im VPC und im Load Balancer aktiviert und meine Seite aktualisiert. Bei einer bestimmten Datei ist ein 502-Fehler aufgetreten.
In den Load Balancer-Protokollen sehe ich den Eintrag 502 für die spezifische Datei. Hier ist der Eintrag - JSON-formatiert - in dem ich alle sensiblen Daten ersetzt habe
[
{
"type": "h2",
"time": "2020-08-27T19:20:52.547402Z",
"elb": "app/web-server-load-balancer/**my-load-balancer-id**",
"client:port": "*my-ip-address*:60831",
"target:port": "10.0.0.106:80",
"request_processing_time": 0,
"target_processing_time": 0.013,
"response_processing_time": -1,
"elb_status_code": 502,
"target_status_code": "-",
"received_bytes": 45,
"sent_bytes": 610,
"request": "GET https://**my-url** HTTP/2.0",
"user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.135 Safari/537.36",
"ssl_cipher": "ECDHE-RSA-AES128-GCM-SHA256",
"ssl_protocol": "TLSv1.2",
"target_group_arn": "**my-target-group-arn**",
"trace_id": "Root=1-5f480794-150df3bcad7fd0ac6bdfc41c",
"domain_name": "**my-domain-name**",
"chosen_cert_arn": "session-reused",
"matched_rule_priority": 0,
"request_creation_time": "2020-08-27T19:20:52.534000Z",
"actions_executed": "forward",
"redirect_url": "-",
"error_reason": "-",
"target:port_list": "10.0.0.106:80",
"target_status_code_list": "-",
"classification": "-",
"classification_reason": "-"
}
]
Ich weiß nicht, ob Ihnen diese Daten helfen können, mir zu helfen!
BEARBEITEN 2020-08-31 (1)
Ich habe die beiden VMs in der Firewall geöffnet, um direkt darauf zuzugreifen. Wenn ich direkt auf die einzelnen Server zugreife, erhalte ich die 502-Fehler überhaupt nicht. Wenn ich über den Load Balancer zugreife, erhalte ich die 502-Fehler.
BEARBEITEN 2020-08-31 (2)
Ich habe meinen Load Balancer geändert, um den HTTP-Verkehr an die Instanz zu leiten, anstatt ihn an Port 443 umzuleiten.
Auf Port 80 bekomme ich keine 502-Fehler. Ich habe viele Male einen Hard-Refresh durchgeführt und keine 502-Fehler bekommen. Sobald ich mit https auf den Load Balancer zugreife, bekomme ich 502-Fehler. Ich erinnere mich, dass ich keine 502-Fehler bekomme, wenn ich direkt mit https auf die VM zugreife.
Antwort1
Dabei bin ich auf diesen Forumsbeitrag gestoßen: AWS-Entwicklerforum
Der letzte Eintrag gab mir tatsächlich die Antwort:
Stellen Sie sicher, dass Sie Apaches Event-MPM-Modul (Standard) nicht verwenden, wenn Sie sich hinter einem ALB/ELB befinden. Es schließt Verbindungen dynamisch. Versuchen Sie es mit Worker-MPM.
Ich habe meine Apache-Konfiguration geändert, um Worker-MPM zu verwenden, und hatte bisher keine 502-Fehler.
Antwort2
Ich habe sowohl Worker- als auch Event-MPMs ausprobiert und keines davon hat den zufälligen 502-Fehler vollständig beseitigt. Schließlich bin ich auf Prefork-MPM umgestiegen und das hat das Problem für mich behoben. Dies ist auf Apache in der Mitte zwischen ALB und Tomcat.