GNU/Linux >> Belajar Linux >  >> Ubuntu

Mengonfigurasi penyeimbang beban HAproxy di Ubuntu 14.04

Tujuan:
Dalam contoh ini permintaan HTTP diproksikan secara langsung sebagai permintaan HTTP ke server web HTTP. Dalam kasus permintaan HTTPS, permintaan tersebut ditangani dengan sertifikat oleh HAproxy dan kemudian diproksikan ke server web sebagai permintaan HTTP.

Sertifikat SSL:
Sertifikat untuk semua virtualhost yang diproksi disimpan sebagai satu file format PEM per kombinasi sertifikat/kunci dalam direktori:
/etc/ssl/private/
CA juga disimpan sebagai satu file format PEM per CA di direktori:
/etc/ssl/certs/

Langkah-langkah:
Instal HAproxy:
apt-get update && apt-get install haproxy

Konfigurasikan HAproxy untuk HTTP dan HTTPS load-balancing:

Edit file /etc/haproxy/haproxy.cfg
Konten:
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

Menjaga IP sumber klien di TCP Proxying

Dalam contoh di atas, protokol yang sedang diseimbangkan beban adalah protokol aplikasi, di mana Anda dapat mempertahankan IP Sumber dengan mengambilnya dari header HTTP/HTTPS X-Forwarded-For: (diperoleh dengan opsi:opsi penerusan untuk ), tetapi jika Anda menggunakan HAProxy sebagai penyeimbang beban lapisan TCP, untuk mempertahankan IP sumber (IP klien) lihat artikel berikut:http://blog.haproxy.com/2012/06/05/preserve-source- ip-address-despite-reverse-proxies/
Ini sedikit rumit untuk dipahami dan diterapkan, terutama di server backend. Saya belum mencobanya, jadi saya tidak bisa menjamin keabsahannya karena itu saya tidak bisa memberikan contoh. Dari apa yang saya pahami, satu-satunya perubahan yang diperlukan pada arahan proxy TCP (tidak dijelaskan di sini) adalah 2 persyaratan berikut:
1) Konfigurasi HAProxy Backend menyertakan entri tambahan:source 0.0.0.0 usersrc clientip
2) Pengaturan jaringan server backend perlu dikonfigurasi agar alamat IP host HaProxy sebagai Gateway default.

Dengan cara ini server backend melihat IP sumber klien seolah-olah klien terhubung langsung ke server backend dan tanggapan dari server backend dikembalikan melalui Host HAProxy.
Untuk segera dilanjutkan dengan contoh-contoh praktis …..

Selamat menyeimbangkan beban


Ubuntu
  1. Cara Mengatur HAProxy di Ubuntu 16.04

  2. Cara mengonfigurasi penyeimbang beban HAProxy

  3. Cara menginstal dan Mengonfigurasi penyeimbang beban HAProxy di Debian 11

  1. Mengkonfigurasi ZFS di Ubuntu 20.04

  2. Cara menginstal dan Mengonfigurasi penyeimbang beban HAProxy di Ubuntu 20.04

  3. Menginstal Cuda 8 Di Ubuntu 16:Tidak Dapat Menemukan Paket Cuda?

  1. Cara Mengkonfigurasi HAProxy di Server Debian 9 / Ubuntu 16.04

  2. Cara mengatur HAProxy sebagai Load Balancer untuk MariaDB di CentOS 7

  3. Cara mengatur HAProxy sebagai Load Balancer untuk Nginx di CentOS 7