Memasang pengimbang beban HAProxy pada CentOS

Terjemahan artikel telah disediakan pada malam permulaan kursus "Pentadbir Linux. Maya dan pengelompokan"

Memasang pengimbang beban HAProxy pada CentOS

Pengimbangan beban ialah penyelesaian biasa untuk menskalakan aplikasi web secara mendatar merentas berbilang hos sambil menyediakan pengguna dengan satu titik akses kepada perkhidmatan. HAProxy ialah salah satu perisian pengimbangan beban sumber terbuka paling popular yang turut menyediakan ketersediaan tinggi dan fungsi proksi.

HAProxy berusaha untuk mengoptimumkan penggunaan sumber, memaksimumkan pemprosesan, meminimumkan masa tindak balas, dan mengelakkan beban berlebihan mana-mana sumber individu. Ia boleh dipasang pada pelbagai pengedaran Linux, seperti CentOS 8, yang akan kami fokuskan dalam panduan ini, serta sistem Debian 8 ΠΈ Ubuntu 16.

Memasang pengimbang beban HAProxy pada CentOS

HAProxy amat sesuai untuk tapak web dengan trafik yang sangat tinggi dan oleh itu sering digunakan untuk meningkatkan kebolehpercayaan dan prestasi konfigurasi perkhidmatan web berbilang pelayan. Panduan ini menggariskan langkah untuk menyediakan HAProxy sebagai pengimbang beban pada hos awan CentOS 8, yang kemudiannya mengarahkan trafik ke pelayan web anda.

Sebagai prasyarat untuk hasil terbaik, anda harus mempunyai sekurang-kurangnya dua pelayan web dan pelayan pengimbangan beban. Pelayan web mesti menjalankan sekurang-kurangnya perkhidmatan web asas seperti nginx atau httpd untuk menguji pengimbangan beban antara mereka.

Memasang HAProxy pada CentOS 8

Oleh kerana HAProxy ialah aplikasi sumber terbuka yang berkembang pesat, pengedaran yang tersedia untuk anda dalam repositori CentOS standard mungkin bukan versi terkini. Untuk mengetahui versi semasa, jalankan arahan berikut:

sudo yum info haproxy

HAProxy sentiasa menyediakan tiga versi yang stabil untuk dipilih: dua versi yang disokong terbaharu dan versi ketiga yang lebih lama yang masih menerima kemas kini kritikal. Anda sentiasa boleh menyemak versi stabil terkini yang disenaraikan di tapak web HAProxy dan kemudian memutuskan versi yang anda mahu gunakan.

Dalam panduan ini, kami akan memasang versi stabil terkini 2.0, yang belum tersedia dalam repositori standard semasa menulis panduan. Anda perlu memasangnya daripada sumber asal. Tetapi pertama sekali, semak sama ada anda telah memenuhi syarat yang diperlukan untuk memuat turun dan menyusun atur cara.

sudo yum install gcc pcre-devel tar make -y

Muat turun kod sumber menggunakan arahan di bawah. Anda boleh menyemak sama ada terdapat versi yang lebih baharu tersedia pada Halaman muat turun HAProxy.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Setelah muat turun selesai, ekstrak fail menggunakan arahan di bawah:

tar xzvf ~/haproxy.tar.gz -C ~/

Pergi ke direktori sumber yang tidak dibungkus:

cd ~/haproxy-2.0.7

Kemudian susun atur cara untuk sistem anda:

make TARGET=linux-glibc

Dan akhirnya, pasang HAProxy sendiri:

sudo make install

HAProxy kini dipasang, tetapi ia memerlukan beberapa manipulasi tambahan untuk menjadikannya berfungsi. Mari teruskan menyediakan perisian dan perkhidmatan di bawah.

Menyediakan HAProxy untuk pelayan anda

Sekarang tambahkan direktori dan fail statistik berikut untuk entri HAProxy:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Buat pautan simbolik untuk binari supaya anda boleh menjalankan arahan HAProxy sebagai pengguna biasa:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Jika anda ingin menambah proksi pada sistem anda sebagai perkhidmatan, salin fail haproxy.init daripada contoh ke direktori /etc/init.d anda. Edit kebenaran fail supaya skrip akan dijalankan, dan kemudian mulakan semula 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 perlu membenarkan perkhidmatan dimulakan semula secara automatik apabila sistem bermula:

sudo chkconfig haproxy on

Untuk kemudahan, ia juga disyorkan untuk menambah pengguna baharu untuk menjalankan HAProxy:

sudo useradd -r haproxy

Selepas ini, anda boleh menyemak semula nombor versi yang dipasang menggunakan arahan berikut:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

Dalam kes kami, versi hendaklah 2.0.7, seperti yang ditunjukkan dalam contoh output di atas.

Akhirnya, tembok api lalai dalam CentOS 8 agak terhad untuk projek ini. Gunakan arahan berikut untuk membenarkan perkhidmatan yang diperlukan dan menetapkan semula tembok api:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Persediaan Pengimbang Beban

Menyediakan HAProxy adalah proses yang agak mudah. Pada asasnya, apa yang anda perlu lakukan ialah memberitahu HAProxy sambungan yang perlu didengari dan di mana ia harus menyampaikannya.

Ini dilakukan dengan mencipta fail konfigurasi /etc/haproxy/haproxy.cfg dengan menetapkan tetapan. Anda boleh membaca tentang pilihan konfigurasi HAProxy pada halaman dokumentasijika anda ingin mengetahui lebih lanjut mengenainya.

Pengimbangan beban pada lapisan pengangkutan (lapisan 4)

Mari kita mulakan dengan persediaan asas. Buat fail konfigurasi baharu, contohnya menggunakan vi dengan arahan di bawah:

sudo vi /etc/haproxy/haproxy.cfg

Tambahkan bahagian berikut pada fail. Gantikan nama pelayan apa yang harus memanggil pelayan anda pada halaman statistik, dan private_ip β€” alamat IP peribadi pelayan yang anda ingin arahkan trafik web. Anda boleh menyemak alamat IP peribadi pada panel kawalan UpCloud dan pada tab Rangkaian peribadi dalam menu rangkaian.

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 mentakrifkan pengimbang beban lapisan pengangkutan (lapisan 4) yang dinamakan secara luaran mendengar http_front pada port 80, yang kemudiannya memajukan trafik ke bahagian belakang lalai bernama http_back. Statistik tambahan /haproxy?stats menghubungkan halaman statistik ke alamat yang ditentukan.

Pelbagai algoritma pengimbangan beban.

Menentukan pelayan di bahagian belakang membolehkan HAProxy menggunakan pelayan ini untuk mengimbangi beban mengikut algoritma round-robin apabila boleh.

Algoritma pengimbangan digunakan untuk menentukan pelayan di bahagian belakang setiap sambungan dihantar ke. Berikut ialah beberapa pilihan yang berguna:

  • Robin pusingan: Setiap pelayan digunakan secara bergilir-gilir mengikut beratnya. Ini adalah algoritma yang paling lancar dan adil apabila masa pemprosesan pelayan kekal sama rata. Algoritma ini adalah dinamik, membolehkan berat pelayan diselaraskan dengan cepat.
  • Leastconn: pelayan dengan sambungan paling sedikit dipilih. Round robin dilakukan antara pelayan dengan beban yang sama. Menggunakan algoritma ini disyorkan untuk sesi yang panjang seperti LDAP, SQL, TSE, dll., tetapi ia tidak begitu sesuai untuk sesi pendek seperti HTTP.
  • Pertama: Pelayan pertama dengan slot sambungan yang tersedia menerima sambungan. Pelayan dipilih daripada ID angka terendah kepada yang tertinggi, yang lalai kepada kedudukan pelayan dalam ladang. Setelah pelayan mencapai maxconn, pelayan seterusnya digunakan.
  • sumber: Alamat IP sumber dicincang dan dibahagikan dengan jumlah berat pelayan yang sedang berjalan untuk menentukan pelayan yang akan menerima permintaan tersebut. Dengan cara ini, alamat IP pelanggan yang sama akan sentiasa pergi ke pelayan yang sama, manakala pelayan kekal sama.

Menyediakan pengimbangan beban pada tahap aplikasi (lapisan 7)

Pilihan lain yang tersedia ialah untuk mengkonfigurasi pengimbang beban untuk dijalankan pada lapisan aplikasi (lapisan 7), yang berguna apabila bahagian aplikasi web anda terletak pada hos yang berbeza. Ini boleh dicapai dengan mengecilkan penghantaran sambungan, contohnya melalui URL.

Buka fail konfigurasi HAProxy menggunakan editor teks:

sudo vi /etc/haproxy/haproxy.cfg

Kemudian konfigurasikan bahagian hadapan dan bahagian belakang seperti contoh di bawah:

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

Bahagian hadapan mengisytiharkan peraturan ACL yang dipanggil url_blog yang digunakan untuk semua sambungan dengan laluan bermula dengan /blog. Use_backend menentukan bahawa sambungan yang sepadan dengan syarat url_blog harus disediakan oleh backend bernama blog_back dan semua permintaan lain dikendalikan oleh backend lalai.

Di bahagian belakang, konfigurasi menyediakan dua kumpulan pelayan: http_back, seperti sebelumnya dan yang baharu dipanggil blog_back, yang mengendalikan sambungan ke example.com/blog.

Selepas menukar tetapan, simpan fail dan mulakan semula HAProxy menggunakan arahan berikut:

sudo systemctl restart haproxy

Jika anda menerima sebarang amaran atau mesej ralat semasa permulaan, semak konfigurasi anda untuknya dan pastikan anda telah mencipta semua fail dan folder yang diperlukan, kemudian cuba mulakan semula sekali lagi.

Menguji persediaan

Setelah HAProxy dikonfigurasikan dan dijalankan, buka alamat IP awam pelayan pengimbang beban dalam penyemak imbas dan semak sama ada anda disambungkan ke bahagian belakang dengan betul. Parameter uri statistik dalam konfigurasi mencipta halaman statistik di alamat yang ditentukan.

http://load_balancer_public_ip/haproxy?stats

Apabila anda memuatkan halaman statistik, jika semua pelayan anda menunjukkan warna hijau, maka persediaan telah berjaya!

Memasang pengimbang beban HAProxy pada CentOS

Halaman statistik mengandungi beberapa maklumat berguna untuk menjejak hos web anda, termasuk masa naik/turun dan bilangan sesi. Jika pelayan ditanda merah, pastikan pelayan dihidupkan dan anda boleh pingnya daripada mesin pengimbang beban.

Jika pengimbang beban anda tidak bertindak balas, pastikan sambungan HTTP tidak disekat oleh tembok api. Juga pastikan HAProxy berfungsi menggunakan arahan di bawah:

sudo systemctl status haproxy

Melindungi halaman statistik dengan kata laluan

Walau bagaimanapun, jika halaman statistik hanya disenaraikan di bahagian hadapan, maka halaman itu terbuka untuk dilihat oleh semua orang, yang mungkin bukan idea yang baik. Sebaliknya, anda boleh memberikannya nombor port tersuai dengan menambahkan contoh di bawah pada penghujung fail haproxy.cfg anda. Gantikan nama pengguna ΠΈ kata laluan untuk sesuatu yang selamat:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Selepas menambah kumpulan pendengar baharu, alih keluar pautan uri statistik lama daripada kumpulan hujung hadapan. Apabila selesai, simpan fail dan mulakan semula HAProxy.

sudo systemctl restart haproxy

Kemudian buka pengimbang beban sekali lagi dengan nombor port baharu dan log masuk dengan nama pengguna dan kata laluan yang anda tentukan dalam fail konfigurasi.

http://load_balancer_public_ip:8181

Pastikan semua pelayan anda masih menunjukkan warna hijau dan kemudian buka IP pengimbang beban sahaja tanpa sebarang nombor port dalam penyemak imbas anda.

http://load_balancer_public_ip/

Jika anda mempunyai sekurang-kurangnya beberapa kepelbagaian halaman pendaratan pada pelayan bahagian belakang anda, anda akan dapati bahawa setiap kali anda memuatkan semula halaman tersebut, anda mendapat respons daripada hos yang berbeza. Anda boleh mencuba algoritma pengimbangan yang berbeza dalam bahagian konfigurasi atau semak dokumentasi lengkap.

Kesimpulan: Pengimbang Beban HAProxy

Tahniah kerana berjaya menyediakan pengimbang beban HAProxy anda! Walaupun dengan persediaan pengimbangan beban asas, anda boleh meningkatkan prestasi dan ketersediaan aplikasi web anda dengan ketara. Panduan ini hanyalah pengenalan kepada pengimbangan beban dengan HAProxy, yang mampu melakukan lebih daripada apa yang boleh diliputi dalam panduan persediaan pantas. Kami mengesyorkan anda mencuba dengan konfigurasi yang berbeza menggunakan dokumentasi yang luas, tersedia untuk HAProxy, dan kemudian mula merancang pengimbangan beban untuk persekitaran pengeluaran anda.

Dengan menggunakan berbilang hos untuk melindungi perkhidmatan web anda dengan ruang kepala, pengimbang beban itu sendiri mungkin masih menunjukkan titik kegagalan. Anda boleh meningkatkan lagi ketersediaan tinggi dengan memasang IP terapung antara berbilang pengimbang beban. Anda boleh mengetahui lebih lanjut mengenai perkara ini dalam kami artikel tentang alamat IP terapung di UpCloud.

Lebih lanjut mengenai kursus "Pentadbir Linux. Maya dan pengelompokan"***

Sumber: www.habr.com

Tambah komen