Ke kau nei i ka HAProxy load balancer ma CentOS

Ua hoʻomākaukau ʻia ka unuhi ʻana o ka ʻatikala ma ka pō o ka hoʻomaka ʻana o ka papa "Ka Luna Hoʻokele Linux. Virtualization a me ka clustering"

Ke kau nei i ka HAProxy load balancer ma CentOS

ʻO ka load balancing kahi hopena maʻamau no ka hoʻonui ʻana i nā noi pūnaewele ma waena o nā pūʻali lehulehu ʻoiai e hāʻawi ana i nā mea hoʻohana i hoʻokahi wahi o ke komo ʻana i ka lawelawe. HAProxy ʻO ia kekahi o ka polokalamu hoʻokaʻawale load-loading source kaulana loa e hāʻawi ana i ka loaʻa kiʻekiʻe a me ka hana proxy.

Hoʻoikaika ʻo HAProxy i ka hoʻohana ʻana i nā kumuwaiwai, hoʻonui i ka throughput, hōʻemi i ka manawa pane, a pale i ka hoʻonui ʻana i nā kumuwaiwai pākahi. Hiki ke hoʻokomo ʻia ma nā ʻano like ʻole o Linux, e like me CentOS 8, a mākou e kālele ai i kēia alakaʻi, a me nā ʻōnaehana. Debian 8 и Ubuntu 16.

Ke kau nei i ka HAProxy load balancer ma CentOS

He kūpono loa ka HAProxy no nā pūnaewele me nā kaʻa kiʻekiʻe loa a no laila hoʻohana pinepine ʻia e hoʻomaikaʻi i ka hilinaʻi a me ka hana o nā hoʻonohonoho lawelawe pūnaewele multi-server. Hōʻike kēia alakaʻi i nā ʻanuʻu e hoʻonohonoho ai i ka HAProxy ma ke ʻano he mea hoʻohālikelike ukana ma kahi kikowaena kapuaʻi CentOS 8, a laila e hoʻokele i nā kaʻa i kāu mau kikowaena pūnaewele.

Ma ke ʻano he koi mua no nā hopena maikaʻi loa, pono ʻoe e loaʻa ma ka liʻiliʻi ʻelua mau kikowaena pūnaewele a me kahi kikowaena hoʻohālikelike ukana. Pono nā kikowaena pūnaewele e holo ma ka liʻiliʻi loa i kahi lawelawe pūnaewele maʻamau e like me nginx a i ʻole httpd i mea e hoʻāʻo ai i ka kaupaona ʻana ma waena o lākou.

Ke kau nei i ka HAProxy ma CentOS 8

No ka mea ʻo HAProxy kahi palapala noi open source e ulu wikiwiki nei, ʻo ka hāʻawi ʻana i loaʻa iā ʻoe ma nā waihona CentOS maʻamau ʻaʻole paha ka mana hou loa. No ka ʻike ʻana i ka mana o kēia manawa, e holo i kēia kauoha:

sudo yum info haproxy

Hāʻawi mau ʻo HAProxy i ʻekolu mau mana paʻa e koho ai: ʻelua mau mana hou i kākoʻo ʻia a me ke kolu o ka mana kahiko e loaʻa ana i nā mea hou koʻikoʻi. Hiki iā ʻoe ke nānā i ka mana hou loa i helu ʻia ma ka pūnaewele HAProxy a laila e hoʻoholo i ka mana āu e makemake ai e hana pū me.

Ma kēia alakaʻi, e hoʻokomo mākou i ka stable version 2.0 hou loa, ʻaʻole i loaʻa i nā waihona maʻamau i ka manawa e kākau ai i ke alakaʻi. Pono ʻoe e hoʻokomo iā ia mai ke kumu kumu. Akā ʻo ka mea mua, e nānā inā ua hālāwai ʻoe i nā kūlana kūpono e hoʻoiho a hoʻohui i ka papahana.

sudo yum install gcc pcre-devel tar make -y

Hoʻoiho i ke kumu kumu me ke kauoha ma lalo nei. Hiki iā ʻoe ke nānā inā loaʻa kahi mana hou ma HAProxy palapala hoʻoiho.

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

Ke pau ka hoʻoiho ʻana, wehe i nā faila me ka hoʻohana ʻana i ke kauoha ma lalo nei:

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

E hele i ka papa kuhikuhi kumu i wehe ʻole ʻia:

cd ~/haproxy-2.0.7

A laila hoʻohui i ka polokalamu no kāu ʻōnaehana:

make TARGET=linux-glibc

A ʻo ka hope, e hoʻokomo iā HAProxy ponoʻī:

sudo make install

Hoʻokomo ʻia ʻo HAProxy, akā pono ia i kekahi mau manipulations hou e hana ai. E hoʻomau kākou i ka hoʻonohonoho ʻana i ka polokalamu a me nā lawelawe ma lalo nei.

Hoʻonohonoho i ka HAProxy no kāu kikowaena

I kēia manawa e hoʻohui i nā papa kuhikuhi a me nā faila helu no nā mea komo HAProxy:

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

E hana i kahi loulou hōʻailona no nā binaries i hiki iā ʻoe ke holo i nā kauoha HAProxy ma ke ʻano he mea hoʻohana maʻamau:

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

Inā makemake ʻoe e hoʻohui i kahi koho i kāu ʻōnaehana ma ke ʻano he lawelawe, e kope i ka faila haproxy.init mai nā laʻana i kāu papa kuhikuhi /etc/init.d. Hoʻoponopono i nā ʻae faila i holo ka palapala, a laila hoʻomaka hou i ka systemd daemon:

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

Pono ʻoe e ʻae i ka lawelawe e hoʻomaka hou i ka wā e hoʻomaka ai ka ʻōnaehana:

sudo chkconfig haproxy on

No ka maʻalahi, pono e hoʻohui i kahi mea hoʻohana hou e holo i ka HAProxy:

sudo useradd -r haproxy

Ma hope o kēia, hiki iā ʻoe ke nānā hou i ka helu helu i kau ʻia me ka hoʻohana ʻana i kēia kauoha:

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

I kā mākou hihia, ʻo 2.0.7 ka mana, e like me ka mea i hōʻike ʻia ma ka hiʻohiʻona puka ma luna.

ʻO ka mea hope loa, ua paʻa loa ka pā ahi ma CentOS 8 no kēia papahana. E hoʻohana i kēia mau kauoha e ʻae i nā lawelawe i makemake ʻia a hoʻonohonoho hou i ka pā ahi:

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

Hoʻonohonoho ʻana i ka hoʻouka kaulike

He hana maʻalahi ka hoʻonohonoho ʻana i ka HAProxy. ʻO ka mea nui, pono ʻoe e haʻi iā HAProxy i nā pilina e hoʻolohe ai a ma kahi e hoʻokuʻu ai iā lākou.

Hana ʻia kēia ma ka hana ʻana i kahi faila hoʻonohonoho /etc/haproxy/haproxy.cfg me ka wehewehe ʻana i nā hoʻonohonoho. Hiki iā ʻoe ke heluhelu e pili ana i nā koho hoʻonohonoho HAProxy ma ka palapala palapalainā makemake ʻoe e ʻike hou aku.

Hoʻopaʻa kaulike ma ka papa lawe (papa 4)

E hoʻomaka kākou me ka hoʻonohonoho kumu. E hana i kahi faila config hou, no ka laʻana me ka hoʻohana ʻana vi me ke kauoha ma lalo nei:

sudo vi /etc/haproxy/haproxy.cfg

E hoʻohui i kēia mau ʻāpana i ka faila. Hoʻololi server_name he aha kāu e kapa ai i kāu mau kikowaena ma ka ʻaoʻao helu helu, a private_ip - nā leka uila IP pilikino o nā kikowaena āu e makemake ai e kuhikuhi i ka lele pūnaewele. Hiki iā ʻoe ke nānā i nā helu IP pilikino ma ka papa mana o UpCloud a ma ka papa Paena pūnaewele i ka papa ʻaina Leakaʻaʻike.

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

Hōʻike kēia i kahi mea hoʻohālikelike ukana pae lawe (layer 4) i kapa ʻia ʻo http_front e hoʻolohe ana ma ke awa 80, a laila e hoʻouna i ke kaʻa i kahi backend paʻamau i kapa ʻia ʻo http_back. Hoʻohui nā helu helu /haproxy?stats i ka ʻaoʻao helu helu i ka helu wahi.

ʻO nā algorithm hoʻohālikelike hoʻouka like ʻole.

ʻO ka wehewehe ʻana i nā kikowaena ma ka ʻaoʻao hope e hiki ai iā HAProxy ke hoʻohana i kēia mau kikowaena no ka hoʻokau kaulike ʻana e like me ka algorithm round-robin inā hiki.

Hoʻohana ʻia nā algorithm balancing e hoʻoholo ai i ke kikowaena o ke kua i kēlā me kēia pili i hāʻawi ʻia. Eia kekahi mau koho pono.

  • Roundrobin: Hoʻohana ʻia kēlā me kēia kikowaena e like me kona kaumaha. ʻO kēia ka algorithm ʻoi loa a maikaʻi loa i ka wā e hoʻohele like ʻia ai ka manawa hana o nā kikowaena. He ikaika kēia algorithm, hiki ke hoʻololi i ke kaumaha o ke kikowaena ma ka lele.
  • Leastconn: ua koho ʻia ke kikowaena me ka liʻiliʻi loa. Hana ʻia ka round robin ma waena o nā kikowaena me ka ukana like. Hoʻohana ʻia kēia algorithm no nā kau lōʻihi e like me LDAP, SQL, TSE, a me nā mea ʻē aʻe, akā ʻaʻole kūpono ia no nā kau pōkole e like me HTTP.
  • Ka mua: Loaʻa i ke kikowaena mua me nā slot pili i loaʻa ka pilina. Koho ʻia nā kikowaena mai ka helu helu haʻahaʻa a hiki i ka mea kiʻekiʻe loa, kahi i hoʻohālikelike ʻia i ke kūlana o ke kikowaena ma ka mahiʻai. Ke hiki aku kahi kikowaena i ka maxconn, hoʻohana ʻia ke kikowaena aʻe.
  • Source: Hoʻopili ʻia ka helu IP kumu a puʻunaue ʻia e ka nui o ke kaumaha o nā kikowaena holo e hoʻoholo ai i ke kikowaena e loaʻa ka noi. Ma kēia ala, e hele mau ana ka IP address o ka mea kūʻai aku i ka server hoʻokahi, ʻoiai e mau ana nā kikowaena.

Hoʻonohonoho i ka hoʻopaʻa ʻana i ka ukana ma ka pae noi (layer 7)

ʻO kahi koho ʻē aʻe ʻo ka hoʻonohonoho ʻana i kahi mea hoʻohālikelike ukana e holo ma ka papa noi (layer 7), he mea pono ke loaʻa nā ʻāpana o kāu noi pūnaewele ma nā pūʻali like ʻole. Hiki ke hoʻokō ʻia kēia ma ka throttling i ka hoʻouna ʻana i ka pilina, no ka laʻana ma URL.

E wehe i ka waihona hoʻonohonoho HAProxy me ka hoʻohana ʻana i kahi hoʻoponopono kikokikona:

sudo vi /etc/haproxy/haproxy.cfg

A laila e hoʻonohonoho i nā ʻāpana mua a me hope e like me ka laʻana ma lalo nei:

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

Hōʻike ka frontend i kahi lula ACL i kapa ʻia ʻo url_blog e pili ana i nā pili āpau me nā ala e hoʻomaka ana me /blog. Hoʻomaopopo ʻo Use_backend e lawelawe ʻia nā pilina pili i ke kūlana url_blog e kahi backend i kapa ʻia ʻo blog_back, a e mālama ʻia nā noi ʻē aʻe e ka backend paʻamau.

Ma ka ʻaoʻao hope, hoʻonohonoho ka hoʻonohonoho ʻana i ʻelua pūʻulu o nā kikowaena: http_back, e like me ka wā ma mua, a me kahi mea hou i kapa ʻia ʻo blog_back, nāna e mālama i nā pilina i example.com/blog.

Ma hope o ka hoʻololi ʻana i nā hoʻonohonoho, mālama i ka faila a hoʻomaka hou i ka HAProxy me ka hoʻohana ʻana i kēia kauoha:

sudo systemctl restart haproxy

Inā loaʻa iā ʻoe nā ʻōlelo aʻo a i ʻole nā ​​leka hewa i ka wā e hoʻomaka ai, e nānā i kāu hoʻonohonoho no lākou a e hōʻoia ʻoe ua hana ʻoe i nā faila a me nā waihona pono a pau, a laila e hoʻāʻo e hoʻomaka hou.

Ke ho'āʻo nei i ka hoʻonohonoho

Ke hoʻonohonoho ʻia a holo ʻia ʻo HAProxy, wehe i ka IP IP lehulehu o ka server balancer load ma kahi polokalamu kele pūnaewele a nānā inā pili pololei ʻoe i ka hope. Hana ʻia ka ʻaoʻao helu helu ma ka helu wahi i kuhikuhi ʻia.

http://load_balancer_public_ip/haproxy?stats

Ke hoʻouka ʻoe i ka ʻaoʻao helu helu, inā hōʻike ʻia kāu mau kikowaena āpau i ka ʻōmaʻomaʻo, a laila ua kūleʻa ka hoʻonohonoho!

Ke kau nei i ka HAProxy load balancer ma CentOS

Aia ka ʻaoʻao helu helu i kekahi mau ʻike pono no ka nānā ʻana i kāu mau pūnaewele pūnaewele, me ka manawa piʻi/lalo a me ka helu o nā kau. Inā hōʻailona ʻia ke kikowaena ʻulaʻula, e hōʻoia i ka hoʻā ʻana o ke kikowaena a hiki iā ʻoe ke ping iā ia mai ka mīkini hoʻohālikelike ukana.

Inā ʻaʻole e pane ana kāu mea kaulike, e hōʻoia ʻaʻole i ālai ʻia nā pilina HTTP e kahi pā ahi. E hōʻoia hoʻi e hana ana ʻo HAProxy me ka hoʻohana ʻana i ke kauoha ma lalo nei:

sudo systemctl status haproxy

Ka pale ʻana i ka ʻaoʻao helu helu me ka ʻōlelo huna

Eia naʻe, inā helu wale ʻia ka ʻaoʻao helu helu ma ka ʻaoʻao mua, a laila ua wehe ʻia ia no nā mea a pau e ʻike, ʻaʻole paha he manaʻo maikaʻi. Akā, hiki iā ʻoe ke hāʻawi iā ia i helu port maʻamau ma ka hoʻohui ʻana i ka laʻana ma lalo i ka hopena o kāu faila haproxy.cfg. Hoʻololi inoa mea hoʻohana и hua huna no kekahi mea palekana:

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

Ma hope o ka hoʻohui ʻana i pūʻulu hoʻolohe hou, e wehe i ka loulou uri stats kahiko mai ka hui mua. Ke pau, mālama i ka faila a hoʻomaka hou i ka HAProxy.

sudo systemctl restart haproxy

A laila e wehe hou i ka load balancer me ka helu port hou a komo me ka inoa inoa a me ka ʻōlelo huna āu i kuhikuhi ai i ka faila hoʻonohonoho.

http://load_balancer_public_ip:8181

E hōʻoia i ka ʻōmaʻomaʻo o kāu mau kikowaena a laila wehe wale i ka IP balancer load me ka ʻole o nā helu awa ma kāu polokalamu kele pūnaewele.

http://load_balancer_public_ip/

Inā loaʻa iā ʻoe kekahi mau ʻaoʻao pae ʻana ma kāu mau kikowaena hope, e ʻike ʻoe i kēlā me kēia manawa āu e hoʻouka hou ai i ka ʻaoʻao e loaʻa iā ʻoe kahi pane mai kahi hoʻokipa ʻē aʻe. Hiki iā ʻoe ke hoʻāʻo i nā algorithm kaulike like ʻole ma ka ʻāpana hoʻonohonoho a nānā paha palapala piha.

Ka hopena: HAProxy Load Balancer

Mahalo i ka hoʻonohonoho pono ʻana i kāu HAProxy load balancer! ʻOiai me kahi hoʻonohonoho hoʻonohonoho hoʻohālikelike haʻahaʻa, hiki iā ʻoe ke hoʻomaikaʻi nui i ka hana a me ka loaʻa ʻana o kāu noi pūnaewele. He hoʻomaka wale kēia alakaʻi i ka hoʻouka ʻana me HAProxy, hiki ke hana i ʻoi aku ma mua o ka mea hiki ke uhi ʻia i ke alakaʻi hoʻonohonoho wikiwiki. Paipai mākou e hoʻokolohua me nā hoʻonohonoho like ʻole me ka hoʻohana ʻana palapala nui, i loaʻa iā HAProxy, a laila hoʻomaka i ka hoʻolālā ʻana i ka hoʻohālikelike ʻana i ka ukana no kāu wahi hana.

Ma ka hoʻohana ʻana i nā pūʻali lehulehu e pale aku i kāu lawelawe pūnaewele me ke keʻena poʻo, hiki ke hōʻike ʻia ka load balancer ponoʻī i kahi hemahema. Hiki iā ʻoe ke hoʻomaikaʻi hou aʻe i ka loaʻa kiʻekiʻe ma o ka hoʻokomo ʻana i kahi IP lana ma waena o nā mea kaulike ukana. Hiki iā ʻoe ke ʻike hou aku e pili ana i kēia ma kā mākou ʻatikala e pili ana i nā leka uila IP ma UpCloud.

Nā mea hou aku e pili ana i ka papa "Ka Luna Hoʻokele Linux. Virtualization a me ka clustering"***

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka