Menginstal penyeimbang beban HAProxy di CentOS

Terjemahan artikel disiapkan pada malam dimulainya kursus "Administrator Linux. Virtualisasi dan pengelompokan"

Menginstal penyeimbang beban HAProxy di CentOS

Penyeimbangan beban adalah solusi umum untuk menskalakan aplikasi web secara horizontal di beberapa host sekaligus menyediakan satu titik akses ke layanan kepada pengguna. HAProxy adalah salah satu perangkat lunak penyeimbang beban sumber terbuka paling populer yang juga menyediakan ketersediaan tinggi dan fungsionalitas proxy.

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 Debian 8 и Ubuntu 16.

Menginstal penyeimbang beban HAProxy di CentOS

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 Halaman unduh HAProxy.

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 di halaman dokumentasijika Anda ingin tahu lebih banyak tentangnya.

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 pada panel kontrol UpCloud dan di tab Jaringan pribadi di menu jaringan.

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!

Menginstal penyeimbang beban HAProxy di CentOS

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 dokumentasi lengkap.

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 dokumentasi yang luas, tersedia untuk HAProxy, lalu mulai merencanakan penyeimbangan beban untuk lingkungan produksi Anda.

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 artikel tentang alamat IP mengambang di UpCloud.

Lebih lanjut tentang kursus "Administrator Linux. Virtualisasi dan pengelompokan"***

Sumber: www.habr.com

Tambah komentar