CentOSдо HAProxy жүк балансын орнотуу

Макаланын котормосу курстун башталышынын алдында даярдалган "Linux администратору. Виртуалдаштыруу жана кластерлөө"

CentOSдо HAProxy жүк балансын орнотуу

Жүктөлүштүн тең салмактуулугу колдонуучуларга кызматка кирүү мүмкүнчүлүгүн бир чекит менен камсыз кылуу менен бирге бир нече хосттордо веб-тиркемелерди горизонталдуу масштабдоо үчүн кеңири таралган чечим болуп саналат. HAProxy жогорку жеткиликтүүлүгүн жана прокси функционалдуулугун камсыз кылган эң популярдуу ачык булактагы жүк балансын камсыздоочу программалардын бири.

HAProxy ресурстарды колдонууну оптималдаштырууга, өткөрүү жөндөмдүүлүгүн жогорулатууга, жооп берүү убактысын минималдаштырууга жана ар кандай жеке ресурсту ашыкча жүктөөдөн качууга аракет кылат. Аны ар кандай Linux дистрибьюторлоруна орнотсо болот, мисалы, CentOS 8, биз бул колдонмодо, ошондой эле системаларга токтолобуз. Debian 8 и Ubuntu 16.

CentOSдо HAProxy жүк балансын орнотуу

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

Төмөнкү буйрукту колдонуп, баштапкы кодду жүктөп алыңыз. Сиз жаңыраак версиянын бар-жоктугун текшере аласыз HAProxy жүктөп алуу барагы.

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 даректерди текшере аласыз UpCloud башкаруу панелинде жана өтмөктө жеке тармак меню тармак.

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

Статистика барагын жүктөгөндө, бардык серверлериңиз жашыл түстө болсо, орнотуу ийгиликтүү болду!

CentOSдо HAProxy жүк балансын орнотуу

Статистика барагында веб-хостторуңузга көз салуу үчүн кээ бир пайдалуу маалыматты, анын ичинде өйдө/төмөн убакытты жана сессиялардын санын камтыйт. Сервер кызыл менен белгиленген болсо, сервер күйгүзүлгөнүн жана сиз аны жүктү тең салмактоочу машинадан пинг кыла ала турганыңызды текшериңиз.

Эгерде сиздин жүктөөнү тең салмактагычыңыз жооп бербесе, 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 менен жүктөөнү балансташтырууга киришүү болуп саналат, ал тез орнотуу көрсөтмөсүндө камтыла турган нерселерден алда канча көп нерсеге жөндөмдүү. Колдонуу менен ар кандай конфигурацияларды сынап көрүүнү сунуштайбыз кенен документация, HAProxy үчүн жеткиликтүү, андан кийин өндүрүш чөйрөңүз үчүн жүктөөнү тең салмактоону пландаштырып баштаңыз.

Веб-кызматыңызды коргоо үчүн бир нече хостторду колдонуу менен, жүктүн тең салмактуулугунун өзү дагы эле ийгиликсиздикке учурашы мүмкүн. Сиз дагы бир нече жүк баланстоочу ортосунда калкып IP орнотуу менен жогорку жеткиликтүүлүгүн жакшыртууга болот. Бул тууралуу кененирээк биздин баракчадан биле аласыз UpCloud боюнча калкып жүрүүчү IP даректер жөнүндө макала.

Курс жөнүндө көбүрөөк "Linux администратору. Виртуалдаштыруу жана кластерлөө"***

Source: www.habr.com

Комментарий кошуу