Install & Use HAProxy in Linux Ubuntu 18

From Gejoreuy
Jump to navigation Jump to search

Source

Introduction & concepts : https://www.digitalocean.com/community/tutorials/an-introduction-to-haproxy-and-load-balancing-concepts
Step by step installation and how to use : https://tecadmin.net/how-to-setup-haproxy-load-balancing-on-ubuntu-linuxmint/

If we follow the instruction in link above, there will be some error. Just use below example configuration for /etc/haproxy/haproxy.cfg.


Example Configuration with Multiple Backends Load Balancing

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

   ca-base /etc/ssl/certs
   crt-base /etc/ssl/private

   ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256::RSA+AES:RSA+3DES:!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 Local_Server
    bind 10.0.0.7:80
    mode http
    default_backend My_Web_Servers

backend My_Web_Servers
    mode http
    balance roundrobin
    option forwardfor
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    option httpchk HEAD / HTTP/1.1rnHost:localhost
    server komang-demotest-web1  10.0.0.9:80
    server komang-demotest-web2  10.0.0.10:80

listen stats
       bind *:1936


Example Configuration with Multiple Backends Different Ports

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

   ca-base /etc/ssl/certs
   crt-base /etc/ssl/private

   ssl-default-bind-ciphers ECDH+AESGCM:DH+AESGCM:ECDH+AES256::RSA+AES:RSA+3DES:!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 Local_Server1
    bind 10.0.0.7:81
    mode http
    default_backend My_Web_Servers1

frontend Local_Server2
    bind 10.0.0.7:82
    mode http
    default_backend My_Web_Servers2


backend My_Web_Servers1
    mode http
    balance roundrobin
    option forwardfor
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    option httpchk HEAD / HTTP/1.1rnHost:localhost
    server komang-demotest-web1  10.0.0.9:80

backend My_Web_Servers2
    mode http
    balance roundrobin
    option forwardfor
    http-request set-header X-Forwarded-Port %[dst_port]
    http-request add-header X-Forwarded-Proto https if { ssl_fc }
    option httpchk HEAD / HTTP/1.1rnHost:localhost
    server komang-demotest-web2  10.0.0.10:80

listen stats
       bind *:1936