Какво е Load Balancer?

В тази статия ще Ви запознаем с Load Balancer и различните видове разпределения на натоварването.

Load Balancer в буквален превод означава разпределител на натоварването. Най-често се използват два вида разпределения:

  • на ниво TCP/IP (Layer 4 от OSI модела);
  • на ниво приложение (Layer 7 от OSI модела).

Балансиране на натоварването се налага, когато в развитието на даден уебсайт се достига до момент, в който един сървър не е достатъчен за натоварването, което генерира самият сайт. Тогава даденият уебсайт се разполага на поне два сървъра, като натоварването се разпределя между тях.

Round Robin

Най-простият вид Load Balancer е задаването на два или повече A записа за домейн. По този начин може сайтът Ви да се зарежда от два различни сървъра, като ролята на Load Balancer играе DNS сървърът. Този тип разпределяне на натоварването се нарича Round Robin.

Как да създадете Round Robin Load balancer?

Всеки един домейн има основен A запис (преобразувател domain.com -> IP адрес) от тип:

domain.com A

Примерен запис:

goodexample.eu.    120    IN    A    12.345.67.8

За да създадете Round Robin Load balancer, Ви трябва втори сървър, съдържащ същото съдържание като на основния, но с друго публично IP. Пример: 12.345.67.9. След което създавате втори A запис за домейна, но с другия IP адрес.

Пример:

goodexample.eu.    120    IN    A    12.345.67.8

По този начин за домейна ще отговаря не един IP адрес, както при повечето сайтове, а два или повече. Съответно при проверка за DNS записите, ще получавате следния резултат:

goodexample.eu.    120    IN    A    12.345.67.8
goodexample.eu.    120    IN    A    12.345.67.9

Това е напълно достатъчно, за да имате елементарно разпределяне на натоварването между два или повече сървъра.

Кога се използва най-често?

  • Когато не искате да влагате допълнително пари в хардуер;
  • Когато нямате знанията да настроите хардуерен Load Balancer;
  • Когато трафикът е изключително натоварен и се налага комбиниране на хардуерен Load Balancer и DNS балансиране на натоварването.

Пример за този принцип ще дадем с ebay.com

В Linux терминал изпълняваме командата dig (или nslookup в Command prompt при Windows). Получаваме следната информация:

dig ebay.com
ebay.com.        3231    IN    A    66.211.175.229
ebay.com.        3231    IN    A    66.211.172.37
ebay.com.        3231    IN    A    216.113.181.253

Какво разбираме от горните редове? Разбираме, че при първо зареждане ще отворим ebay.com от сървър с IP адрес примерно 66.211.175.229. След близо 60 минути (цифрата 3231, показва времето в секунди, за което ще се кешира информацията за това, че ebay.com има адрес 66.211.175.229) при презареждане, сайтът вече ще ни се отвори от сървър с IP адрес 66.211.172.37. Така всеки посетител посещава сайта от различен сървър и това намалява натоварването на всеки един от тях.

Защо този принцип се използва рядко и не винаги е приложим?

Това е така поради няколко причини:

  • Нямаме свободата да изберем на кого, кога и от кой сървър да се зареди уебсайта. Това означава, че в случая с ebay.com, натоварването не е разпределено 33.33% на всеки от сървърите. Може един сървър да е много по-натоварен от останалите.
  • Ако единият сървър спре работа поради някаква причина, ние не можем да спрем трафика към него. Това се дължи на времето за кеширане. В случая, ако сървър с IP адрес 66.211.175.229 откаже, сайтът няма да се зарежда в рамките на 60 минути, докато информацията се опресни, независимо, че сайтът е достъпен на другите сървъри. Както става ясно от примера, Round Robin не е много удачен за важни сайтове, тъй като при спиране на работата на сървър, това води до загуба на трафик и потенциални клиенти, които не успяват да заредят уебсайта. Ние нямаме свободата да пренасочим трафика към друг работещ сървър, тъй като в компютъра на клиента е кеширана информацията за IP адреса на неработещия сървър.
  • Ако сайтът се обновява, то трябва да обновяваме информацията на всеки един от сървърите.

Всички тези минуси довеждат до нуждата от различен тип Load Balancer. Или иначе казано: създаване на хардуерен клъстър.

Хардуерен клъстър

Най-общо казано, хардуерният клъстър представлява свързани помежду си минимум три сървъра – Load Balancer, който разпределя натоварването между 2 или повече Node. Под Node разбираме сървър, който изпълнява идентични функции с друг сървър в цялостната клъстърна инфраструктура. Например Load Balancer (Server) свързан посредством суич (10/100 Mb/s Ethernet Switch) с 5 node сървъра с общ мрежов дисков масив (Networked Disk Storage).

От този пример става ясно, че при спиране на работата на един от Node сървърите, ние можем да го изключим от списъка автоматично посредством правило в Load Balancer (Server), като тази промяна ще се отрази мигновено и няма да бъде загубен трафик и съответно клиенти, тъй като няма да има потребител, който да не може да зареди сайта.

Какви са предимствата на този тип Load Balancing?

  • Самият Load Balancer сървър не изпитва почти никакво натоварване. Това се дължи на факта, че той не обработва информация, а само пренасочва заявки към сървърите зад него.
  • Възможност за добавяне на безброй Node машини.
  • Възможност за решаване кой посетител към кой Node да бъде препратен. Натоварването може да бъде разпределено на Round Robin принцип (всеки посетител на случаен принцип), принцип 50/50 за еднакво разпределяне на натоварването или задаване на приоритетни сървъри с по-добри хардуерни възможности.
  • Сървърите могат да бъдат обединени с единна файлова система, което позволява по-лесно администриране на сайтовете, разположени на тях.
  • Възможност за Failover – ако даден сървър от системата спре работа, то той може да бъде изключен от списъка без това да нарушава работата на сайтовете в мрежата.
Обновена: 15.10.2021

Беше ли Ви полезна тази статия?

Вижте още