Bosh sahifa Wiki Load balancer

Load balancer

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:

Load balancer requestlarni shu pool ichidagi sog‘lom serverlarga yo‘naltiradi.

Health check

Health checkbackend 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 hashclient 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:

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:

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