Load balancer — kelayotgan request yoki tarmoq trafikini bir nechta server o‘rtasida taqsimlaydigan tizim. Load balancer web ilova, API, database replica, microservice va cloud infratuzilmasida barqarorlik va performance uchun ishlatiladi.
Load balancer server yukini tengroq taqsimlash, service uzluksizligini oshirish va bitta serverga haddan tashqari yuk tushishini oldini olishga yordam beradi.
Vazifasi
Load balancer quyidagi vazifalarni bajaradi:
- requestlarni bir nechta serverga taqsimlash;
- server yukini kamaytirish;
- service availabilityni oshirish;
- nosoz serverga request yubormaslik;
- scaling jarayonini qo‘llab-quvvatlash;
- traffic routing bajarish;
- health check orqali backend holatini tekshirish;
- failover mexanizmini tashkil qilish.
Masalan, UzbekDevs API bir nechta backend instance’da ishlasa, load balancer requestlarni shu instance’lar o‘rtasida taqsimlashi mumkin.
Load balancer qanday ishlaydi?
Load balancer client va backend serverlar o‘rtasida turadi.
Oddiy jarayon:
- client request yuboradi;
- request load balancerga keladi;
- load balancer backend serverlar ro‘yxatini tekshiradi;
- algoritm asosida bitta server tanlanadi;
- request tanlangan serverga yuboriladi;
- server javob qaytaradi;
- load balancer javobni clientga uzatadi.
Client odatda qaysi backend server javob berganini bilmaydi.
Backend pool
Backend pool — load balancer ortida turgan serverlar guruhi.
Backend pool ichida:
- web serverlar;
- API instance’lar;
- application serverlar;
- containerlar;
- virtual machine’lar bo‘lishi mumkin.
Load balancer requestlarni shu pool ichidagi sog‘lom serverlarga yo‘naltiradi.
Health check
Health check — backend server ishlayotganini tekshirish mexanizmi.
Health check quyidagilarni tekshirishi mumkin:
- server javob beryaptimi;
- HTTP status 200 qaytyaptimi;
- database connection bormi;
- application tayyormi;
- response vaqti normalmi.
Agar server health checkdan o‘tmasa, load balancer unga request yubormasligi mumkin.
Round robin
Round robin — requestlarni serverlarga ketma-ket taqsimlash algoritmi.
Masalan:
Bu eng oddiy load balancing usullaridan biridir.
Least connections
Least connections — eng kam aktiv connectionga ega serverga request yuborish algoritmi.
Bu usul:
- request davomiyligi turlicha bo‘lgan tizimlarda foydali;
- uzoq connectionlar mavjud bo‘lsa ishlatiladi;
- server yukini aktiv connection soniga qarab taqsimlaydi.
IP hash
IP hash — client IP manzili asosida backend server tanlash usuli. Bir xil IP ko‘pincha bir xil serverga yo‘naltiriladi.
Bu usul:
- session affinity uchun ishlatilishi mumkin;
- foydalanuvchini bir serverga bog‘lashga yordam beradi;
- IP o‘zgarsa, routing ham o‘zgarishi mumkin.
Weighted load balancing
Weighted load balancing — serverlarga turli og‘irlik qiymati berib, kuchliroq serverga ko‘proq request yuborish usuli.
Masalan:
Bu holatda server A server B’ga qaraganda ko‘proq traffic oladi.
Layer 4 load balancing
Layer 4 load balancing transport layer darajasida ishlaydi. U TCP yoki UDP ma’lumotlariga qarab trafikni yo‘naltiradi.
Layer 4:
- IP va port asosida ishlaydi;
- HTTP contentni chuqur tahlil qilmaydi;
- tez ishlashi mumkin;
- TCP/UDP service’larda qo‘llanadi.
Layer 7 load balancing
Layer 7 load balancing application layer darajasida ishlaydi. U HTTP request ma’lumotlarini ko‘rib routing qilishi mumkin.
Layer 7:
- URL path asosida routing qiladi;
- header asosida routing qiladi;
- cookie asosida qaror qabul qilishi mumkin;
- API va web ilovalarda keng ishlatiladi.
Masalan, /api requestlar API serverga, /static requestlar static serverga yuborilishi mumkin.
Sticky session
Sticky session — bir foydalanuvchi requestlarini doim bir backend serverga yo‘naltirish modeli.
Sticky session:
- session server memory’sida saqlanganda ishlatilishi mumkin;
- cookie yoki IP hash orqali amalga oshiriladi;
- scalingda ayrim murakkabliklar keltirishi mumkin;
- stateless arxitekturaga qarama-qarshi bo‘lishi mumkin.
Failover
Failover — bitta server ishlamay qolsa, trafikni boshqa sog‘lom serverga o‘tkazish jarayoni.
Failover orqali:
- service uzluksizligi oshadi;
- nosoz server avtomatik chetlatiladi;
- foydalanuvchi requestlari boshqa serverga yo‘naltiriladi;
- high availability ta’minlanadi.
Reverse proxy bilan bog‘liqligi
Load balancer ko‘pincha reverse proxy vazifasini ham bajaradi. Nginx, HAProxy va cloud load balancerlar requestlarni backend serverlarga taqsimlashi mumkin.
Reverse proxy:
- requestni qabul qiladi;
- backendga uzatadi;
- TLS termination qilishi mumkin;
- load balancing qo‘llashi mumkin.
Cloud load balancer
Cloud platformalarda load balancer managed service sifatida beriladi.
Cloud load balancer:
- backend instance’larni avtomatik boshqarishi mumkin;
- health check ishlatadi;
- autoscaling bilan integratsiya bo‘ladi;
- public IP yoki domain orqali ishlaydi;
- high availability uchun bir nechta zonada ishlashi mumkin.
Dasturlashdagi o‘rni
Load balancer web ilova va API’larni bir nechta serverda barqaror ishlatish uchun kerak bo‘lgan infratuzilma qatlami hisoblanadi. U requestlarni taqsimlaydi, server holatini tekshiradi va nosoz instance’larni trafikdan chiqaradi.
Bog‘liq tushunchalar
Reverse proxy, Nginx, HAProxy, Backend, Server, Health check, Scaling, High availability, Cloud, API, Security