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.