Въведение в haproxy и товарните принципи за балансиране

HAProxy (High Availability Proxy) - популярен прокси сървър за Linux, Solaris и FreeBSD с балансиране на натоварването TCP / HTTP с отворен код. Неговата основна задача - сървърна среда, увеличаване на производителността чрез разпределяне на натоварването между няколко сървъра (уеб, приложение, база данни). Те са такива известни проекти като GitHub, Imgur, Instagram и Twitter.

терминология HAProxy

Има някои основни правила и условия, които трябва ясно да разберат, обсъждането на балансиране на натоварването и прокси сървъри. Но преди да започнем да разбираме новите условия, е да се говори за това, което ACL, гръб и интерфейса.

списък за контрол на достъпа (ACL)

Когато говорим за разпределението на товара, от ACL се използва за проверка на набора от правила за разпределяне на и да започне някакво действие (например избор на сървър или искане за блокиране на мрежата), в зависимост от правилата, приложими.

Използване на ACL позволява гъвкаво управление на трафика, че пренасочване в зависимост от редица фактори, сред които са съвпадение модел или ограничаване на броя на връзки към гръб и сътр.

За по-подробно описание на използването на ACL, обърнете се към инструкциите за настройка HAProxy.

Е набор от задния сървъри, които получават изпращат заявки от потребители. Те са посочени в раздел конфигурация бекенд. Обикновено гръб определя от следните параметри:

  • балансиране на натоварването алгоритъм
  • сървъри и набор от портове

Backend може да включва един или повече сървъри. С други думи, добавяйки повече сървъри, да увеличите максимално възможното натоварване, да го разпределя на всички сървъри. По този начин се увеличава отказоустойчивост ако един от сървърите отказва.

Ето един пример, когато исканията две гръб, уеб-гръб и блог-задния обработка? пристигането на порт 80:

roundrobin Линията баланс показва, балансиране алгоритъм, който е описан в секцията по-долу алгоритмите за разпределение на товара.

Режим HTTP показва, че ще бъдат използвани от прокси слой 7, който също е описан в типове разпределение на товара.

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

Преден слой определя колко заявки трябва да бъдат насочени към гръб. Те са посочени в раздел настройки интерфейса HAProxy. Тяхната дефиниция се състои от следните компоненти:

Входни-блокове можете да посочвате различни настройки за различни мрежовия трафик, което ще обсъдим по-късно.

типове разпределение на товара

Така че, ние измисли основните термини, нека да преминем към типа на балансиране на натоварването.

без товар

Най-прости уеб приложението, без балансиране на натоварването обикновено е, както следва:

Въведение в haproxy и товарните принципи за балансиране

Разпределение на нивото на натоварване 4

Представяме диаграма пример за прилагане на балансиращия слой 4:

Въведение в haproxy и товарните принципи за балансиране

Потребителят има достъп до балансьор, което от своя страна препраща искането на група от уеб-гръб гръб сървъри. Подходящият задния Сървърът отговаря за потребителя. В идеалния случай, всички сървъри трябва да издават идентично съдържание, или потребителят може да получи до неочаквани резултати. Като цяло, всички от сървъра трябва да бъдат свързани към една и съща база данни.

Заредете ниво разпределение 7

На следващо място, по-сложен процес - балансиране на натоварването слой 7 (приложение слой). Такъв процес позволява да се контролира потока на трафика на основата на искането съдържание. Така че той е в състояние да изпълнява множество уеб приложения в същия домейн и пристанището.

Представяме диаграма пример за прилагане на балансиращия слой 7:

Въведение в haproxy и товарните принципи за балансиране

В този случай, ако потребителят трябва да yourdomain.com/blog. той ще бъде пренасочен към гръб, който отговаря на блога, това е, за да сървъри, работещи с молба блог. Всички други искания се изпращат на уеб-гръб, който вече използва съвсем различен приложение. В този пример, както се използва сървъра задния база данни.

Входния Пример конфигурация обикновено изглежда така:

Тази настройка определя интерфейса на име HTTP. който е отговорен за всички входящи трафик към 80 пристанища.

use_backend блог-задния ако url_blog пренасочва трафика sootetstvii с правилата на ACL.

default_backend уеб задния показва, че трафикът ще бъдат пренасочени към уеб-гръб.

балансиране на натоварването алгоритми

балансиране на натоварването алгоритъм е отговорен за избора на сървъра, за да обработим заявката на потребителя. HAProxy ни предлага няколко алгоритми. В допълнение към алгоритъм, можем да определите теглото на всеки сървър, според който той ще бъде избран повече или по-рядко.

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

Ето основните алгоритми:

Алгоритъмът използва по подразбиране. Изброява един по един сървър.

Избира сървър с най-малък брой активни съединения. То се препоръчва за употреба в продължение на дълги сесии. Сървъри в един гръб варират циклично.

Избира сървъра на базата на хеша, който е построен на базата на потребителя IP. По този начин, потребителите винаги имат достъп до един и същ сървър.

продължителност на сесията

Понякога заявление изисква потребителят да бъде свързан към същия сървър. Това може да бъде постигнато чрез прилагане на параметъра за необходимо appsession гръб.

тест оперативност

HAProxy използва проверка на състоянието на сървъра, за да се определи дали тя е в състояние да се придвижи искането. Така че ние не трябва ръчно да се изключи сървъра, от конфигурацията на задния. По подразбиране HAProxy опитва да установи TCP връзка със сървъра и проверява дали обработването на данни, получени на порт 80.

Ако сървърът не премине теста, той автоматично ще бъде изключен от гръб и движението по него не се пренасочва към докато сървърът отново стане достъпна. Ако падне всички сървъри, прилагането стане недостъпна, докато тя се възобновява работата си поне един сървър.

За някои от тях, едни и същи видове сървъри, като сървъри на бази данни, този тест не е достатъчно.

други решения

Ако HAProxy изглежда твърде трудно да се реши проблема, опитайте се да обърнете внимание на следните опции:

  • Linux виртуални сървъри (LVS) - стабилизатор 4 нива, включени в повечето Линукс дистрибуции.
  • Nginx - бърз и сигурен уеб сървър, който може да се използва като стабилизатор. Той е много често се използва във връзка с HAProxy благодарение на способността си кеширане и архивиране.

заключение

Така че ще трябва да се запознаят с основите на балансиране на натоварването и имате идея как HAProxy в състояние да ви помогне. Вече спокойно можете да започнете да импровизира, за да се постигнат най-добри резултати от вашия сървър.