GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Konfigurieren des HAproxy-Load-Balancers in Ubuntu 14.04

Ziel:
In diesem Beispiel werden HTTP-Anfragen direkt als HTTP-Anfragen an die HTTP-Webserver weitergeleitet. Im Fall von HTTPS-Anfragen werden sie mit den Zertifikaten von HAproxy behandelt und dann als HTTP-Anfragen an die Webserver weitergeleitet.

SSL-Zertifikate:
Die Zertifikate für alle virtuellen Hosts, die weitergeleitet werden, werden als eine Datei im PEM-Format pro Zertifikat/Schlüssel-Kombination im Verzeichnis gespeichert:
/etc/ssl/private/
Die CAs werden auch als eine Datei im PEM-Format pro CA im Verzeichnis gespeichert:
/etc/ssl/certs/

Schritte:
HAproxy installieren:
apt-get update && apt-get install haproxy

HAproxy für HTTP- und HTTPS-Load-Balancing konfigurieren:

Bearbeiten Sie die Datei /etc/haproxy/haproxy.cfg
Inhalt:
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats socket /run/haproxy/admin.sock mode 660 level admin
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/
ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:ECDH+3DES:DH+3DES:RSA+AESGCM:RSA+AES:RSA+3DES:!aNULL:!MD5:!DSS
ssl-default-bind-options no-sslv3
tune.ssl.default-dh-param 2048
#
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
# Added to create separate error and access logs
option log-separate-errors
#
# ------- HTTP Frontend --------------
frontend http_in
bind *:80
mode http
reqadd X-Forwarded-Proto:\ http
default_backend http_out
#
# ------- HTTPS Frontend --------------
frontend https_glwp-in
bind *:443 ssl crt /etc/ssl/haproxy_certs/
mode http
reqadd X-Forwarded-Proto:\ https
default_backend http_out
#
#------------------------------------
listen stats :2000
mode http
stats enable
stats hide-version
stats realm Haproxy\ Statistics
stats uri /stats
stats auth admin:mypasswd
#
# ------- HTTP Backend --------------
backend http_out
balance roundrobin
stick-table type ip size 200k expire 60m
stick on src
option forwardfor
option httpclose
http-request set-header X-Forwarded-Port %[dst_port]
option httpchk HEAD /
server web1 webserv1.mynet.net:80 check
server web2 webserv2.mynet.net:80 check
server web3 webserv3.mynet.net:80 check
server web4 webserv4.mynet.net:80 check

Beibehaltung der Quell-IP des Clients im TCP-Proxying

In den obigen Beispielen handelt es sich bei den Protokollen, für die ein Lastenausgleich durchgeführt wird, um Anwendungsprotokolle, bei denen Sie die Quell-IP beibehalten können, indem Sie sie aus dem HTTP/HTTPS-Header X-Forwarded-For: abrufen (erhalten durch die Option:option forwardfor ), aber wenn Sie HAProxy als TCP-Layer-Load-Balancer verwenden, lesen Sie den folgenden Artikel, um die Quell-IP (Client-IP) beizubehalten:http://blog.haproxy.com/2012/06/05/preserve-source- ip-adresse-trotz-reverse-proxys/
Es ist ein bisschen komplex zu verstehen und zu implementieren, besonders auf dem Backend-Server. Ich habe es noch nicht ausprobiert, daher kann ich seine Gültigkeit nicht garantieren, daher kann ich keine Beispiele geben. Soweit ich weiß, sind die einzigen Änderungen, die an den TCP-Proxy-Anweisungen erforderlich sind (hier nicht erklärt), die folgenden 2 Anforderungen:
1) Die HAProxy-Backend-Konfiguration enthält den zusätzlichen Eintrag:source 0.0.0.0 usesrc clientip
2) Die Netzwerkeinstellungen des Back-End-Servers müssen so konfiguriert werden, dass die HaProxy-Host-IP-Adresse als Standard-Gateway verwendet wird.

Auf diese Weise sieht der Backend-Server die Quell-IP des Clients so, als ob sich der Client direkt mit dem Backend-Server verbunden hätte, und die Antworten des Backend-Servers werden über den HAProxy-Host zurückgesendet.
Fortsetzung folgt in Kürze mit praktischen Beispielen …..

Viel Spaß beim Load-Balancing 🙂


Ubuntu
  1. So richten Sie HAProxy in Ubuntu 16.04 ein

  2. So konfigurieren Sie den HAProxy-Load-Balancer

  3. So installieren und konfigurieren Sie den HAProxy-Load-Balancer unter Debian 11

  4. So installieren und konfigurieren Sie den HAProxy-Load-Balancer unter Ubuntu 20.04

  5. Cuda 8 unter Ubuntu 16 installieren:Paket Cuda kann nicht gefunden werden?

So richten Sie HAProxy als Load Balancer für Nginx unter CentOS 8 ein

Ubuntu sagt 13.04, aber Lsb_release sagt 12.10?

Installieren Sie Quanta auf Ubuntu 11.10

So richten Sie HAProxy als Load Balancer für Nginx in CentOS 7 ein

So richten Sie Traefik Load Balancer mit Docker in Ubuntu 20.04 ein

So installieren Sie HAProxy Load Balancer auf Ubuntu 18.04 Bionic Beaver