GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Configurazione del bilanciamento del carico HAproxy in Ubuntu 14.04

Obiettivo:
In questo esempio le richieste HTTP vengono inviate direttamente come richieste HTTP ai server Web HTTP. Nel caso di richieste HTTPS, vengono gestite con i certificati da HAproxy e quindi inviate tramite proxy ai server web come richieste HTTP.

Certificati SSL:
I certificati per tutti gli host virtuali sottoposti a proxy vengono archiviati come un file in formato PEM per certificato/combinazione di chiavi nella directory:
/etc/ssl/private/
Le CA vengono anche archiviate come un file in formato PEM per CA nella directory:
/etc/ssl/certs/

Passaggi:
Installa HAproxy:
apt-get update && apt-get install haproxy

Configura HAproxy per il bilanciamento del carico HTTP e HTTPS:

Modifica il file /etc/haproxy/haproxy.cfg
Contenuto:
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

Preservare l'IP di origine del client in TCP Proxying

Negli esempi precedenti i protocolli in fase di bilanciamento del carico sono protocolli applicativi, in cui è possibile mantenere l'IP di origine recuperandolo dall'intestazione HTTP/HTTPS X-Forwarded-For: (ottenuto con l'opzione:option forwardfor ), ma se si utilizza HAProxy come bilanciatore del carico del livello TCP, per mantenere l'IP di origine (IP del client) consultare il seguente articolo:http://blog.haproxy.com/2012/06/05/preserve-source- ip-address-nonostante-reverse-proxies/
È un po' complesso da comprendere e implementare, specialmente nel server back-end. Non l'ho ancora provato, quindi non posso garantirne la validità quindi non posso fornire alcun esempio. Da quanto ho capito, le uniche modifiche necessarie alle direttive di proxy TCP (non spiegate qui) sono i seguenti 2 requisiti:
1) La configurazione del backend HAProxy include la voce extra:source 0.0.0.0 usersrc clientip
2) Le impostazioni di rete del server back-end devono essere configurate per avere l'indirizzo IP dell'host HaProxy come gateway predefinito.

In questo modo il server di backend vede l'IP di origine del client come se il client fosse connesso direttamente al server di backend e le risposte dal server di backend venissero restituite tramite l'host HAProxy.
Per continuare a breve con esempi pratici …..

Buon bilanciamento del carico 🙂


Ubuntu
  1. Come configurare HAProxy in Ubuntu 16.04

  2. Come configurare il servizio di bilanciamento del carico HAProxy

  3. Come installare e configurare il bilanciamento del carico HAProxy su Debian 11

  4. Come installare e configurare il bilanciamento del carico HAProxy su Ubuntu 20.04

  5. Installazione di Cuda 8 su Ubuntu 16:impossibile individuare il pacchetto Cuda?

Come configurare HAProxy come Load Balancer per Nginx su CentOS 8

Ubuntu dice 13.04 ma Lsb_release dice 12.10?

Installa Quanta su Ubuntu 11.10

Come configurare HAProxy come Load Balancer per Nginx in CentOS 7

Come configurare il servizio di bilanciamento del carico Traefik con Docker in Ubuntu 20.04

Come installare HAProxy Load Balancer su Ubuntu 18.04 Bionic Beaver