Превод чланка припремљен је уочи почетка курса
Балансирање оптерећења је уобичајено решење за хоризонтално скалирање веб апликација на више хостова док корисницима пружа једну тачку приступа услузи.
ХАПроки настоји да оптимизује коришћење ресурса, максимизира проток, минимизира време одговора и избегне преоптерећење било ког појединачног ресурса. Може се инсталирати на различите Линук дистрибуције, као што је ЦентОС 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/
Ако имате бар неке различите одредишне странице на својим позадинским серверима, приметићете да сваки пут када поново учитате страницу добијате одговор од другог хоста. Можете испробати различите алгоритме за балансирање у одељку за конфигурацију или проверити
Закључак: ХАПроки Лоад Баланцер
Честитамо на успешном подешавању ХАПроки балансера оптерећења! Чак и са основним подешавањем балансирања оптерећења, можете значајно побољшати перформансе и доступност ваше веб апликације. Овај водич је само увод у балансирање оптерећења помоћу ХАПроки-а, који је способан за много више од онога што се може покрити у водичу за брзо подешавање. Препоручујемо да експериментишете са различитим конфигурацијама користећи
Коришћењем више хостова да заштитите вашу веб услугу са простором за повећање, сам балансатор оптерећења и даље може представљати тачку квара. Можете додатно побољшати високу доступност инсталирањем плутајуће ИП адресе између више балансера оптерећења. Више о овоме можете сазнати у нашој
Више о курсу
Извор: ввв.хабр.цом