Мақаланың аудармасы курстың басталу қарсаңында дайындалды
Жүктемені теңестіру – пайдаланушыларға қызметке бір кіру нүктесін бере отырып, бірнеше хосттар бойынша веб-қосымшаларды көлденең масштабтауға арналған жалпы шешім.
HAProxy ресурстарды пайдалануды оңтайландыруға, өткізу қабілеттілігін арттыруға, жауап беру уақытын азайтуға және кез келген жеке ресурсты шамадан тыс жүктеуге жол бермеуге тырысады. Оны әртүрлі Linux дистрибутивтеріне орнатуға болады, мысалы, біз осы нұсқаулықта назар аударатын CentOS 8, сондай-ақ жүйелер
HAProxy әсіресе трафигі өте жоғары веб-сайттар үшін қолайлы және сондықтан көп серверлік веб-қызмет конфигурацияларының сенімділігі мен өнімділігін арттыру үшін жиі пайдаланылады. Бұл нұсқаулық CentOS 8 бұлттық хостында HAProxy-ді жүктемені теңестіруші ретінде орнату қадамдарын сипаттайды, содан кейін ол трафикті веб-серверлеріңізге бағыттайды.
Ең жақсы нәтижеге жетудің алғы шарты ретінде сізде кемінде екі веб-сервер және жүктемені теңестіру сервері болуы керек. Веб-серверлер олардың арасындағы жүктемені теңестіруді тексеру үшін кем дегенде nginx немесе httpd сияқты негізгі веб-қызметті іске қосуы керек.
CentOS 8 жүйесінде HAProxy орнату
HAProxy жылдам дамып келе жатқан ашық бастапқы бағдарлама болғандықтан, стандартты CentOS репозитарийлерінде қол жетімді тарату соңғы нұсқасы болмауы мүмкін. Ағымдағы нұсқаны білу үшін келесі пәрменді орындаңыз:
sudo yum info haproxy
HAProxy әрқашан таңдау үшін үш тұрақты нұсқаны ұсынады: ең соңғы екі қолдау көрсетілетін нұсқа және әлі де маңызды жаңартуларды алып жатқан үшінші, ескі нұсқа. Сіз әрқашан 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
Соңында, HAProxy бағдарламасын өзі орнатыңыз:
sudo make install
HAProxy енді орнатылды, бірақ оның жұмыс істеуі үшін кейбір қосымша манипуляциялар қажет. Төмендегі бағдарламалық құрал мен қызметтерді орнатуды жалғастырайық.
Серверіңіз үшін HAProxy орнату
Енді HAProxy жазбалары үшін келесі каталогтар мен статистикалық файлды қосыңыз:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
HAProxy пәрмендерін қарапайым пайдаланушы ретінде іске қосу үшін екілік файлдар үшін символдық сілтеме жасаңыз:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Жүйеге проксиді қызмет ретінде қосқыңыз келсе, мысалдардан haproxy.init файлын /etc/init.d каталогына көшіріңіз. Сценарий іске қосылатындай файл рұқсаттарын өңдеңіз, содан кейін жүйелік демонды қайта іске қосыңыз:
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
Ыңғайлы болу үшін HAProxy іске қосу үшін жаңа пайдаланушыны қосу ұсынылады:
sudo useradd -r haproxy
Осыдан кейін келесі пәрменді пайдаланып орнатылған нұсқа нөмірін қайтадан тексеруге болады:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Біздің жағдайда нұсқа жоғарыда келтірілген мысалда көрсетілгендей 2.0.7 болуы керек.
Ақырында, CentOS 8 жүйесіндегі әдепкі брандмауэр бұл жоба үшін өте шектеулі. Қажетті қызметтерге рұқсат беру және желіаралық қалқанды қалпына келтіру үшін келесі пәрмендерді пайдаланыңыз:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Load Balancer орнату
HAProxy орнату өте қарапайым процесс. Негізінде, сізге тек HAProxy-ге қандай қосылымдарды тыңдау керектігін және оларды қайда жіберу керектігін айту керек.
Бұл параметрлерді анықтайтын /etc/haproxy/haproxy.cfg конфигурация файлын жасау арқылы жасалады. HAProxy конфигурация опциялары туралы оқуға болады
Тасымалдау қабатындағы жүктемені теңестіру (4-қабат)
Негізгі орнатудан бастайық. Жаңа конфигурация файлын жасаңыз, мысалы, пайдалану vi төмендегі пәрменмен:
sudo vi /etc/haproxy/haproxy.cfg
Файлға келесі бөлімдерді қосыңыз. Ауыстыру server_name статистика бетінде серверлеріңізді не деп атауға болады және private_ip — веб-трафикті бағыттағыңыз келетін серверлердің жеке IP мекенжайлары. Жеке IP мекенжайларын тексеруге болады
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 портта http_front тыңдау деп аталатын сыртқы деп аталатын көліктік деңгей жүктемесінің теңестірушісін (80-қабат) анықтайды, содан кейін трафикті http_back деп аталатын әдепкі серверге бағыттайды. Қосымша статистика /haproxy?stats статистика бетін көрсетілген мекенжайға қосады.
Әртүрлі жүктемені теңестіру алгоритмдері.
Серверлерді сервер бөлімінде көрсету HAProxy мүмкіндігінше айналмалы алгоритмге сәйкес жүктемені теңестіру үшін осы серверлерді пайдалануға мүмкіндік береді.
Теңдестіру алгоритмдері әр қосылым сервердегі қай серверге жіберілетінін анықтау үшін пайдаланылады. Міне, кейбір пайдалы опциялар:
- Дөңгелек үстел: Әрбір сервер салмағына қарай кезекпен пайдаланылады. Бұл серверлердің өңдеу уақыты біркелкі бөлінген кездегі ең тегіс және ең әділ алгоритм. Бұл алгоритм динамикалық болып табылады, бұл сервер салмағын жылдам реттеуге мүмкіндік береді.
- Leastconn: ең аз қосылымдары бар сервер таңдалады. Бірдей жүктемесі бар серверлер арасында айналым орындалады. Бұл алгоритмді пайдалану LDAP, SQL, TSE және т.б. сияқты ұзақ сеанстар үшін ұсынылады, бірақ HTTP сияқты қысқа сеанстар үшін өте қолайлы емес.
- Бірінші: Қосылым ұялары бар бірінші сервер қосылымды қабылдайды. Серверлер ең төменгі сандық идентификатордан ең үлкенге дейін таңдалады, ол әдепкі бойынша фермадағы сервер орнын көрсетеді. Сервер maxconn жеткеннен кейін келесі сервер пайдаланылады.
- Ақпарат көзі: Қай сервер сұрауды қабылдайтынын анықтау үшін бастапқы IP мекенжайы хэштеледі және іске қосылған серверлердің жалпы салмағына бөлінеді. Осылайша, бірдей клиенттің IP мекенжайы әрқашан бір серверге өтеді, ал серверлер өзгеріссіз қалады.
Қолданба деңгейінде жүктемені теңестіруді орнату (7-деңгей)
Басқа қолжетімді опция - қолданба деңгейінде (7-деңгей) жұмыс істейтін жүктеме теңестірушісін конфигурациялау, бұл веб-бағдарламаның бөліктері әртүрлі хосттарда орналасқан кезде пайдалы. Бұған қосылымды жіберуді азайту арқылы қол жеткізуге болады, мысалы, URL арқылы.
Мәтіндік редактордың көмегімен HAProxy конфигурация файлын ашыңыз:
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
Frontend /blog арқылы басталатын жолдары бар барлық қосылымдарға қолданылатын url_blog деп аталатын ACL ережесін жариялайды. Use_backend url_blog шартына сәйкес келетін қосылымдарға blog_back деп аталатын сервер арқылы қызмет көрсету керектігін және барлық басқа сұраулар әдепкі сервер арқылы өңделетінін көрсетеді.
Артқы жағында конфигурация серверлердің екі тобын орнатады: бұрынғыдай http_back және example.com/blog қосылымдарын өңдейтін blog_back деп аталатын жаңа.
Параметрлерді өзгерткеннен кейін файлды сақтаңыз және келесі пәрменді пайдаланып HAProxy бағдарламасын қайта іске қосыңыз:
sudo systemctl restart haproxy
Іске қосу кезінде қандай да бір ескертулер немесе қате туралы хабарлар алсаңыз, олар үшін конфигурацияңызды тексеріп, барлық қажетті файлдар мен қалталарды жасағаныңызға көз жеткізіңіз, содан кейін қайта іске қосып көріңіз.
Орнатуды тексеру
HAProxy конфигурацияланып, іске қосылғаннан кейін, браузерде жүктемені теңестіру серверінің жалпы IP мекенжайын ашыңыз және серверге дұрыс қосылғаныңызды тексеріңіз. Конфигурациядағы stats uri параметрі көрсетілген мекенжайда статистика бетін жасайды.
http://load_balancer_public_ip/haproxy?stats
Статистика бетін жүктегенде, барлық серверлер жасыл түспен көрсетілсе, орнату сәтті болды!
Статистика бетінде веб-хосттарды қадағалауға арналған пайдалы ақпарат, соның ішінде жоғары/төмен уақыт және сеанстар саны бар. Сервер қызыл түспен белгіленсе, сервер қосулы екеніне және оны жүктемені теңестіруші құрылғыдан пинг жіберуге болатынына көз жеткізіңіз.
Жүктеме теңестіруші жауап бермесе, HTTP қосылымдары брандмауэр арқылы блокталмағанына көз жеткізіңіз. Сондай-ақ, HAProxy төмендегі пәрменді пайдаланып жұмыс істеп тұрғанына көз жеткізіңіз:
sudo systemctl status haproxy
Статистика бетін құпия сөзбен қорғау
Дегенмен, егер статистика беті жай ғана алдыңғы жағында тізімделген болса, ол барлығына ашық, бұл жақсы идея болмауы мүмкін. Оның орнына, төмендегі мысалды haproxy.cfg файлының соңына қосу арқылы оған теңшелетін порт нөмірін тағайындай аласыз. Ауыстыру пайдаланушы аты и пароль қауіпсіз нәрсе үшін:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Жаңа тыңдаушылар тобын қосқаннан кейін алдыңғы топтағы ескі статистика uri сілтемесін жойыңыз. Аяқтаған кезде файлды сақтаңыз және HAProxy бағдарламасын қайта іске қосыңыз.
sudo systemctl restart haproxy
Содан кейін жаңа порт нөмірімен жүктеме балансын қайта ашыңыз және конфигурация файлында көрсеткен пайдаланушы аты мен құпия сөзбен жүйеге кіріңіз.
http://load_balancer_public_ip:8181
Барлық серверлеріңіз әлі де жасыл болып көрінетініне көз жеткізіңіз, содан кейін браузеріңізде порт нөмірлері жоқ тек жүктеме теңестіруші IP мекенжайын ашыңыз.
http://load_balancer_public_ip/
Егер сіздің серверлеріңізде кем дегенде бірнеше қону беттері болса, бетті қайта жүктеген сайын басқа хосттан жауап алатыныңызды байқайсыз. Конфигурация бөлімінде әртүрлі теңдестіру алгоритмдерін қолдануға немесе тексеруге болады
Қорытынды: HAProxy Load Balancer
HAProxy жүктеме балансын сәтті орнатуыңызбен құттықтаймыз! Тіпті негізгі жүктемені теңестіру орнатуымен веб-бағдарламаның өнімділігі мен қолжетімділігін айтарлықтай жақсартуға болады. Бұл нұсқаулық HAProxy көмегімен жүктемені теңестіруге кіріспе ғана, ол жылдам орнату нұсқаулығында қарастырылғаннан әлдеқайда көп нәрсеге қабілетті. Қолдану арқылы әртүрлі конфигурациялармен тәжірибе жасауды ұсынамыз
Веб-қызметіңізді бос орынмен қорғау үшін бірнеше хосттарды пайдалану арқылы жүктеме балансының өзі әлі де сәтсіздікке ұшырауы мүмкін. Бірнеше жүк теңестіргіштер арасында өзгермелі IP орнату арқылы жоғары қолжетімділікті одан әрі жақсартуға болады. Бұл туралы толығырақ біздің сайттан біле аласыз
Курс туралы толығырақ
Ақпарат көзі: www.habr.com