Maqolaning tarjimasi kurs boshlanishi arafasida tayyorlangan
Yuklarni muvozanatlash foydalanuvchilarga xizmatga kirishning yagona nuqtasini ta'minlagan holda bir nechta xostlar bo'ylab veb-ilovalarni gorizontal ravishda o'lchash uchun keng tarqalgan echimdir.
HAProxy resurslardan foydalanishni optimallashtirishga, o'tkazish qobiliyatini oshirishga, javob berish vaqtini kamaytirishga va har qanday individual resursni ortiqcha yuklashdan qochishga intiladi. Uni CentOS 8 kabi turli xil Linux distributivlariga o'rnatish mumkin, biz ushbu qo'llanmada e'tibor qaratamiz, shuningdek tizimlar
HAProxy, ayniqsa, juda yuqori trafikka ega veb-saytlar uchun mos keladi va shuning uchun ko'pincha ko'p serverli veb-xizmat konfiguratsiyalarining ishonchliligi va ishlashini yaxshilash uchun ishlatiladi. Ushbu qo'llanma HAProxy-ni CentOS 8 bulutli xostida yuk muvozanatlashtiruvchisi sifatida o'rnatish bo'yicha qadamlarni belgilaydi, so'ngra u trafikni veb-serverlaringizga yo'naltiradi.
Eng yaxshi natijalarga erishish uchun sizda kamida ikkita veb-server va yukni muvozanatlash serveri bo'lishi kerak. Veb-serverlar o'rtasida yuk muvozanatini sinab ko'rish uchun kamida nginx yoki httpd kabi asosiy veb-xizmatiga ega bo'lishi kerak.
CentOS 8 da HAProxy o'rnatilmoqda
HAProxy tez rivojlanayotgan ochiq kodli dastur bo'lgani uchun standart CentOS omborlarida mavjud bo'lgan tarqatish eng so'nggi versiya bo'lmasligi mumkin. Joriy versiyani bilish uchun quyidagi buyruqni bajaring:
sudo yum info haproxy
HAProxy har doim tanlash uchun uchta barqaror versiyani taqdim etadi: ikkita eng so'nggi qo'llab-quvvatlanadigan versiya va uchinchi, hali ham muhim yangilanishlarni olayotgan eski versiya. Siz har doim HAProxy veb-saytida keltirilgan eng so'nggi barqaror versiyani tekshirishingiz va keyin qaysi versiya bilan ishlashni tanlashingiz mumkin.
Ushbu qo'llanmada biz qo'llanmani yozish vaqtida standart omborlarda hali mavjud bo'lmagan so'nggi barqaror 2.0 versiyasini o'rnatamiz. Siz uni asl manbadan o'rnatishingiz kerak bo'ladi. Lekin birinchi navbatda, dasturni yuklab olish va kompilyatsiya qilish uchun zarur shartlarga javob berganingizni tekshiring.
sudo yum install gcc pcre-devel tar make -y
Quyidagi buyruq yordamida manba kodini yuklab oling. Yangiroq versiya mavjudligini tekshirishingiz mumkin
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Yuklab olish tugallangach, quyidagi buyruq yordamida fayllarni chiqarib oling:
tar xzvf ~/haproxy.tar.gz -C ~/
Ochilmagan manba katalogiga o'ting:
cd ~/haproxy-2.0.7
Keyin tizimingiz uchun dasturni kompilyatsiya qiling:
make TARGET=linux-glibc
Va nihoyat, HAProxy-ning o'zini o'rnating:
sudo make install
HAProxy hozir o'rnatildi, lekin uni ishlashi uchun ba'zi qo'shimcha manipulyatsiyalar talab qilinadi. Quyida dasturiy ta'minot va xizmatlarni sozlashni davom ettiramiz.
Serveringiz uchun HAProxy sozlanmoqda
Endi HAProxy yozuvlari uchun quyidagi katalog va statistik faylni qo'shing:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Ikkilik fayllar uchun ramziy havola yarating, shunda siz HAProxy buyruqlarini oddiy foydalanuvchi sifatida ishlatishingiz mumkin:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Agar siz tizimingizga proksi-serverni xizmat sifatida qo'shmoqchi bo'lsangiz, misollardan haproxy.init faylini /etc/init.d katalogingizga ko'chiring. Skript ishga tushishi uchun fayl ruxsatlarini tahrirlang va keyin systemd demonini qayta ishga tushiring:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Shuningdek, tizim ishga tushganda xizmatni avtomatik ravishda qayta ishga tushirishga ruxsat berishingiz kerak:
sudo chkconfig haproxy on
Qulaylik uchun HAProxy-ni ishga tushirish uchun yangi foydalanuvchi qo'shish tavsiya etiladi:
sudo useradd -r haproxy
Shundan so'ng, quyidagi buyruq yordamida o'rnatilgan versiya raqamini yana tekshirishingiz mumkin:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Bizning holatda, versiya yuqoridagi misolda ko'rsatilganidek, 2.0.7 bo'lishi kerak.
Nihoyat, CentOS 8 da standart xavfsizlik devori ushbu loyiha uchun juda cheklangan. Kerakli xizmatlarga ruxsat berish va xavfsizlik devorini tiklash uchun quyidagi buyruqlardan foydalaning:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Yuklash balansini sozlash
HAProxy-ni sozlash juda oddiy jarayon. Aslida, siz qilishingiz kerak bo'lgan yagona narsa HAProxy-ga u qanday ulanishlarni tinglashi va ularni qayerga yuborishi kerakligini aytishdir.
Bu sozlamalarni belgilash bilan /etc/haproxy/haproxy.cfg konfiguratsiya faylini yaratish orqali amalga oshiriladi. HAProxy konfiguratsiya imkoniyatlari haqida o'qishingiz mumkin
Transport qatlamida yukni muvozanatlash (4-qavat)
Asosiy sozlashdan boshlaylik. Yangi konfiguratsiya faylini yarating, masalan, yordamida vi quyidagi buyruq bilan:
sudo vi /etc/haproxy/haproxy.cfg
Faylga quyidagi bo'limlarni qo'shing. O'zgartiring server_name statistika sahifasida serverlaringizni nima deb atash kerak va private_ip — veb-trafikni yo'naltirmoqchi bo'lgan serverlarning shaxsiy IP manzillari. Shaxsiy IP manzillarni tekshirishingiz mumkin
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
Bu 4-portda http_front tinglovchi tashqi nomli transport qatlami yuk balanslagichini (80-qatlam) belgilaydi, so'ngra trafikni http_back nomli standart backendga yo'naltiradi. Qo'shimcha statistika /haproxy?stats statistika sahifasini belgilangan manzil bilan bog'laydi.
Har xil yuklarni muvozanatlash algoritmlari.
Backend bo'limida serverlarni ko'rsatish HAProxy-ga iloji bo'lsa, aylanma algoritmga muvofiq yuklarni muvozanatlash uchun ushbu serverlardan foydalanish imkonini beradi.
Balanslash algoritmlari har bir ulanishning qaysi serverga uzatilishini aniqlash uchun ishlatiladi. Bu erda foydali variantlardan ba'zilari:
- Rounddrobin: Har bir server o'z vazniga qarab navbatma-navbat ishlatiladi. Bu serverlarni qayta ishlash vaqti teng taqsimlanganda eng yumshoq va adolatli algoritmdir. Ushbu algoritm dinamik bo'lib, serverning og'irligini tezda sozlash imkonini beradi.
- Leastconn: eng kam ulanishga ega server tanlanadi. Round robin bir xil yuklangan serverlar o'rtasida amalga oshiriladi. Ushbu algoritmdan foydalanish LDAP, SQL, TSE va boshqalar kabi uzoq sessiyalar uchun tavsiya etiladi, ammo HTTP kabi qisqa seanslar uchun juda mos kelmaydi.
- Birinchisi: Mavjud ulanish uyalariga ega birinchi server ulanishni qabul qiladi. Serverlar eng past raqamli identifikatordan eng yuqoriga qarab tanlanadi, bu esa serverning fermadagi holatiga mos keladi. Server maxconn ga yetganda, keyingi server ishlatiladi.
- Manba: Qaysi server so'rovni qabul qilishini aniqlash uchun manba IP manzili xeshlanadi va ishlaydigan serverlarning umumiy og'irligiga bo'linadi. Shunday qilib, mijozning IP-manzili har doim bir xil serverga o'tadi, serverlar esa bir xil bo'lib qoladi.
Ilova darajasida yuk balansini sozlash (7-qavat)
Mavjud bo'lgan yana bir variant - bu sizning veb-ilovangizning qismlari turli xostlarda joylashganida foydali bo'lgan dastur sathida (7-qatlam) ishlash uchun yuk balansini sozlashdir. Bunga ulanishning uzatilishini qisqartirish orqali erishish mumkin, masalan, URL orqali.
Matn muharriri yordamida HAProxy konfiguratsiya faylini oching:
sudo vi /etc/haproxy/haproxy.cfg
Keyin quyidagi misolga muvofiq frontend va backend segmentlarini sozlang:
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 url_blog deb nomlangan ACL qoidasini e'lon qiladi, u /blog bilan boshlanadigan yo'llar bilan barcha ulanishlar uchun amal qiladi. Use_backend url_blog shartiga mos keladigan ulanishlar blog_back nomli backend tomonidan xizmat qilishi kerakligini va boshqa barcha so'rovlar standart backend tomonidan amalga oshirilishini bildiradi.
Orqa tomonda konfiguratsiya ikkita server guruhini o'rnatadi: avvalgidek http_back va example.com/blog ga ulanishlarni boshqaradigan blog_back deb nomlangan yangi.
Sozlamalarni o'zgartirgandan so'ng, faylni saqlang va quyidagi buyruq yordamida HAProxy-ni qayta ishga tushiring:
sudo systemctl restart haproxy
Agar ishga tushirish vaqtida biron-bir ogohlantirish yoki xato xabari olsangiz, ular uchun konfiguratsiyani tekshiring va barcha kerakli fayl va papkalarni yaratganingizga ishonch hosil qiling, keyin qayta ishga tushirishga harakat qiling.
O'rnatishni sinab ko'rish
HAProxy sozlangan va ishga tushirilgandan so'ng, brauzerda yuk balansi serverining umumiy IP manzilini oching va backendga to'g'ri ulanganligingizni tekshiring. Konfiguratsiyadagi stats uri parametri belgilangan manzilda statistika sahifasini yaratadi.
http://load_balancer_public_ip/haproxy?stats
Statistik sahifani yuklaganingizda, agar barcha serverlaringiz yashil rangda bo'lsa, o'rnatish muvaffaqiyatli bo'ldi!
Statistik sahifada veb-xostlaringizni kuzatish uchun ba'zi foydali ma'lumotlar, jumladan, yuqoriga/pastga vaqti va seanslar soni mavjud. Agar server qizil rang bilan belgilangan bo'lsa, server yoqilganligiga ishonch hosil qiling va uni yuk balanslash mashinasidan ping qilishingiz mumkin.
Agar yuk balanslagichingiz javob bermasa, HTTP ulanishlari xavfsizlik devori tomonidan bloklanmaganligiga ishonch hosil qiling. Shuningdek, HAProxy quyidagi buyruq yordamida ishlayotganligiga ishonch hosil qiling:
sudo systemctl status haproxy
Statistika sahifasini parol bilan himoya qilish
Biroq, agar statistika sahifasi oddiygina old tomonda ko'rsatilgan bo'lsa, u hamma ko'rishi uchun ochiq, bu yaxshi fikr bo'lmasligi mumkin. Buning o'rniga, haproxy.cfg faylingiz oxiriga quyidagi misolni qo'shib, unga maxsus port raqamini belgilashingiz mumkin. O'zgartiring username и parol xavfsiz narsa uchun:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Yangi tinglovchilar guruhini qo'shgandan so'ng, oldingi guruhdan eski statistika uri havolasini olib tashlang. Tugallangach, faylni saqlang va HAProxy-ni qayta ishga tushiring.
sudo systemctl restart haproxy
Keyin yangi port raqami bilan yuk balansini qayta oching va konfiguratsiya faylida ko'rsatgan foydalanuvchi nomi va parol bilan tizimga kiring.
http://load_balancer_public_ip:8181
Barcha serverlaringiz hali ham yashil rangda ekanligiga ishonch hosil qiling va brauzeringizda port raqamlarisiz faqat yuk balansi IP-ni oching.
http://load_balancer_public_ip/
Agar sizning serverlaringizda hech bo'lmaganda turli xil ochilish sahifalari mavjud bo'lsa, har safar sahifani qayta yuklaganingizda boshqa xostdan javob olishingizni sezasiz. Siz konfiguratsiya bo'limida turli xil muvozanatlash algoritmlarini sinab ko'rishingiz yoki tekshirishingiz mumkin
Xulosa: HAProxy Load Balancer
HAProxy yuk balanslagichingizni muvaffaqiyatli sozlaganingiz bilan tabriklaymiz! Hatto yukni muvozanatlashning asosiy sozlamalari bilan siz veb-ilovangizning ishlashi va mavjudligini sezilarli darajada yaxshilashingiz mumkin. Ushbu qo'llanma HAProxy bilan yuklarni muvozanatlash bo'yicha kirish bo'lib, u tezkor sozlash qo'llanmasida ko'rib chiqilishi mumkin bo'lgan narsalardan ham ko'proq narsaga qodir. Foydalanishda turli xil konfiguratsiyalar bilan tajriba o'tkazishni tavsiya etamiz
Veb-xizmatingizni bo'sh joy bilan himoya qilish uchun bir nechta xostlardan foydalangan holda, yuk balanslagichining o'zi hali ham muvaffaqiyatsizlik nuqtasini ko'rsatishi mumkin. Bir nechta yuk balanslagichlari o'rtasida suzuvchi IP o'rnatish orqali yuqori mavjudligini yanada yaxshilashingiz mumkin. Bu haqda ko'proq ma'lumotni bizning maqolamizda topishingiz mumkin
Kurs haqida batafsil
Manba: www.habr.com