Terjemahan artikel disiapkan pada malam dimulainya kursus
Penyeimbangan beban adalah solusi umum untuk menskalakan aplikasi web secara horizontal di beberapa host sekaligus menyediakan satu titik akses ke layanan kepada pengguna.
HAProxy berupaya mengoptimalkan penggunaan sumber daya, memaksimalkan throughput, meminimalkan waktu respons, dan menghindari kelebihan sumber daya individual. Itu dapat diinstal pada berbagai distribusi Linux, seperti CentOS 8, yang akan kami fokuskan dalam panduan ini, serta sistem
HAProxy sangat cocok untuk situs web dengan lalu lintas sangat tinggi dan oleh karena itu sering digunakan untuk meningkatkan keandalan dan kinerja konfigurasi layanan web multi-server. Panduan ini menguraikan langkah-langkah untuk menyiapkan HAProxy sebagai penyeimbang beban pada host cloud CentOS 8, yang kemudian mengarahkan lalu lintas ke server web Anda.
Sebagai prasyarat untuk hasil terbaik, Anda harus memiliki setidaknya dua server web dan server penyeimbang beban. Server web harus menjalankan setidaknya layanan web dasar seperti nginx atau httpd untuk menguji penyeimbangan beban di antara keduanya.
Menginstal HAProxy di CentOS 8
Karena HAProxy adalah aplikasi sumber terbuka yang berkembang pesat, distribusi yang tersedia untuk Anda di repositori CentOS standar mungkin bukan versi terbaru. Untuk mengetahui versi saat ini, jalankan perintah berikut:
sudo yum info haproxy
HAProxy selalu menyediakan tiga versi stabil untuk dipilih: dua versi terbaru yang didukung dan versi ketiga, versi lama yang masih menerima pembaruan penting. Anda selalu dapat memeriksa versi stabil terbaru yang terdaftar di situs HAProxy dan kemudian memutuskan versi mana yang ingin Anda gunakan.
Dalam panduan ini, kami akan menginstal versi stabil terbaru 2.0, yang belum tersedia di repositori standar pada saat panduan ini ditulis. Anda harus menginstalnya dari sumber aslinya. Namun pertama-tama, periksa apakah Anda telah memenuhi persyaratan yang diperlukan untuk mengunduh dan mengkompilasi program.
sudo yum install gcc pcre-devel tar make -y
Unduh kode sumber menggunakan perintah di bawah ini. Anda dapat memeriksa apakah ada versi terbaru yang tersedia
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Setelah pengunduhan selesai, ekstrak file menggunakan perintah di bawah ini:
tar xzvf ~/haproxy.tar.gz -C ~/
Buka direktori sumber yang belum dibongkar:
cd ~/haproxy-2.0.7
Kemudian kompilasi program untuk sistem Anda:
make TARGET=linux-glibc
Dan terakhir, instal HAProxy itu sendiri:
sudo make install
HAProxy sekarang telah terinstal, tetapi memerlukan beberapa manipulasi tambahan agar dapat berfungsi. Mari lanjutkan pengaturan perangkat lunak dan layanan di bawah ini.
Menyiapkan HAProxy untuk server Anda
Sekarang tambahkan direktori dan file statistik berikut untuk entri HAProxy:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Buat tautan simbolik untuk binari sehingga Anda dapat menjalankan perintah HAProxy sebagai pengguna biasa:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Jika Anda ingin menambahkan proxy ke sistem Anda sebagai layanan, salin file haproxy.init dari contoh ke direktori /etc/init.d Anda. Edit izin file agar skrip dapat berjalan, lalu mulai ulang daemon systemd:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Anda juga harus mengizinkan layanan untuk memulai ulang secara otomatis ketika sistem dimulai:
sudo chkconfig haproxy on
Demi kenyamanan, disarankan juga untuk menambahkan pengguna baru untuk menjalankan HAProxy:
sudo useradd -r haproxy
Setelah ini, Anda dapat memeriksa kembali nomor versi yang diinstal menggunakan perintah berikut:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Dalam kasus kami, versinya harus 2.0.7, seperti yang ditunjukkan pada contoh keluaran di atas.
Terakhir, firewall default di CentOS 8 cukup membatasi untuk proyek ini. Gunakan perintah berikut untuk mengizinkan layanan yang diperlukan dan mengatur ulang firewall:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Pengaturan Penyeimbang Beban
Menyiapkan HAProxy adalah proses yang cukup sederhana. Pada dasarnya, yang perlu Anda lakukan hanyalah memberi tahu HAProxy koneksi apa yang harus didengarkannya dan di mana ia harus meneruskannya.
Hal ini dilakukan dengan membuat file konfigurasi /etc/haproxy/haproxy.cfg dengan pengaturan yang ditentukan. Anda dapat membaca tentang opsi konfigurasi HAProxy
Penyeimbangan beban pada lapisan transport (lapisan 4)
Mari kita mulai dengan pengaturan dasar. Buat file konfigurasi baru, misalnya menggunakan vi dengan perintah di bawah ini:
sudo vi /etc/haproxy/haproxy.cfg
Tambahkan bagian berikut ke file. Mengganti nama server apa yang seharusnya memanggil server Anda di halaman statistik, dan pribadi_ip — alamat IP pribadi dari server yang ingin Anda arahkan lalu lintas webnya. Anda dapat memeriksa alamat IP pribadi
global
log /dev/log local0
log /dev/log local1 notice
chroot /var/lib/haproxy
stats timeout 30s
user haproxy
group haproxy
daemon
defaults
log global
mode http
option httplog
option dontlognull
timeout connect 5000
timeout client 50000
timeout server 50000
frontend http_front
bind *:80
stats uri /haproxy?stats
default_backend http_back
backend http_back
balance roundrobin
server server_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
Ini mendefinisikan penyeimbang beban lapisan transport (lapisan 4) yang secara eksternal bernama http_front mendengarkan pada port 80, yang kemudian meneruskan lalu lintas ke backend default bernama http_back. Statistik tambahan /haproxy?stats menghubungkan halaman statistik ke alamat yang ditentukan.
Berbagai algoritma penyeimbangan beban.
Menentukan server di bagian backend memungkinkan HAProxy menggunakan server ini untuk penyeimbangan beban sesuai dengan algoritma round-robin bila memungkinkan.
Algoritma penyeimbangan digunakan untuk menentukan ke server mana di backend setiap koneksi diteruskan. Berikut beberapa opsi yang berguna:
- Roundrobin: Setiap server digunakan secara bergantian sesuai dengan bobotnya. Ini adalah algoritma yang paling lancar dan paling adil ketika waktu pemrosesan server tetap terdistribusi secara merata. Algoritme ini bersifat dinamis, memungkinkan bobot server disesuaikan dengan cepat.
- Koneksi paling sedikit: server dengan koneksi paling sedikit dipilih. Round robin dilakukan antar server dengan beban yang sama. Penggunaan algoritme ini disarankan untuk sesi panjang seperti LDAP, SQL, TSE, dll., tetapi tidak terlalu cocok untuk sesi pendek seperti HTTP.
- Pertama: Server pertama dengan slot koneksi yang tersedia menerima koneksi. Server dipilih dari ID numerik terendah hingga tertinggi, yang defaultnya sesuai dengan posisi server di farm. Setelah server mencapai maxconn, server berikutnya digunakan.
- Sumber: Alamat IP sumber di-hash dan dibagi dengan total bobot server yang berjalan untuk menentukan server mana yang akan menerima permintaan. Dengan cara ini, alamat IP klien yang sama akan selalu masuk ke server yang sama, sementara servernya tetap sama.
Menyiapkan penyeimbangan beban di tingkat aplikasi (lapisan 7)
Opsi lain yang tersedia adalah mengonfigurasi penyeimbang beban agar berjalan pada lapisan aplikasi (lapisan 7), yang berguna ketika bagian aplikasi web Anda terletak di host yang berbeda. Hal ini dapat dicapai dengan membatasi transmisi koneksi, misalnya melalui URL.
Buka file konfigurasi HAProxy menggunakan editor teks:
sudo vi /etc/haproxy/haproxy.cfg
Kemudian konfigurasikan segmen frontend dan backend seperti contoh di bawah 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_name1 private_ip1:80 check
server server_name2 private_ip2:80 check
backend blog_back
server server_name3 private_ip3:80 check
Frontend mendeklarasikan aturan ACL yang disebut url_blog yang berlaku untuk semua koneksi dengan jalur yang dimulai dengan /blog. Use_backend menetapkan bahwa koneksi yang cocok dengan kondisi url_blog harus dilayani oleh backend bernama blog_back, dan semua permintaan lainnya ditangani oleh backend default.
Di sisi backend, konfigurasi menyiapkan dua grup server: http_back, seperti sebelumnya, dan yang baru bernama blog_back, yang menangani koneksi ke example.com/blog.
Setelah mengubah pengaturan, simpan file dan restart HAProxy menggunakan perintah berikut:
sudo systemctl restart haproxy
Jika Anda menerima peringatan atau pesan kesalahan saat startup, periksa konfigurasinya dan pastikan Anda telah membuat semua file dan folder yang diperlukan, lalu coba restart lagi.
Menguji pengaturan
Setelah HAProxy dikonfigurasi dan dijalankan, buka alamat IP publik server penyeimbang beban di browser dan periksa apakah Anda terhubung ke backend dengan benar. Parameter stats uri dalam konfigurasi membuat halaman statistik di alamat yang ditentukan.
http://load_balancer_public_ip/haproxy?stats
Saat Anda memuat halaman statistik, jika semua server Anda menunjukkan warna hijau, berarti pengaturan berhasil!
Halaman statistik berisi beberapa informasi berguna untuk melacak host web Anda, termasuk waktu naik/turun dan jumlah sesi. Jika server ditandai merah, pastikan server dihidupkan dan Anda dapat melakukan ping dari mesin penyeimbang beban.
Jika penyeimbang beban Anda tidak merespons, pastikan koneksi HTTP tidak diblokir oleh firewall. Pastikan juga HAProxy berfungsi menggunakan perintah di bawah ini:
sudo systemctl status haproxy
Melindungi halaman statistik dengan kata sandi
Namun, jika halaman statistik hanya dicantumkan di bagian depan, maka halaman tersebut terbuka untuk dilihat semua orang, dan ini mungkin bukan ide yang bagus. Sebagai gantinya, Anda dapat menetapkan nomor port khusus dengan menambahkan contoh di bawah ini ke akhir file haproxy.cfg Anda. Mengganti nama pengguna и kata sandi untuk sesuatu yang aman:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Setelah menambahkan grup pendengar baru, hapus tautan uri statistik lama dari grup frontend. Jika sudah selesai, simpan file dan restart HAProxy.
sudo systemctl restart haproxy
Kemudian buka kembali load balancer dengan nomor port baru dan login dengan nama pengguna dan kata sandi yang Anda tentukan di file konfigurasi.
http://load_balancer_public_ip:8181
Pastikan semua server Anda masih menunjukkan warna hijau lalu buka IP penyeimbang beban saja tanpa nomor port apa pun di browser Anda.
http://load_balancer_public_ip/
Jika Anda memiliki setidaknya beberapa variasi laman landas di server back-end, Anda akan melihat bahwa setiap kali Anda memuat ulang laman, Anda mendapat respons dari host yang berbeda. Anda dapat mencoba algoritma penyeimbangan yang berbeda di bagian konfigurasi atau memeriksa
Kesimpulan: Penyeimbang Beban HAProxy
Selamat, Anda telah berhasil menyiapkan penyeimbang beban HAProxy Anda! Bahkan dengan pengaturan penyeimbangan beban dasar, Anda dapat meningkatkan kinerja dan ketersediaan aplikasi web Anda secara signifikan. Panduan ini hanyalah pengenalan tentang penyeimbangan beban dengan HAProxy, yang mampu melakukan lebih dari apa yang dapat dibahas dalam panduan pengaturan cepat. Kami merekomendasikan bereksperimen dengan konfigurasi yang berbeda menggunakan
Dengan menggunakan beberapa host untuk melindungi layanan web Anda dengan ruang kepala, penyeimbang beban itu sendiri mungkin masih mengalami titik kegagalan. Anda dapat lebih meningkatkan ketersediaan tinggi dengan memasang IP mengambang di antara beberapa penyeimbang beban. Anda dapat mengetahui lebih lanjut tentang ini di kami
Lebih lanjut tentang kursus
Sumber: www.habr.com