Load balancing — tarmoq so‘rovlari yoki hisoblash vazifalarini bir nechta server, xizmat nusxasi yoxud boshqa resurs o‘rtasida taqsimlash mexanizmi. Uning asosiy maqsadi bitta tugunning ortiqcha yuklanishini oldini olish, xizmatning javob berish tezligini barqaror saqlash va ayrim tugunlar ishlamay qolganda ham tizim faoliyatini davom ettirishdir. Yukni muvozanatlash odatda foydalanuvchi bilan xizmat nusxalari orasida joylashgan maxsus qurilma yoki dastur orqali bajariladi.
So‘rovni taqsimlash jarayoni
Mijoz domen nomiga murojaat qilgach, so‘rov load balancer manziliga keladi. Muvozanatlagich mavjud backend serverlar ro‘yxatini va ularning sog‘lomlik holatini tekshiradi, tanlangan algoritm asosida bitta serverni belgilaydi va trafikni unga uzatadi. Javob ko‘pincha shu vosita orqali mijozga qaytariladi. Reverse proxy shaklidagi yechimda mijoz backendning haqiqiy manzilini ko‘rmaydi.
Serverlarning ishlash holati health check orqali kuzatiladi. Masalan, muvozanatlagich har besh soniyada /health manziliga HTTP so‘rovi yuborishi mumkin. Kutilgan javob olinmasa, server vaqtincha taqsimotdan chiqariladi. Faqat TCP portining ochiqligini tekshirish xizmat ichki jihatdan to‘g‘ri ishlayotganini har doim ham ko‘rsatmaydi; shu sababli amaliy tekshiruv ma’lumotlar bazasi yoki muhim bog‘liqliklar holatini ham hisobga olishi mumkin.
Taqsimlash algoritmlari
| Algoritm | Tanlash mezoni | Mos holat |
|---|---|---|
| Round robin | Serverlar navbat bilan tanlanadi | Quvvati o‘xshash tugunlar |
| Weighted round robin | Kuchliroq serverga ko‘proq so‘rov beriladi | Quvvati turlicha tugunlar |
| Least connections | Faol ulanishi eng kam server tanlanadi | Uzoq davom etuvchi ulanishlar |
| IP hash | Mijoz IP manzilidan tugun aniqlanadi | Bir mijozni bir tugunga bog‘lash |
Algoritm tanlovi trafik xususiyatiga bog‘liq. Oddiy round robin har bir so‘rov bir xil xarajat talab qiladi, degan taxminga yaqin ishlaydi. Video qayta ishlash yoki murakkab hisobot kabi vazifalarda esa so‘rovlar davomiyligi keskin farq qilishi mumkin. Bunday sharoitda ulanishlar soni, javob vaqti yoki server yukini o‘lchaydigan dinamik usullar aniqroq taqsimot beradi.
Tarmoq qatlamlari va joylashuv
Layer 4 muvozanatlash IP manzil, port va TCP yoki UDP kabi transport ma’lumotlariga qaraydi. U paket mazmunini chuqur tahlil qilmagani uchun odatda tez va umumiy maqsadli bo‘ladi. Layer 7 muvozanatlash esa HTTP sarlavhasi, URL yo‘li, host nomi yoki cookie asosida qaror chiqarishi mumkin. Masalan, /api so‘rovlarini dastur serverlariga, /images so‘rovlarini statik fayl xizmatiga yo‘naltirish mumkin.
Load balancer bitta ma’lumot markazida, bir nechta hudud orasida yoki bulut platformasining boshqariladigan xizmati sifatida joylashtiriladi. Global muvozanatlash DNS, anycast yoki geografik marshrutlash yordamida foydalanuvchini yaqin yoki sog‘lom hududga olib boradi. Mahalliy muvozanatlagich esa o‘sha hudud ichidagi nusxalarni tanlaydi.
Sessiya va ishonchlilik
Holat saqlaydigan dastur foydalanuvchi sessiyasini faqat bitta server xotirasida tutsa, keyingi so‘rov boshqa tugunga tushganda muammo yuz beradi. Sticky session mijozni ma’lum serverga biriktiradi, biroq bu yukning notekis taqsimlanishiga va tugun ishdan chiqqanda sessiyaning yo‘qolishiga olib kelishi mumkin. Kengayadigan tizimlarda sessiya holati umumiy kesh yoki ma’lumotlar bazasida saqlanib, backendlar imkon qadar stateless qilinadi.
Muvozanatlagichning o‘zi ham yagona nosozlik nuqtasiga aylanmasligi kerak. Shu bois u ko‘pincha faol–zaxira yoki faol–faol juftlikda ishlaydi. TLS sertifikatlarini markaziy tugunda boshqarish qulay, ammo shifrlashni shu yerda tugatish ichki trafik xavfsizligi va kalitlarni himoyalash talablarini ham yuzaga keltiradi. Kuzatuvda backend javob vaqti, xato ulushi, navbat uzunligi, faol ulanishlar va health check natijalari asosiy ko‘rsatkichlar hisoblanadi.
Bog‘liq tushunchalar
Reverse proxy, Health check, Round robin, High availability, Failover, TLS, Backend server