Ачаа тэнцүүлэгч буюу Load Balancer -ын тухай

Batjargal
Unimedia Solutions
Published in
4 min readMay 16, 2018

Нийтлэлээ эхлэхийн өмнө та бүхэнд нэг сонирхолтой сайт үзүүлэе

http://www.internetlivestats.com/

http://www.internetlivestats.com/

Энэ сайт руу ороход дэлхий даяар хэрэглэж байгаа нийт интернет хэрэглэгчийн тоо, бусад алдартай сайт-уудын яг тухайн агшинд холбогдсон хэрэглэгчийн тоо гарна. Яг энэ агшинд Youtube сайт дээр 4.5 тэрбум хүн видео үзэж байх жишээтэй.

Энэ их ачааллыг вэб сайтууд яаж даадаг вэ?

Хэрвээ та вэб сэрвэр хариуцаж ажилладаг бол, хэрвээ танай сервер ачаалал хандалт ихтэй байдаг бол серверээ унагачилгүй ачааллыг нь тааруулж явах нь зайлшгүй юм. Ер нь бол ачаалалгүй байсан ч алсдаа нэмэгдэнэ гэж тооцоолж сэрвэрийнхээ архитекторыг хийж явах нь зөв байдаг.

Ихэнх анхлан сервер ажиллуулж байгаа хүмүүсийн алдаа юу гэхээр ачаалал нэмэгдэх тусам серверийнхээ хүчин чадлыг л нэмэгдүүлээд байдаг. Гэтэл нөгөө сервер нь техник л болсон хойно хэзээ нэгэн цагт унадаг.

Тэгэхээр энэ байдлаас сэргийлэхийн тулд ачаалал тэнцүүлэгч буюу Load balancer ашигладаг байх нь. (Ачаа тэнцүүлэгч, ачаалал тэнцүүлэгч гээд дураараа монголчилчихлоо sorry…)

Load balancer энгийн жишээг зургаар харуулвал

Сэрвэрээ сонгохдоо эхний ээлжинд аппликейшныхаа ачааллыг тооцоод 500 хүртэл хэрэглэгч зэрэг хандах хандалтыг даах чадалтайгаар үүсгэх хэрэгтэй.

Эхлээд ингэж энгийн байдлаар хийж болох бөгөөд явцын дунд ачаалал нэмэгдвэл серверийнхээ тоог л нэмээд явна гэсэн үг.

Ер нь бол бүх төрлийн өргөн хэрэглэдэг вэв сэрвэр дээр load balancer тохиргоо байдаг бөгөөд хамгийн өргөн хэрэглэгдэж байгаа нь AWS load balancer буюу Амазон сервисыг хүмүүс цогцоор нь авч хэрэглэх нь элбэг болсон.

AWS ELB буюу Амазоны Load Balancer жишээг доорх зурганд харуулвал

Load Balancer нь hardware болон software гэсэн 2 янз байдаг. Hardware Load Balancer нь мэдээж сэрвэр дээрээ Load Balancer төхөөрөмж худалдаж авч тавина гэсэн үг. Энэ Load Balancer -ын талаар дараа дараагийн нийтлэлээр оруулж болох юм. Энэ удаа бид зөвхөн software Load Balancer ын тухай ярина.

Load Balancer Methods буюу Аргууд

  • Round Robin
    Энэ нь хамгийн энгийн бөгөөд өргөн хэрэглэгддэг арга бөгөөд хэрэглэгчээс ирсэн хүсэлтийг ирсэн дарааллаар нь сэрвэрүүдэд хуваарилдаг. Тойрог хэлбэрээр бие биетэйгээ тоглодог тоглоомны нэрээр нэрлэгдсэн энэ арга нь хүсэлтийн тоог сэрвэрийн тоонд ирсэн дарааллаар нь хуваарилна.
Round Robin
  • Weighted Round Robin
    Ерөнхийдөө Round Robin аргатай ижил зарчимаар ажлах боловч зарим нэг сэрвэр дээр нь хүлээж авах хүсэлтийн хэмжээг нь тохируулж өгдөгөөрөө онцлог.
  • Least Connection
    Өмнөх Round Robin болон Weighted Round Robin аргууд нь серверийн ачааллыг ер харгалзаж үздэггүй. Харин энэ арга бол аль ачаалал багатай байгаа (аль цөөн хүсэлтийн тоотой) сервер лүү нь хүсэлтийг илгээнэ.
Least Connection
  • Weighted Least Connection
    Least Connection аргаар хуваарилах боловч Weighted Round Robin той ижил сэрвэр дээр нь хүлээж авах хүсэлтийн хэмжээг нь тохируулж өгдөг.
  • Agent Based Adaptive Load Balancing
    Сервэр болгон нь өөрийн Load Balancer луугаа өөрийн ачааллын мэдээлээ илгээдэг агент программтай байна. Ирсэн мэдээлэл дээр нь үндэслээс Load Balancer хүсэлтийг хааш нь илгээхээ Weighted Least Connection болон Weighted Round Robin аргуудыг ашиглан шийднэ.
  • Chained Failover (Fixed Weighted)
    Хэрэглэгчийн хүсэлтүүдийг гинжин дарааллаар тохируулж өгдөг. Жишээ нь хэрэглэгч бүрийн эхний хүсэлтийг сэрвэр 1 рүү, 2 болон 3 дахь хүсэлтийг сэрвэр 2 луу, бусад хүсэлтүүдийг сэрвэр 3 луу гэх мэтчилэн.
  • Weighted Response Time
    Хамгийн богино хугацаанд хариу өгч байгаа сервер лүү ирсэн хүсэлтийг илгээнэ.
  • Source IP Hash
    Сервэр болон хэрэглэгчийн IP хослолоор хаш үүсгэдэг. Холбогдсон хэрэглэгчийн сейшнийг (TCP mode оор ажиллаж байх үед sticky session-ы оронд хэрэглэдэг) тухайн холбогдсон сервертэй уях шаардлагатай үед ихэвчлэн хэрэглэдэг.

Эдгээр ерөнхий аргуудаас гадна тухайн серверийн өөрийнх нь онцлог болсон аргууд гэж байдаг. Ер нь ихэвчлэн ерөнхий аргууд хэрэглэгдэнэ. Дээрхээс гадна ratio, fastest, server availability, observed, predictive гэх мэт аргууд байна.

httpd (apache)
- heartbeat — active inactive аар нь
- byrequests — хүсэлтийн тоогоор нь
- bybusyness — ачааллаар нь
- bytraffic — traffic аар нь

nginx
- round-robin
- least-connected
- ip-hash

haproxy
- round Robin
- weighted round robin
- least connection —
- high Availability — delay time аар нь

Эндээс харахад жирийн тэнцүү тоогоор хуваарилдаг round-robin гэх аргаас гадна CPU usage, хүлээгдэж буй request-ийн тоо, response time, lost packet зэргээр тэнцвэржүүлэлт хийдэг байх нь.

Мөн Load Balancer ийг хэрэглэх түвшинээр нь Front End болон Back End Load Balancer гэж ангилж болно. Front End Load Balancer нь хэрэглэгч болон Вэб сервэр 2 ийг холбоход хэрэглэдэг бол Back End Load Balancer ыг Front End болон Back End серверүүдийг хооронд нь холбоход хэрэглэдэг.

Load Balancer хэрхэн тохируулах талаар доорхи сэдвүүдээс дэлгэрүүлж үзнэ үү?

AWS ELB хэрхэн тохируулах вэ?

Apache (httpd) Load Balancer хэрхэн тохируулах вэ?

Nginx Load Balancer хэрхэн тохируулах вэ?

HAProxy Load Balancer хэрхэн тохируулах вэ?

Originally published at medium.com.

--

--

Batjargal
Unimedia Solutions

Infra Engineer & Senior Software Developer at Unimedia Solutions, Unimedia.mn