Haproxy populer untuk penyeimbangan beban karena efisiensi, keandalan, dan memori serta jejak CPU yang rendah. Load balancing adalah solusi umum untuk mendistribusikan aplikasi web secara horizontal di beberapa host sekaligus memberikan satu titik akses ke layanan kepada pengguna.
Ini tersedia untuk diinstal pada distribusi Linux utama. Dalam panduan ini kita akan mempelajari cara menginstal dan mengkonfigurasi HAProxy load balancer di Ubuntu 20.04.
Cek juga:
- Cara menginstal dan Mengkonfigurasi load balancer HAProxy di Rocky Linux/Alma Linux 8
- Cara menginstal dan Mengonfigurasi penyeimbang beban HAProxy di Debian 11
HAProxy Algoritme penyeimbangan beban
Algoritme penyeimbangan digunakan untuk memutuskan ke server mana di backend setiap koneksi ditransfer. Beberapa opsi yang berguna termasuk yang berikut:
- Roundrobin: Setiap server digunakan secara bergiliran sesuai dengan bobotnya. Ini adalah algoritma yang paling halus dan paling adil ketika waktu pemrosesan server tetap terdistribusi secara merata. Algoritme ini bersifat dinamis, yang memungkinkan bobot server disesuaikan dengan cepat.
- Leastconn: Server dengan jumlah koneksi terendah dipilih. Round-robin dilakukan antara server dengan beban yang sama. Penggunaan algoritme ini direkomendasikan untuk sesi yang panjang, seperti LDAP, SQL, TSE, dll, tetapi tidak terlalu cocok untuk sesi singkat seperti HTTP.
- Pertama: Server pertama dengan slot koneksi yang tersedia menerima koneksi. Server dipilih dari pengenal numerik terendah hingga tertinggi, yang defaultnya adalah posisi server di ladang. Setelah server mencapai nilai maxconn, server berikutnya akan digunakan.
- Sumber: Alamat IP sumber di-hash dan dibagi dengan berat total server yang berjalan untuk menentukan server mana yang akan menerima permintaan. Dengan cara ini, alamat IP klien yang sama akan selalu mencapai server yang sama sementara server tetap sama.
Daftar Isi
- Memastikan bahwa server selalu mutakhir
- Memasang HAProxy
- Mengonfigurasi HAProxy sebagai penyeimbang beban
- Menguji penyiapan
- Sandi melindungi halaman Statistik HAProxy
1. Memastikan bahwa server sudah diperbarui
Sebelum melanjutkan, izinkan kami memastikan bahwa server sudah diperbarui. Gunakan perintah ini untuk mencapai ini:
sudo apt update
sudo apt upgrade -y
2. Memasang Haproxy
Paket yang menyediakan haproxy tersedia di Repos Debian default. Instal menggunakan perintah ini:
sudo apt install -y haproxy
Konfirmasi instalasi dengan perintah ini:
$ apt-cache policy haproxy
haproxy:
Installed: 2.0.13-2ubuntu0.3
Candidate: 2.0.13-2ubuntu0.3
Version table:
*** 2.0.13-2ubuntu0.3 500
500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages
500 http://security.ubuntu.com/ubuntu focal-security/main amd64 Packages
100 /var/lib/dpkg/status
2.0.13-2 500
500 http://eu-west-3.ec2.archive.ubuntu.com/ubuntu focal/main amd64 Packages
3. Mengonfigurasi HAProxy sebagai penyeimbang beban
Untuk mengonfigurasi HAProxy sebagai penyeimbang beban, kita perlu memberi tahu jenis koneksi apa yang harus didengarkan dan ke mana koneksi harus di-relay. Ini dilakukan dengan membuat file konfigurasi /etc/haproxy/haproxy.cfg
dengan pengaturan yang ditentukan.
Penyeimbangan beban pada lapisan 4
Setelah instalasi, HAProxy sudah memiliki template untuk mengkonfigurasi load balancer. Buka file konfigurasi menggunakan editor teks Anda, saya menggunakan vim:
sudo vim /etc/haproxy/haproxy.cfg
Tambahkan konten ini untuk mengonfigurasi antarmuka mendengarkan dan antarmuka backend tempat lalu lintas akan diseimbangkan dengan beban.
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server <server1 name> <private IP 1>:80 check
server <server2 name> <private IP 2>:80 check
Ganti
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server web_server_1 10.70.5.41:80 check
server web_server_2 10.70.5.187:80 check
Di atas mendefinisikan penyeimbang beban lapisan 4 dengan nama front-end http_front mendengarkan nomor port 80, yang kemudian mengarahkan lalu lintas ke backend default bernama http_back. URI statistik tambahan /haproxy?stats
mengaktifkan halaman statistik pada alamat yang ditentukan.
Penimbangan beban pada lapisan 7
Kami juga dapat mengonfigurasi penyeimbang beban untuk bekerja pada lapisan 7. Ini berguna ketika bagian dari aplikasi web Anda berada di host yang berbeda. Ini dapat dicapai dengan mengkondisikan transfer koneksi, misalnya melalui URL.
Buka file konfigurasi menggunakan editor teks Anda, saya menggunakan vim:
sudo vim /etc/haproxy/haproxy.cfg
Kemudian tambahkan konfigurasi ini
frontend http_front
bind *:80
stats uri /haproxy?stats
acl url_blog path_beg /blog
use_backend blog_back if url_blog
default_backend http_back
backend http_back
balance roundrobin
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
backend blog_back
server <server name> <private IP>:80 check
server <server name> <private IP>:80 check
Bagian depan mendeklarasikan aturan ACL bernama url_blog yang berlaku untuk semua koneksi dengan jalur yang dimulai dengan /blog. Use_backend menentukan bahwa koneksi yang cocok dengan kondisi url_blog harus dilayani oleh backend bernama blog_back, sementara semua permintaan lainnya ditangani oleh backend default.
Di sisi backend, konfigurasi menyiapkan dua grup server, http_back seperti sebelumnya dan yang baru disebut blog_back yang secara khusus menghubungkan server ke example.com/blog.
Setelah melakukan konfigurasi, simpan file dan restart HAProxy dengan perintah berikutnya.
sudo systemctl restart haproxy
Jika Anda mendapatkan kesalahan atau peringatan saat memulai, periksa konfigurasi apakah ada kesalahan ketik, lalu coba mulai ulang lagi.
Mengonfigurasi SSL
Jika Anda memiliki file kunci pribadi dan file sertifikat yang ingin Anda gunakan dengan HAProxy, gabungkan keduanya dengan perintah ini.
cat citizix.fullchain.pem citizix.key > citizix.pem
Kemudian konfigurasikan HAProxy untuk menggunakan sertifikat SSL di frontend.
frontend http_front
bind *:80
bind *:443 ssl crt /etc/letsencrypt/live/apps.citizix.com/citizix.pem
4. Menguji penyiapan
Dengan HAProxy dikonfigurasi dan berjalan, buka IP publik server penyeimbang beban Anda di browser web dan periksa apakah Anda terhubung ke backend dengan benar. Parameter stats uri dalam konfigurasi mengaktifkan halaman statistik di alamat yang ditentukan.
http://<Haproxy public IP>/haproxy?stats
Saat Anda memuat halaman statistik dan semua server Anda tercantum dalam warna hijau, konfigurasi Anda berhasil!
Halaman statistik berisi beberapa informasi berguna untuk melacak host web Anda termasuk waktu naik dan turun dan jumlah sesi. Jika server tercantum dalam warna merah, periksa apakah server dihidupkan dan Anda dapat melakukan ping dari mesin penyeimbang beban.
Jika penyeimbang beban Anda tidak membalas, periksa apakah koneksi HTTP tidak diblokir oleh firewall. Konfirmasikan juga bahwa HAProxy berjalan dengan perintah di bawah ini.
sudo systemctl status haproxy
5. Kata sandi melindungi halaman statistik HAProxy
Memiliki halaman statistik yang hanya terdaftar di bagian depan, bagaimanapun, terbuka untuk umum bagi siapa saja untuk melihat, yang mungkin bukan ide yang bagus. Sebagai gantinya, Anda dapat menyetelnya ke nomor portnya sendiri dengan menambahkan contoh di bawah ini di akhir haproxy.cfg
Anda mengajukan. Ganti nama pengguna dan sandi dengan sesuatu yang aman.
listen stats bind *:8181 stats enable stats uri / stats realm Haproxy\ Statistics stats auth username:password
Setelah menambahkan grup dengarkan baru, hapus referensi lama ke statistik uri dari grup frontend. Setelah selesai, simpan file dan mulai ulang HAProxy lagi.
sudo systemctl restart haproxy
Kemudian buka kembali penyeimbang beban dengan nomor port baru, dan masuk dengan nama pengguna dan kata sandi yang Anda atur di file konfigurasi.
http://<load balancer public IP>:8181
Periksa apakah server Anda masih melaporkan semua hijau lalu buka hanya IP penyeimbang beban tanpa nomor port apa pun di browser web Anda.
http://<load balancer public IP>/
Jika server backend Anda memiliki setidaknya halaman arahan yang sedikit berbeda, Anda akan melihat bahwa setiap kali Anda memuat ulang halaman, Anda mendapatkan balasan dari host yang berbeda.
Kesimpulan
Hanya itu saja! Dalam panduan ini, kami mempelajari cara menginstal dan mengonfigurasi HAProxy untuk memuat lalu lintas keseimbangan. Ini akan meningkatkan kinerja dan ketersediaan aplikasi web Anda.