Ua hoʻomākaukau ʻia ka unuhi ʻana o ka ʻatikala ma ka pō o ka hoʻomaka ʻana o ka papa
ʻ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.
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.
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
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
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
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!
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
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
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
Nā mea hou aku e pili ana i ka papa
Source: www.habr.com