CentOS-da HAProxy yuk balanslagichini o'rnatish

Maqolaning tarjimasi kurs boshlanishi arafasida tayyorlangan "Linux ma'muri. Virtualizatsiya va klasterlash”

CentOS-da HAProxy yuk balanslagichini o'rnatish

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. HAProksi yuklarni muvozanatlash bo'yicha eng mashhur ochiq kodli dasturlardan biri bo'lib, u yuqori darajadagi mavjudlik va proksi-server funktsiyasini ham ta'minlaydi.

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

CentOS-da HAProxy yuk balanslagichini o'rnatish

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 HAProxy yuklab olish sahifasi.

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 hujjatlar sahifasidaagar siz bu haqda ko'proq bilmoqchi bo'lsangiz.

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 UpCloud boshqaruv panelida va yorliqda Xususiy tarmoq menyusida tarmoq.

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!

CentOS-da HAProxy yuk balanslagichini o'rnatish

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 to'liq hujjatlar.

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 keng qamrovli hujjatlar, HAProxy uchun mavjud va keyin ishlab chiqarish muhitingiz uchun yuk balansini rejalashtirishni boshlang.

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 UpCloud-da suzuvchi IP-manzillar haqida maqola.

Kurs haqida batafsil "Linux ma'muri. Virtualizatsiya va klasterlash”***

Manba: www.habr.com

a Izoh qo'shish