Selamat datang di panduan kami tentang cara menginstal dan mengatur HAProxy di Ubuntu 20.04. HAProksi (High Availability Proxy), seperti yang mungkin sudah Anda ketahui, adalah solusi gratis, sangat cepat, dan andal yang menawarkan ketersediaan tinggi, penyeimbangan beban, dan proxy untuk aplikasi berbasis TCP dan HTTP. Ini sangat cocok untuk situs web dengan lalu lintas sangat tinggi dan mendukung cukup banyak situs yang paling banyak dikunjungi di dunia.
Ini fitur ketekunan koneksi melalui cookie HTTP, load balancing, penambahan header, modifikasi, penghapusan dua arah. Ini memiliki kemampuan memblokir permintaan dan menyediakan interface untuk menampilkan status server.
Instal dan Atur HAProxy di Ubuntu 20.04
HAProxy tersedia di repo default Ubuntu 20.04. Namun, paket yang tersedia mungkin tidak up-to-date.
apt show haproxy
Package: haproxy Version: 2.0.13-2 Priority: optional Section: net Origin: Ubuntu Maintainer: Ubuntu Developers <[email protected]> Original-Maintainer: Debian HAProxy Maintainers <[email protected]> Bugs: https://bugs.launchpad.net/ubuntu/+filebug Installed-Size: 3,287 kB Pre-Depends: dpkg (>= 1.17.14) Depends: libc6 (>= 2.17), libcrypt1 (>= 1:4.1.0), libgcc-s1 (>= 3.0), liblua5.3-0, libpcre2-8-0 (>= 10.22), libssl1.1 (>= 1.1.1), libsystemd0, zlib1g (>= 1:1.1.4), adduser, lsb-base (>= 3.0-6) Suggests: vim-haproxy, haproxy-doc Homepage: http://www.haproxy.org/ Download-Size: 1,519 kB APT-Sources: http://ke.archive.ubuntu.com/ubuntu focal/main amd64 Packages
Seperti yang Anda lihat, paket HAProxy yang tersedia di repo default adalah versi 2.0.13 sedangkan rilis stabil saat ini adalah versi 2.1.5.
Buat Repositori PPA HAProxy untuk Ubuntu
Namun ada, repo PPA yang menyediakan versi rilis stabil terbaru dari HAProxy yang dikelola oleh Vincent Bernat. Repo PPA ini dapat diinstal sebagai berikut;
install software-properties-common
add-apt-repository ppa:vbernat/haproxy-2.1 --yes
Jalankan pembaruan sistem
Setelah repo PPA ditambahkan ke sistem, perbarui cache paket sistem Anda;
apt update
Instal HAProxy di Ubuntu 20.04
Anda sekarang dapat menginstal HAProxy versi stabil terbaru;
apt-cache policy haproxy
haproxy: Installed: (none) Candidate: 2.1.5-1ppa1~focal Version table: 2.1.5-1ppa1~focal 500 500 http://ppa.launchpad.net/vbernat/haproxy-2.1/ubuntu focal/main amd64 Packages 2.0.13-2 500 500 http://ke.archive.ubuntu.com/ubuntu focal/main amd64 Packages
Perhatikan versi yang disediakan oleh masing-masing repo.
Anda sekarang dapat menginstal HAProxy;
apt install haproxy
Untuk memeriksa versi HAProxy yang diinstal, jalankan perintah di bawah ini;
haproxy -v
HA-Proxy version 2.1.5-1ppa1~focal 2020/06/01 - https://haproxy.org/ Status: stable branch - will stop receiving fixes around Q1 2021. Known bugs: http://www.haproxy.org/bugs/bugs-2.1.5.html Running on: Linux 5.4.0-33-generic #37-Ubuntu SMP Thu May 21 12:53:59 UTC 2020 x86_64
Konfigurasikan HAProxy Load Balancer di Ubuntu 20.04
Dengan HAProxy, Anda dapat menentukan beberapa service proxy dan mengonfigurasi HAProxy untuk memuat keseimbangan lalu lintas untuk proxy yang ditentukan. Proxy terdiri dari sistem frontend dan satu atau lebih sistem back-end. Sistem front-end menentukan alamat IP dan port tempat proxy mendengarkan serta sistem back-end yang digunakan untuk proxy tertentu.
File konfigurasi utama untuk HAProxy adalah /etc/haproxy/haproxy.cfg.
File konfigurasi HAProxy terdiri dari empat bagian;
- global: Bagian global mendefinisikan keamanan seluruh proses dan penyetelan kinerja yang memengaruhi HAProxy pada tingkat rendah.
- defaults: Bagian global menentukan pengaturan konfigurasi yang diterapkan ke semua bagian frontend dan backend . Anda dapat menentukan beberapa bagian default tetapi sub-sekuen default bagian menimpa yang datang sebelumnya.
- frontend: Ketika HAProxy ditempatkan sebagai proxy terbalik, frontend bagian tersebut mendefinisikan alamat IP dan port yang dapat disambungkan oleh client.
- backend: Bagian backend mendefinisikan grup server yang akan diseimbangkan beban dan ditugaskan untuk menangani permintaan.
Bagian frontend dan backend dapat digabungkan menggunakan listen bagian. Hal ini juga dapat digunakan untuk halaman statistik server HAProxy.
Baca lebih lanjut tentang bagian ini di Bagian Penting dari Konfigurasi HAProxy.
Konfigurasi file HAProxy default terlihat seperti di bawah ini;
grep -v '^s*#' /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 expose-fd listeners stats timeout 30s user haproxy group haproxy daemon ca-base /etc/ssl/certs crt-base /etc/ssl/private ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets 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
Dalam file konfigurasi kami, kami akan memodifikasi di atas untuk memasukkan frontenddan backendbagian.
Sebelum Anda dapat melanjutkan, buat cadangan file konfigurasi default;
cp /etc/haproxy/haproxy.cfg{,.factory}
Tentukan Pengaturan Konfigurasi Frontend HAProxy
Seperti yang dinyatakan di atas, frontend bagian ini mendefinisikan alamat IP dan port yang dapat dihubungkan oleh client (Alamat IP dan port pada server HAProxy itu sendiri). Oleh karena itu, seperti inilah konfigurasi frontend kami;
frontend bind 192.168.57.8:443 ssl crt /etc/ssl/certs/haproxy.pem default_backend webapps option forwardfor
- bind: Menentukan satu atau lebih alamat dan/atau port yang mendengarkan di server frontend.
- ssl crt: Mengonfigurasi HAProxy SSL Termination dan menentukan jalur ke sertifikat SSL/TLS.
- default_backend: Menentukan backend yang akan digunakan ketika tidak ada aturan “use_backend” yang cocok.
- option forwardfor: HAProxy beroperasi dalam mode reverse-proxy. Opsi ini memungkinkan server backend untuk melihat alamat IP client alih-alih alamat IP untuk server HAProxy.
CATATAN:
Dalam demo ini, backend proksi kami menggunakan sertifikat SSL/TLS. Dengan demikian, alih-alih mengonfigurasi setiap aplikasi backend untuk mengakhiri koneksi SSL/TLS-nya ( SSL Pass through), kami akan mengonfigurasi HAProxy sebagai titik penghentian sertifikat SSL/TLS ( SSL Termination).
Jika Anda tidak menggunakan penghentian SSL/TLS, hapus bagian SSL dari baris pengikatan, ssl crt /etc/ssl/certs/haproxy.pem.
Tentukan Pengaturan Konfigurasi Backend HAProxy
Di bagian ini, kita akan, dalam bentuk dasar, mendefinisikan Algoritma Penjadwalan HAProxy dan server backend yang permintaannya sedang di
proksi/beban seimbang.
backend webapps balance roundrobin server app01 192.168.59.6:80 check server app02 192.168.60.4:80 check
- balance parameter mendefinisikan algoritma penjadwalan load balancer.
- roundrobin memilih server secara bergiliran.
- Algoritma umum lainnya adalah leastconn yang memungkinkan penyeimbang beban untuk meneruskan permintaan ke server dengan koneksi paling sedikit.
- server pengaturan menentukan server yang tersedia di back end.
- check opsi mengaktifkan pemeriksaan kesehatan di server sehingga jika salah satunya tidak aktif, permintaan diarahkan ke server backend yang tersedia.
Tentukan Pengaturan Konfigurasi Statistik HAProxy
Menurut halaman Statistik HAProxy, HAProxy dikirimkan dengan dasbor yang disebutHAProxy Stats pageyang menunjukkan banyak metrik yang mencakup kesehatan server, tingkat permintaan saat ini, waktu respons, dan banyak lagi. Metrik ini memberikan data granular pada basis per frontend, backend, dan server. Ini dapat diaktifkan menggunakan stats enable arahan, yang dapat ditambahkan ke bagian frontend atau mendengarkan. Kami menggunakan bagian mendengarkan dalam tutorial ini.
listen stats bind 192.168.57.8:8443 ssl crt /etc/ssl/certs/haproxy.pem stats enable # enable statistics reports stats hide-version # Hide the version of HAProxy stats refresh 30s # HAProxy refresh time stats show-node # Shows the hostname of the node stats auth haadmin:[email protected] # Enforce Basic authentication for Stats page stats uri /stats # Statistics URL
Perhatikan bahwa baris, bind 192.168.57.8:8443 ssl crt /etc/ssl/certs/haproxy.pem, mendefinisikan IP frontend dan port untuk mengakses statistik HAProxy serta sertifikat SSL/TLS yang akan digunakan.
Simpan dan keluar dari file setelah selesai dengan konfigurasi.
Secara umum, seperti inilah konfigurasi kami.NOTEbahwa kami menambahkan baris, tune.ssl.default-dh-param 2048, ke bagian opsi konfigurasi SSL/TLS.
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners stats timeout 30s user haproxy group haproxy daemon ca-base /etc/ssl/certs crt-base /etc/ssl/private ssl-default-bind-ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384 ssl-default-bind-ciphersuites TLS_AES_128_GCM_SHA256:TLS_AES_256_GCM_SHA384:TLS_CHACHA20_POLY1305_SHA256 ssl-default-bind-options ssl-min-ver TLSv1.2 no-tls-tickets 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 frontend kifarunixlb bind 192.168.57.8:443 ssl crt /etc/ssl/certs/haproxy.pem default_backend webapps option forwardfor backend webapps balance roundrobin server app01 192.168.59.6:80 check server app02 192.168.60.4:80 check listen stats bind 192.168.57.8:8443 ssl crt /etc/ssl/certs/haproxy.pem stats enable # enable statistics reports stats hide-version # Hide the version of HAProxy stats refresh 30s # HAProxy refresh time stats show-node # Shows the hostname of the node stats auth haadmin:[email protected] # Enforce Basic authentication for Stats page stats uri /stats # Statistics URL
Validasi Sintaks Konfigurasi HAProxy
Setelah selesai dengan konfigurasi, jalankan perintah di bawah ini untuk memverifikasi validasi sintaks konfigurasi HAProxy sebelum Anda dapat memulainya;
haproxy -f /etc/haproxy/haproxy.cfg -c -V
Jika semuanya baik-baik saja, Anda harus mendapatkan output;
Configuration file is valid
Jika tidak, Anda akan mendapatkan error pada stdout. Pastikan untuk memperbaikinya sebelum Anda dapat melanjutkan.
Menjalankan HAProxy
Saat diinstal, HAProxy dimulai dan diaktifkan untuk berjalan pada boot sistem secara default. Anda dapat memulai kembali dengan menjalankan perintah di bawah ini
systemctl restart haproxy
Untuk memeriksa statusnya;
systemctl status haproxy
● haproxy.service - HAProxy Load Balancer Loaded: loaded (/lib/systemd/system/haproxy.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-06-05 20:45:33 UTC; 7s ago Docs: man:haproxy(1) file:/usr/share/doc/haproxy/configuration.txt.gz Process: 21423 ExecStartPre=/usr/sbin/haproxy -f $CONFIG -c -q $EXTRAOPTS (code=exited, status=0/SUCCESS) Main PID: 21425 (haproxy) Tasks: 3 (limit: 2282) Memory: 39.5M CGroup: /system.slice/haproxy.service ├─21425 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock └─21440 /usr/sbin/haproxy -Ws -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -S /run/haproxy-master.sock Jun 05 20:45:33 haproxy.kifarunix-demo.com systemd[1]: Starting HAProxy Load Balancer... Jun 05 20:45:33 haproxy.kifarunix-demo.com haproxy[21425]: Proxy kifarunixlb started. Jun 05 20:45:33 haproxy.kifarunix-demo.com haproxy[21425]: Proxy kifarunixlb started. Jun 05 20:45:33 haproxy.kifarunix-demo.com haproxy[21425]: Proxy webapps started. Jun 05 20:45:33 haproxy.kifarunix-demo.com haproxy[21425]: Proxy webapps started. Jun 05 20:45:33 haproxy.kifarunix-demo.com haproxy[21425]: Proxy stats started. Jun 05 20:45:33 haproxy.kifarunix-demo.com haproxy[21425]: Proxy stats started. Jun 05 20:45:33 haproxy.kifarunix-demo.com haproxy[21425]: [NOTICE] 156/204533 (21425) : New worker #1 (21440) forked Jun 05 20:45:33 haproxy.kifarunix-demo.com systemd[1]: Started HAProxy Load Balancer.
Jika UFW sedang berjalan, Buka port 443 serta port statistik;
ufw allow 443/tcp
ufw allow 8443/tcp
Verifikasi Pengaturan Penyeimbangan Beban HAProxy di Ubuntu 20.04
Anda sekarang dapat mengakses HAProxy Anda dari browser untuk mengonfirmasi pengaturan LB Anda. Gunakan alamat, https[s]://lb-server-IP-or-hostname.
Halaman pertama menampilkan konten dari backend pertama yang ditentukan, dalam demo ini, app01. Ingat algoritma LB yang digunakan di sini, roundrobin.
Jika Anda mereload url, konten dari aplikasi kedua akan ditampilkan;
Anda juga dapat memeriksa statistik HAProxy Anda, http[s]://lb-server-IP-or-hostname[:port]/stats. Jika Anda mengaktifkan otentikasi dasar, Anda akan diminta untuk mengotentikasi.
Dan di sana Anda mendapatkan statistik Anda.
Itu membawa kita ke akhir tutorial tentang cara menginstal dan Setup HAProxy di Ubuntu 20.04.
Bacaan lebih lanjut
Panduan Konfigurasi HAProxy
Tutorial Terkait
Instal dan Setup HAProxy di CentOS 8
Setup HAProxy Load Balancer di Fedora 30/Fedora 29
Cara Memasang dan Mengonfigurasi Pound sebagai penyeimbang Beban HTTP Apache di Ubuntu 16.04