
Pada artikel ini, kami akan menjelaskan langkah-langkah yang diperlukan untuk menginstal dan mengkonfigurasi HAProxy Load Balancer di Ubuntu 18.04 LTS. Sebelum melanjutkan dengan tutorial ini, pastikan Anda masuk sebagai pengguna dengan hak istimewa sudo. Semua perintah dalam tutorial ini harus dijalankan sebagai pengguna non-root.
HAProxy adalah alat Linux sumber terbuka yang menyediakan layanan penyeimbang beban dan proxy ketersediaan tinggi untuk aplikasi jaringan berbasis TCP dan HTTP. Karena integrasinya yang mudah ke dalam arsitektur yang ada, kesesuaian untuk situs web dengan lalu lintas tinggi, keandalan ekstrem, dan fokus pada kompatibilitas ke atas, ia dikirimkan secara default oleh sebagian besar distro Linux arus utama.
Instal HAProxy di Ubuntu
Langkah 1. Detail Jaringan
Demi kesederhanaan, kami akan mengasumsikan alamat IP dan nama host berikut untuk instance:
- haproxy-server :alamat IP publik 198.18.0.1
- backend-server1 :alamat IP pribadi 172.16.0.1 , alamat IP publik 198.18.0.1
- backend-server2 :alamat IP pribadi 172.16.0.2 , alamat IP publik 198.18.0.2
Langkah 2. Pertama, sebelum Anda mulai menginstal paket apa pun di server Ubuntu Anda, kami selalu menyarankan untuk memastikan bahwa semua paket sistem telah diperbarui.
sudo apt update sudo apt upgrade
Langkah 3. Instal HaProxy di Ubuntu 18.04 LTS.
HaProxy tersedia di repositori perangkat lunak Ubuntu, jadi kita dapat menginstalnya menggunakan manajer paket dengan menjalankan perintah di bawah ini:
sudo add-apt-repository ppa:vbernat/haproxy-1.8 sudo apt-get update sudo apt-get install haproxy
Langkah 4. Konfigurasi Load Balancing dengan HAProxy.
Sekarang edit file konfigurasi default haproxy /etc/haproxy/haproxy.cfg dan mulai konfigurasi:
sudo nano /etc/haproxy/haproxy.cfg
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::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 Jadi menjelang akhir file, tambahkan konten di bawah ini:
frontend ourwebsitefrontend
bind *:80
mode http
default_backend ourwebsiteendpoin Parameter bind memberitahu HaProxy untuk mendengarkan port 80 untuk koneksi. Di akhir teks, kami telah menetapkan titik akhir situs web kami sebagai arahan di mana titik akhir kami berada. Sekarang kita dapat melanjutkan dan menambahkan detail konfigurasi backend sebagai berikut:
backend ourwebsiteendpoint
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.1\r\nHost:localhost
server backend-server1 172.16.0.1:8080 check
server backend-server2 172.16.0.2:8080 check Sekarang jika mau, Anda dapat mengaktifkan statistik Haproxy dengan menambahkan konfigurasi berikut di file konfigurasi HAProxy:
listen stats
bind :32600
stats enable
stats uri /
stats hide-version
stats auth username:password Langkah 5. File Konfigurasi HAProxy Terakhir.
File konfigurasi akhir mungkin terlihat seperti di bawah ini:
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$
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 ourwebsitefrontend
bind *:80
mode http
default_backend ourwebsiteendpoint
backend ourwebsiteendpoint
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.1\r\nHost:localhost
server backend-server1 172.16.0.1:8080 check
server backend-server2 172.16.0.2:8080 check
listen stats
bind :32600
stats enable
stats uri /
stats hide-version
stats auth username:password Kemudian, restart server HaProxy untuk memuat ulang perubahan:
sudo service haproxy restart
Langkah 6. Menguji Konfigurasi.
Pada tahap ini, kami memiliki pengaturan HAProxy yang berfungsi penuh. Di setiap node server web saya memiliki halaman demo index.html yang menunjukkan nama host server, Jadi kita dapat dengan mudah membedakan antara halaman web server.
Sekarang akses port 80 pada IP 198.18.0.1 (seperti yang dikonfigurasi di atas) di browser web dan tekan refresh. Anda akan melihat bahwa HAProxy mengirimkan permintaan ke server backend satu per satu (sesuai algoritma round robin).
Hanya itu yang perlu Anda lakukan untuk menginstal HAProxy Load di Ubuntu 18.04. Saya harap Anda menemukan tip cepat ini bermanfaat. Jika Anda memiliki pertanyaan atau saran, jangan ragu untuk meninggalkan komentar di bawah.