Ich habe eine einfache Haproxy-Instanz auf einer Neuinstallation von Debian 10 Buster eingerichtet. Ich habe einige einfache notwendige Konfigurationen hinzugefügt, um den Passthrough zur betreffenden IP-Adresse zu aktivieren (die in der folgenden Konfiguration redigiert wurde).
Die Konfigurationsdatei:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
stats timeout 30s
user haproxy
group haproxy
daemon
# Default SSL material locations
ca-base /etc/ssl/certs
crt-base /etc/ssl/private
# Default ciphers to use on SSL-enabled listening sockets.
# For more information, see ciphers(1SSL). This list is from:
# https://hynek.me/articles/hardening-your-web-servers-ssl-ciphers/
# An alternative list with additional directives can be obtained from
# https://mozilla.github.io/server-side-tls/ssl-config-generator/?server=haproxy
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
errorfile 400 /etc/haproxy/errors/400.http
errorfile 403 /etc/haproxy/errors/403.http
errorfile 408 /etc/haproxy/errors/408.http
errorfile 500 /etc/haproxy/errors/500.http
errorfile 502 /etc/haproxy/errors/502.http
errorfile 503 /etc/haproxy/errors/503.http
errorfile 504 /etc/haproxy/errors/504.http
frontend myfrontend
bind *:80
mode tcp
default_backend mybackendhttp
frontend myfrontendhttps
bind *:443
mode tcp
use_backend mybackendhttps
backend mybackendhttp
mode tcp
option ssl-hello-chk
server server1 ***********:80
backend mybackendhttps
mode tcp
option ssl-hello-chk
server server1 ************:443
Die Änderungen, die ich vorgenommen habe (wenn ich einen Diff mit der Originaldatei mache) (redigierte IP):
+
+
+frontend myfrontend
+ bind *:80
+ mode tcp
+ default_backend mybackendhttp
+
+frontend myfrontendhttps
+ bind *:443
+ mode tcp
+ use_backend mybackendhttps
+
+backend mybackendhttp
+ mode tcp
+ option ssl-hello-chk
+ server server1 ***********:80
+
+backend mybackendhttps
+ mode tcp
+ option ssl-hello-chk
+ server server1 **********:443
Alles funktioniert einwandfrei, aber aus irgendeinem Grund ist die Netzwerkleistung unglaublich langsam, wenn ich eine Browseranforderung von meinem PC aus oder eine Curl-Anforderung über die Befehlszeile oder per Mobilgerät mache. Ich erhalte etwa 200–300 KB/s, während ich normalerweise etwa das Zehnfache erreichen würde.
Wenn ich die gleiche Anfrage über Curl auf einem VPS versuche, erhalte ich eine viel höhere Geschwindigkeit (5000 kb/s).
Der Haproxy läuft auf einer GCP-Compute-Instance-VM, daher bezweifle ich, dass es ein Problem mit der Netzwerkbandbreite ist, aber ich kann versuchen, einen einfachen statischen HTTP-Dienst einzurichten und den Vergleich zu ziehen.
Was könnte die Ursache des Problems sein? Wie könnte ich das diagnostizieren? Würde das Aktivieren von Protokollen auf Haproxy einen besseren Einblick in dieses Problem bieten?
Ich bin auf die folgende Frage gestoßen, die ein ähnliches Verhalten zu beschreiben scheint:
HAProxy SSL-Antworten sehr langsam
Die OpenSSL-Bibliothek muss den Hostnamen in /etc/hosts richtig festlegen
Allerdings ist mir nicht klar, was „richtig eingestellt“ bedeutet.
Antwort1
Ich antworte, weil ich nicht genug Ruf habe.
In /etc/hosts
möchten Sie diese Zeile finden:
127.0.0.1 localhost
Ersetzen Sie es localhost
durch Ihren FQDN, z. B. haproxy.domain.com oder was auch immer. Es sollte mit dem Hostnamen Ihres Servers identisch sein.
Unter Debian können Sie den Hostnamen mit diesem Befehl festlegen:
hostname-ctl set-hostname haproxy.domain.com