Terjemahan artikel telah disediakan pada malam permulaan kursus
Pengimbangan beban ialah penyelesaian biasa untuk menskalakan aplikasi web secara mendatar merentas berbilang hos sambil menyediakan pengguna dengan satu titik akses kepada perkhidmatan.
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
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
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
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
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!
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
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
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
Lebih lanjut mengenai kursus
Sumber: www.habr.com