Инсталирање ХАПроки балансера оптерећења на ЦентОС

Превод чланка припремљен је уочи почетка курса „Линук администратор. Виртуелизација и груписање"

Инсталирање ХАПроки балансера оптерећења на ЦентОС

Балансирање оптерећења је уобичајено решење за хоризонтално скалирање веб апликација на више хостова док корисницима пружа једну тачку приступа услузи. ХАПроки је један од најпопуларнијих софтвера за балансирање оптерећења отвореног кода који такође пружа високу доступност и функционалност проксија.

ХАПроки настоји да оптимизује коришћење ресурса, максимизира проток, минимизира време одговора и избегне преоптерећење било ког појединачног ресурса. Може се инсталирати на различите Линук дистрибуције, као што је ЦентОС 8, на који ћемо се фокусирати у овом водичу, као и на системе Дебиан КСНУМКС и убунту КСНУМКС.

Инсталирање ХАПроки балансера оптерећења на ЦентОС

ХАПроки је посебно погодан за веб локације са веома великим прометом и стога се често користи за побољшање поузданости и перформанси конфигурација веб услуга са више сервера. Овај водич описује кораке за подешавање ХАПроки-а као балансера оптерећења на ЦентОС 8 цлоуд хосту, који затим усмерава саобраћај на ваше веб сервере.

Као предуслов за најбоље резултате, требало би да имате најмање два веб сервера и сервер за балансирање оптерећења. Веб сервери морају да покрену барем основну веб услугу као што је нгинк или хттпд да би се тестирало балансирање оптерећења између њих.

Инсталирање ХАПроки-а на ЦентОС 8

Пошто је ХАПроки апликација отвореног кода која се брзо развија, дистрибуција која вам је доступна у стандардним ЦентОС репозиторијумима можда није најновија верзија. Да бисте сазнали тренутну верзију, покрените следећу команду:

sudo yum info haproxy

ХАПроки увек нуди три стабилне верзије које можете изабрати: две најновије подржане верзије и трећу, старију верзију која још увек прима критична ажурирања. Увек можете да проверите најновију стабилну верзију наведену на ХАПроки веб локацији, а затим одлучите са којом верзијом желите да радите.

У овом водичу ћемо инсталирати најновију стабилну верзију 2.0, која још није била доступна у стандардним репозиторијумима у време писања водича. Мораћете да га инсталирате из оригиналног извора. Али прво проверите да ли сте испунили неопходне услове за преузимање и компајлирање програма.

sudo yum install gcc pcre-devel tar make -y

Преузмите изворни код користећи наредбу испод. Можете проверити да ли је доступна новија верзија ХАПроки страница за преузимање.

wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz

Када се преузимање заврши, извуците датотеке користећи наредбу испод:

tar xzvf ~/haproxy.tar.gz -C ~/

Идите у распаковани изворни директоријум:

cd ~/haproxy-2.0.7

Затим компајлирајте програм за ваш систем:

make TARGET=linux-glibc

И на крају, инсталирајте сам ХАПроки:

sudo make install

ХАПроки је сада инсталиран, али захтева неке додатне манипулације да би функционисао. Хајде да наставимо са подешавањем софтвера и услуга у наставку.

Подешавање ХАПроки-а за ваш сервер

Сада додајте следеће директоријуме и статистичку датотеку за ХАПроки уносе:

sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy 
sudo touch /var/lib/haproxy/stats

Направите симболичку везу за бинарне датотеке како бисте могли да покренете ХАПроки команде као обичан корисник:

sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy

Ако желите да додате проки вашем систему као услугу, копирајте датотеку хапроки.инит из примера у ваш /етц/инит.д директоријум. Уредите дозволе датотеке тако да се скрипта покрене, а затим поново покрените системски демон:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Такође морате да дозволите да се услуга аутоматски поново покрене када се систем покрене:

sudo chkconfig haproxy on

Ради практичности, такође се препоручује да додате новог корисника за покретање ХАПроки:

sudo useradd -r haproxy

Након овога, можете поново проверити број инсталиране верзије користећи следећу команду:

haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/

У нашем случају, верзија би требало да буде 2.0.7, као што је приказано у горњем примеру.

Коначно, подразумевани заштитни зид у ЦентОС-у 8 је прилично рестриктиван за овај пројекат. Користите следеће команде да бисте дозволили потребне услуге и ресетовали заштитни зид:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Подешавање балансера оптерећења

Подешавање ХАПроки-а је прилично једноставан процес. У суштини, све што треба да урадите је да кажете ХАПроки-у које везе треба да слуша и где треба да их преноси.

Ово се ради тако што се креира конфигурациони фајл /етц/хапроки/хапроки.цфг са дефинисаним подешавањима. Можете прочитати о ХАПроки опцијама конфигурације на страници са документацијомако желите да сазнате више о томе.

Балансирање оптерећења на транспортном слоју (слој 4)

Почнимо са основним подешавањем. Креирајте нову конфигурациону датотеку, на пример користећи vi са наредбом испод:

sudo vi /etc/haproxy/haproxy.cfg

Додајте следеће одељке у датотеку. Заменити сервер_наме шта треба да зове ваше сервере на страници статистике, и привате_ип — приватне ИП адресе сервера на које желите да усмерите веб саобраћај. Можете проверити приватне ИП адресе на УпЦлоуд контролној табли и на картици Приватна мрежа у менију мрежа.

global
   log /dev/log local0
   log /dev/log local1 notice
   chroot /var/lib/haproxy
   stats timeout 30s
   user haproxy
   group haproxy
   daemon

defaults
   log global
   mode http
   option httplog
   option dontlognull
   timeout connect 5000
   timeout client 50000
   timeout server 50000

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

Ово дефинише балансер оптерећења транспортног слоја (слој 4) екстерно назван хттп_фронт који слуша на порту 80, који затим прослеђује саобраћај на подразумевани позадински део који се зове хттп_бацк. Додатна статистика /хапроки?статс повезује страницу са статистиком на наведену адресу.

Различити алгоритми за балансирање оптерећења.

Навођење сервера у позадинском одељку омогућава ХАПроки-у да користи ове сервере за балансирање оптерећења према кружном алгоритму када је то могуће.

Алгоритми за балансирање се користе да би се утврдило на који сервер у позадини се свака веза прослеђује. Ево неких корисних опција:

  • Разигравање: Сваки сервер се користи редом према својој тежини. Ово је најглаткији и најпоштенији алгоритам када време обраде сервера остаје равномерно распоређено. Овај алгоритам је динамичан, омогућавајући да се тежина сервера прилагођава у ходу.
  • Најмање кон: изабран је сервер са најмање веза. Роунд робин се изводи између сервера са истим оптерећењем. Коришћење овог алгоритма се препоручује за дуге сесије као што су ЛДАП, СКЛ, ТСЕ, итд., али није баш погодно за кратке сесије као што је ХТТП.
  • Први: Први сервер са доступним слотовима за везу прима везу. Сервери се бирају од најнижег нумеричког ИД-а до највишег, што је подразумевано према позицији сервера у фарми. Када сервер достигне макцонн, користи се следећи сервер.
  • Извор: Изворна ИП адреса се хешује и дели са укупном тежином покренутих сервера да би се одредило који сервер ће примити захтев. На овај начин ће иста ИП адреса клијента увек ићи на исти сервер, док сервери остају исти.

Подешавање балансирања оптерећења на нивоу апликације (слој 7)

Друга доступна опција је конфигурисање балансера оптерећења да се покреће на слоју апликације (слој 7), што је корисно када се делови ваше веб апликације налазе на различитим хостовима. Ово се може постићи смањењем преноса везе, на пример преко УРЛ-а.

Отворите ХАПроки конфигурациону датотеку помоћу уређивача текста:

sudo vi /etc/haproxy/haproxy.cfg

Затим конфигуришите фронтенд и бацкенд сегменте према примеру у наставку:

frontend http_front
   bind *:80
   stats uri /haproxy?stats
   acl url_blog path_beg /blog
   use_backend blog_back if url_blog
   default_backend http_back

backend http_back
   balance roundrobin
   server server_name1 private_ip1:80 check
   server server_name2 private_ip2:80 check

backend blog_back
   server server_name3 private_ip3:80 check

Фронтенд објављује АЦЛ правило под називом урл_блог које се примењује на све везе са путањама које почињу са /блог. Усе_бацкенд наводи да везе које одговарају услову урл_блог треба да буду опслуживане од стране позадинског дела под називом блог_бацк, а свим осталим захтевима рукује подразумевани позадински део.

На позадинској страни, конфигурација поставља две групе сервера: хттп_бацк, као и раније, и нову под називом блог_бацк, која управља конекцијама на екампле.цом/блог.

Након промене подешавања, сачувајте датотеку и поново покрените ХАПроки помоћу следеће команде:

sudo systemctl restart haproxy

Ако добијете било каква упозорења или поруке о грешци током покретања, проверите своју конфигурацију и уверите се да сте креирали све потребне датотеке и фасцикле, а затим покушајте поново да покренете.

Тестирање подешавања

Када се ХАПроки конфигурише и покрене, отворите јавну ИП адресу сервера за балансирање оптерећења у прегледачу и проверите да ли сте исправно повезани са позадином. Параметар статс ури у конфигурацији креира страницу са статистиком на наведеној адреси.

http://load_balancer_public_ip/haproxy?stats

Када учитате страницу са статистиком, ако сви ваши сервери буду зелени, онда је подешавање било успешно!

Инсталирање ХАПроки балансера оптерећења на ЦентОС

Страница са статистиком садржи неке корисне информације за праћење ваших веб хостова, укључујући време подизања/испадања и број сесија. Ако је сервер означен црвеном бојом, уверите се да је сервер укључен и да можете да га пингујете са машине за балансирање оптерећења.

Ако ваш балансатор оптерећења не реагује, уверите се да заштитни зид не блокира ХТТП везе. Такође проверите да ли ХАПроки ради користећи наредбу испод:

sudo systemctl status haproxy

Заштита странице статистике лозинком

Међутим, ако је страница статистике једноставно наведена на предњем крају, онда је отворена за свакога, што можда није добра идеја. Уместо тога, можете му доделити прилагођени број порта додавањем примера испод на крај ваше хапроки.цфг датотеке. Заменити корисничко име и лозинка за нешто сигурно:

listen stats
   bind *:8181
   stats enable
   stats uri /
   stats realm Haproxy Statistics
   stats auth username:password

Након што додате нову групу слушалаца, уклоните стару статистику ури везу из фронтенд групе. Када завршите, сачувајте датотеку и поново покрените ХАПроки.

sudo systemctl restart haproxy

Затим поново отворите балансатор оптерећења са новим бројем порта и пријавите се са корисничким именом и лозинком које сте навели у конфигурационој датотеци.

http://load_balancer_public_ip:8181

Уверите се да су сви ваши сервери и даље зелени, а затим отворите само ИП за балансирање оптерећења без икаквих бројева портова у вашем претраживачу.

http://load_balancer_public_ip/

Ако имате бар неке различите одредишне странице на својим позадинским серверима, приметићете да сваки пут када поново учитате страницу добијате одговор од другог хоста. Можете испробати различите алгоритме за балансирање у одељку за конфигурацију или проверити комплетну документацију.

Закључак: ХАПроки Лоад Баланцер

Честитамо на успешном подешавању ХАПроки балансера оптерећења! Чак и са основним подешавањем балансирања оптерећења, можете значајно побољшати перформансе и доступност ваше веб апликације. Овај водич је само увод у балансирање оптерећења помоћу ХАПроки-а, који је способан за много више од онога што се може покрити у водичу за брзо подешавање. Препоручујемо да експериментишете са различитим конфигурацијама користећи обимна документација, доступно ХАПроки-у, а затим почните да планирате балансирање оптерећења за ваше производно окружење.

Коришћењем више хостова да заштитите вашу веб услугу са простором за повећање, сам балансатор оптерећења и даље може представљати тачку квара. Можете додатно побољшати високу доступност инсталирањем плутајуће ИП адресе између више балансера оптерећења. Више о овоме можете сазнати у нашој чланак о плутајућим ИП адресама на УпЦлоуд-у.

Више о курсу „Линук администратор. Виртуелизација и груписање"***

Извор: ввв.хабр.цом

Додај коментар