Макаланын котормосу курстун башталышынын алдында даярдалган
Жүктөлүштүн тең салмактуулугу колдонуучуларга кызматка кирүү мүмкүнчүлүгүн бир чекит менен камсыз кылуу менен бирге бир нече хосттордо веб-тиркемелерди горизонталдуу масштабдоо үчүн кеңири таралган чечим болуп саналат.
HAProxy ресурстарды колдонууну оптималдаштырууга, өткөрүү жөндөмдүүлүгүн жогорулатууга, жооп берүү убактысын минималдаштырууга жана ар кандай жеке ресурсту ашыкча жүктөөдөн качууга аракет кылат. Аны ар кандай Linux дистрибьюторлоруна орнотсо болот, мисалы, CentOS 8, биз бул колдонмодо, ошондой эле системаларга токтолобуз.
HAProxy өзгөчө трафики көп веб-сайттар үчүн ылайыктуу жана ошондуктан көп сервердик веб-кызмат конфигурацияларынын ишенимдүүлүгүн жана иштешин жакшыртуу үчүн колдонулат. Бул колдонмо HAProxyди CentOS 8 булут хостунда жүк баланстоочу катары орнотуу кадамдарын баяндайт, ал андан кийин трафикти веб серверлериңизге багыттайт.
Эң жакшы натыйжаларга жетишүүнүн шарты катары сизде жок дегенде эки веб-сервер жана жүктү тең салмактоочу сервер болушу керек. Желе серверлери алардын ортосундагы жүк балансын текшерүү үчүн жок дегенде 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
Файлга төмөнкү бөлүмдөрдү кошуңуз. алмаштыруу сервердин аты статистика бетинде серверлериңизди эмне деп аташ керек жана 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 жеткенде, кийинки сервер колдонулат.
- Source: Кайсы сервер суроо-талапты кабыл аларын аныктоо үчүн булак 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 url_blog деп аталган ACL эрежесин жарыялайт, ал /blog менен башталган жолдор менен бардык байланыштарга колдонулат. 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 орнотуу менен жогорку жеткиликтүүлүгүн жакшыртууга болот. Бул тууралуу кененирээк биздин баракчадан биле аласыз
Курс жөнүндө көбүрөөк
Source: www.habr.com