Load balancer nima va nima uchun kerak? Turlari va algoritmlari

Assalamu Alaykum bugunload balancer nima uchun kerakligi bizga qanday foyda berishi va unining qanday turlari borligini bilib olamiz.

Ushbu maqolalarni bu maqoladan oldin o'qishni tavsiya qilaman:

  1. Fail-over va fault tolerance

  2. Scalability

Load balancer qanday ishlaydi ?

Load balancer serverlar oldida turib so'rovlarni foydalanuvchilardan qabul qiladi va undagi algoritmga qarab qaysi server bunga javob berishini aniqlaydi va shu serverga so'rovni jo'natadi va javobni olib foydalanuvchiga qaytaradi.

Load balancer doim server ishlayotganini tekshirib turadi va agar birortasi o'chib qolganini bilsa trafikni boshqa serverlarga yo'naltiradi.

Load balancer foydalanuvchi uchun server haqida ma'lumotlarni yashirib mavhumlashtiradi.

load balancing
load balancing

Load balancing nima o'zi va nega kerak ?

Odatda load balancer sizning dasturingiz mashhur bo'lganda ishlatiladi chunki u paytda serverlarhorizontal scaling bo'ladi va trafik taqsimlash load balancerga topshiriladi.

Ba'zi holatlarda reverse proxy bo'lib ham ishlab beradi.

Load balancer yordam bizga ushbu ishlarda yoram beradi:

Load balancer turlari

Oldin bu maqolani o'qishni tavsiya qilaman to'liqroq tushunish uchun :

Network yoki OSI model qismlari .

OSI Layerga bog'liq turlari :

Layer 4 load balancer so'rov ichidagi ma'lumotlarni ko'ra olmaydi va shuning uchun IP adress bo'yicha ishlaydi faqatgina IP adress bilan trafikni taqsimlash yaxshi samara bermasligi mumkin.

Layer 4 load balancer 2 xil uslubda ishlatish mumkin pass through (o'tkazib yuboradi) yoki proxy(ushlab qolib qayta yo'naltiradi)

Pass through mode

Bu holatda load balancer foydalanuvchi bilan bo'g'langan aloqani uzmasdan router sifatida kelgan paketlarni kerakli serverga yo'naltiradi , foydalanuvchi bilan server o'rtasida bitta aloqa kanali bo'ladi.

Jarayon quyidagicha bo'ladi foydalanuvchi TCP aloqani load balancer IP addressiga yuboradi va load balancer bu paketlarni serve IP addressiga qayta yozadi ammo foydalanuvchi load balancer bilan gaplashayapman deb o'ylaydi . Bunda shu aloqa kanalidan kelgan hamma TCP segmentlar bitta serverga jo'natiladi.

Bu NAT deyiladi ko'proq bilish uchun ushbu maqolani o'qing.

pass through
pass through

Proxy mode

Bu uslubda load balancer foydalanuvchu bilan aloqani o'zida ushlab qolib server bilan aloqani o'zi yangidan yaratadi. LB kelayotgan TCP handshakelarnio'zi amalga oshirib va keyin server bilan aloqa o'rnatadi (oldindan o'rnatilgan pool ishlatilishi ham mumkin) . Server foydalanuvchi bilan to'g'rida to'g'ri gaplashmaydi .

LB har bir aloqani o'zi boshqargani uchun aqlliroq algoritmlar ishlatish mumkin, serverdagi aloqa kanallari soniga qarab , latency yoki server ishlayotganiga qarab va dinamik routingga kirib ketadi.

Layer 4 LB bilan proxyishlatish ushbu holatlarda tavsiya qilinadi :

Layer 4 LB so'rov ichini ko'rmaganaligi uchun tez ishlaydi, xavfsizlik yuqori, protocol tanlamaydi , bitta aloqa kanali ishlatish mumkin, ammo, aqlli load balancing qilish qiyin, caching yoq va aloqani boshqa foydalanuvchi ishlatolmaydi (pass through modeda).

L4 LB uchun misollar : AWS NLB, HAProxy (TCP mode)

proxy
proxy

Layer 7 doim proxymodeda ishlaydi foydalanuvchidan so'rovni olib o'zi server bilan aloqa o'rnatadi va 2 ta aloqa kanali bo'ladi (foydalanuvchidan LBga va LBdan serverga). Bundan tashqari u har bir so'rovni tushunishi kerak aks holda uni o'tkazmaydi.Layer 7 LB serverlardan SSL encryption ochish ishini ham o'ziga olishi mumkin ._Layer 7 load balancer foydali tomonlari trafikni aqlli yo'naltirish , caching chunki endi hamma narsa ko'rib turamiz, API gateway logikasini qo'shishimiz mumkin va Authni ham shuyerda qilishimiz mumkin. Yomon tomonlari qimmat, 2 ta aloqa kanali yaratish kerak, protokolni tushunishi kerak ,TLS_sertifikatni LB bilan bo'lishishingiz kerak.

L7 LB misollar: NGINX, Envoy, AWS ALB, HAProxy HTTP mode

Yuklash uslubiga qarab turlari :

Load balancing strategiyalari (algoritmlari) :

Static load balancing ular server holatini hisobga olmaydi shunchaki so'rovni yo'naltiradi (bu qachonki trafik taxmin qilinishi mumkin bo'lsa yaxshi ishlaydi) :

Dynamic load balancinguslublari serverdagi performance ma'lumotlarini hisobga holgan holda so'rovlarni yo'naltiradi :

load balancing algoritmlari
load balancing algoritmlari

Round robin sotuv dasturlari uchun juda yaxshi ishlaydi dinamik algoritnlar odatda katta va murakkab dasturlarda ishlatilinadi.

Odatda ko'p load balancerlar round robin algoritmi bilan ishlaydi , ideal holatda biz aqlli load balancingdan foydalanishimiz kerak ammo uni yo'lga qo'yish ancha murakkab.

Load balancer qo'shimcha vazifalari

Load balancerlar trafikni taqsimlashdan tashqari boshqa narsalarni monitoring qilishga yordam berishi mumkin, masalan:

Load balancer yomon tomonlari

Fail-over va fault tolerance maqolasi.

Xulosa

Dastur kattalashgandan keyin eng katta muammo bu to'g'ri load balancer va to'g'ri algoritm tanlash . Masalan Layer 4 LB tez va kam resurs yeydi ammo o'zgaruvchan emas, Layer 7 esa sekin ammo aqlli algorimtlar ishlatish mumkin.

To'g'ri algoritm tanlash esa sizning dastur xarakteristikasiga , talablarga va sidagi resurslarga bog'liq bo'ladi lekin odatda Round robin sizga yetarli bo'ladi .