Kumasulira kwa nkhaniyi kunakonzedwa madzulo a chiyambi cha maphunziro
Load balancing ndi njira yodziwika bwino yowongolerera mapulogalamu a pa intaneti mopingasa pamakina angapo kwinaku akupatsa ogwiritsa ntchito malo amodzi opezera ntchito.
HAProxy imayesetsa kukhathamiritsa kagwiritsidwe ntchito kazinthu, kupititsa patsogolo ntchito, kuchepetsa nthawi yoyankha, komanso kupewa kulemetsa chilichonse chomwe chilipo. Itha kukhazikitsidwa pamagawidwe osiyanasiyana a Linux, monga CentOS 8, yomwe tikambirana mu bukhuli, komanso machitidwe.
HAProxy ndiyoyenera makamaka kwa mawebusayiti omwe ali ndi kuchuluka kwa magalimoto ambiri ndipo motero nthawi zambiri amagwiritsidwa ntchito kukonza kudalirika ndi magwiridwe antchito amitundu yambiri yama seva. Bukuli likufotokoza njira zokhazikitsira HAProxy ngati chowongolera pamtambo wa CentOS 8, womwe umayendetsa magalimoto kuma seva anu.
Monga chofunikira kuti mupeze zotsatira zabwino, muyenera kukhala ndi ma seva awiri a intaneti ndi seva yolemetsa. Ma seva a pawebusaiti ayenera kukhala akugwiritsa ntchito tsamba loyambira monga nginx kapena httpd kuti ayese kusinthasintha pakati pawo.
Kuyika HAProxy pa CentOS 8
Chifukwa HAProxy ndi pulogalamu yotseguka yotuluka mwachangu, kugawa komwe mungapeze m'malo osungira a CentOS sikungakhale mtundu waposachedwa. Kuti mudziwe mtundu wamakono, yesani lamulo ili:
sudo yum info haproxy
HAProxy nthawi zonse imapereka mitundu itatu yokhazikika yomwe mungasankhe: mitundu iwiri yaposachedwa kwambiri komanso yachitatu, yachikale yomwe ikulandilabe zosintha zovuta. Mutha kuyang'ana nthawi zonse zokhazikika zomwe zalembedwa patsamba la HAProxy ndikusankha mtundu womwe mukufuna kugwiritsa ntchito.
Mu bukhuli, tikhala tikuyika mtundu waposachedwa wa 2.0, womwe unali usanapezeke m'malo osungira wamba panthawi yolemba bukhuli. Muyenera kuyiyika kuchokera kugwero loyambirira. Koma choyamba, onani ngati mwakwaniritsa zofunikira kuti mutsitse ndikuphatikiza pulogalamuyo.
sudo yum install gcc pcre-devel tar make -y
Tsitsani kachidindo kochokera pogwiritsa ntchito lamulo ili pansipa. Mutha kuwona ngati pali mtundu watsopano womwe ukupezekapo
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Kutsitsa kukamaliza, chotsani mafayilo pogwiritsa ntchito lamulo ili pansipa:
tar xzvf ~/haproxy.tar.gz -C ~/
Pitani ku chikwatu chosapakidwa:
cd ~/haproxy-2.0.7
Kenako phatikizani pulogalamu yamakina anu:
make TARGET=linux-glibc
Ndipo potsiriza, ikani HAProxy yokha:
sudo make install
HAProxy tsopano yakhazikitsidwa, koma imafuna kusintha kwina kuti igwire ntchito. Tiyeni tipitilize kukhazikitsa mapulogalamu ndi ntchito pansipa.
Kukhazikitsa HAProxy kwa seva yanu
Tsopano yonjezerani mafayilo ndi ziwerengero zotsatirazi pazolemba za HAProxy:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Pangani ulalo wophiphiritsa wamabinari kuti mutha kuyendetsa malamulo a HAProxy ngati wogwiritsa ntchito nthawi zonse:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Ngati mukufuna kuwonjezera wothandizira ku dongosolo lanu ngati ntchito, lembani fayilo ya haproxy.init kuchokera ku zitsanzo kupita ku /etc/init.d directory. Sinthani zilolezo zamafayilo kuti script iziyenda, ndikuyambitsanso daemon ya systemd:
sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload
Muyeneranso kulola kuti ntchitoyo iyambikenso ikayamba dongosolo:
sudo chkconfig haproxy on
Kuti zitheke, tikulimbikitsidwanso kuwonjezera wogwiritsa ntchito watsopano kuti ayendetse HAProxy:
sudo useradd -r haproxy
Pambuyo pa izi, mutha kuyang'ananso nambala yoyikiratu pogwiritsa ntchito lamulo ili:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Kwa ife, mtunduwo uyenera kukhala 2.0.7, monga momwe tawonetsera pachitsanzo pamwambapa.
Pomaliza, chowotcha moto chosasinthika mu CentOS 8 ndicholetsa pulojekitiyi. Gwiritsani ntchito malamulo otsatirawa kuti mulole mautumiki ofunikira ndikukhazikitsanso firewall:
sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload
Kukhazikitsa Balancer
Kukhazikitsa HAProxy ndi njira yosavuta. Kwenikweni, zomwe muyenera kuchita ndikuuza HAProxy maulalo otani omwe iyenera kumvera komanso komwe ikuyenera kuwatumizira.
Izi zimachitika popanga fayilo yosinthira /etc/haproxy/haproxy.cfg ndikutanthauzira makonda. Mutha kuwerenga za HAProxy kasinthidwe zosankha
Kuwongolera katundu pagawo la zoyendera (gawo 4)
Tiyeni tiyambe ndi zoyambira. Pangani fayilo yatsopano yosinthira, mwachitsanzo pogwiritsa ntchito vi ndi lamulo ili pansipa:
sudo vi /etc/haproxy/haproxy.cfg
Onjezani zigawo zotsatirazi ku fayilo. M'malo seva_name zomwe ziyenera kutcha ma seva anu patsamba la ziwerengero, ndi private_ip - ma adilesi achinsinsi a IP a maseva omwe mukufuna kuwongolera kuchuluka kwa anthu pa intaneti. Mutha kuyang'ana ma adilesi achinsinsi a 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
Izi zimatanthawuza zoyendetsa zonyamula katundu (wosanjikiza 4) kunja komwe kumatchedwa http_front kumvetsera pa doko 80, zomwe zimapititsa patsogolo magalimoto kumalo osasintha omwe amatchedwa http_back. Ziwerengero zowonjezera /haproxy?stats zimalumikiza tsamba la ziwerengero ku adilesi yotchulidwa.
Ma algorithms osiyanasiyana owerengera katundu.
Kufotokozera ma seva mu gawo lakumbuyo kumalola HAProxy kugwiritsa ntchito ma seva awa kuti azitha kuwongolera molingana ndi algorithm yozungulira-robin ngati kuli kotheka.
Ma algorithms owerengera amagwiritsidwa ntchito kudziwa kuti ndi seva iti yomwe ili kumbuyo komwe kulumikizana kulikonse kumadutsa. Nazi zina mwazothandiza:
- Roundrobin: Seva iliyonse imagwiritsidwa ntchito motsatana molingana ndi kulemera kwake. Iyi ndiye algorithm yosalala komanso yabwino kwambiri pamene nthawi yokonza ma seva imakhalabe yogawidwa mofanana. Algorithm iyi ndi yamphamvu, kulola kulemera kwa seva kuti kusinthidwa pa ntchentche.
- Leastconn: seva yokhala ndi zolumikizira zochepa imasankhidwa. Round robin imachitika pakati pa ma seva omwe ali ndi katundu womwewo. Kugwiritsa ntchito algorithm iyi kumalimbikitsidwa pamagawo aatali monga LDAP, SQL, TSE, ndi zina zambiri, koma sizoyenera kwambiri magawo amfupi monga HTTP.
- Choyamba: Seva yoyamba yokhala ndi mipata yolumikizira yomwe ilipo imalandira kulumikizana. Maseva amasankhidwa kuchokera pa manambala otsika kwambiri mpaka apamwamba kwambiri, omwe amasinthidwa kukhala malo a seva pafamu. Seva ikafika ku maxconn, seva yotsatira imagwiritsidwa ntchito.
- Source: Adilesi ya IP imasinthidwa mwachangu ndikugawidwa ndi kulemera kwathunthu kwa ma seva omwe akuthamanga kuti adziwe kuti ndi seva iti yomwe ilandila pempho. Mwanjira iyi, adilesi ya IP ya kasitomala yemweyo nthawi zonse amapita ku seva yomweyo, pomwe ma seva amakhalabe ofanana.
Kukhazikitsa kusanja kwa katundu pamlingo wofunsira (wosanjikiza 7)
Njira ina yomwe ilipo ndikukonza cholezera cholemetsa kuti chiyendetse pagawo la pulogalamu (wosanjikiza 7), chomwe chimakhala chothandiza pomwe magawo a pulogalamu yanu yapaintaneti ali pa makamu osiyanasiyana. Izi zitha kutheka poyendetsa kufalikira kwa kulumikizana, mwachitsanzo ndi URL.
Tsegulani fayilo yosinthira ya HAProxy pogwiritsa ntchito mkonzi wamawu:
sudo vi /etc/haproxy/haproxy.cfg
Kenako konzani magawo akutsogolo ndi kumbuyo monga mwa chitsanzo pansipa:
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
Kutsogolo kumalengeza lamulo la ACL lotchedwa url_blog lomwe limagwira ntchito pamalumikizidwe onse okhala ndi njira zoyambira ndi /blog. Use_backend imanena kuti malumikizidwe ofanana ndi chikhalidwe cha url_blog ayenera kutumizidwa ndi backend yotchedwa blog_back, ndipo zopempha zina zonse zimayendetsedwa ndi backend.
Kumbali yakumbuyo, kasinthidwe kameneka kamakhazikitsa magulu awiri a maseva: http_back, monga kale, ndi yatsopano yotchedwa blog_back, yomwe imagwira maulumikizidwe ku example.com/blog.
Mukasintha zosintha, sungani fayilo ndikuyambitsanso HAProxy pogwiritsa ntchito lamulo ili:
sudo systemctl restart haproxy
Ngati mulandira machenjezo aliwonse kapena mauthenga olakwika poyambitsa, yang'anani momwe mungasinthire ndikuonetsetsa kuti mwapanga mafayilo ndi zikwatu zonse zofunika, ndiye yesani kuyambiranso.
Kuyesa khwekhwe
HAProxy ikangokonzedwa ndikuyendetsa, tsegulani adilesi ya IP yapagulu la seva yolemetsa mu msakatuli ndikuwona ngati mwalumikizidwa ku backend molondola. The stats uri parameter mu kasinthidwe imapanga tsamba la ziwerengero pa adilesi yotchulidwa.
http://load_balancer_public_ip/haproxy?stats
Mukatsitsa tsamba la ziwerengero, ngati maseva anu onse akuwonetsa zobiriwira, ndiye kuti kukhazikitsidwa kudachita bwino!
Tsamba la ziwerengero lili ndi zambiri zothandiza pakulondolera mawebusayiti anu, kuphatikiza nthawi yokwera/yotsika ndi kuchuluka kwa magawo. Ngati seva ili ndi chizindikiro chofiira, onetsetsani kuti seva yayatsidwa ndipo mutha kuyiyika pamakina olemetsa.
Ngati chowerengera chanu sichikuyankha, onetsetsani kuti maulumikizidwe a HTTP sakutsekedwa ndi firewall. Onetsetsaninso kuti HAProxy ikugwira ntchito pogwiritsa ntchito lamulo ili pansipa:
sudo systemctl status haproxy
Kuteteza tsamba la ziwerengero ndi mawu achinsinsi
Komabe, ngati tsamba la ziwerengero langolembedwa kumapeto kwenikweni, ndiye kuti ndi lotseguka kuti aliyense awone, zomwe sizingakhale zabwino. M'malo mwake, mutha kuyika nambala yadoko powonjezera chitsanzo pansipa kumapeto kwa fayilo yanu ya haproxy.cfg. M'malo lolowera ΠΈ achinsinsi kwa chinthu chotetezeka:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Mukawonjezera gulu la omvera atsopano, chotsani ulalo wakale wa stats uri pagulu lakutsogolo. Mukamaliza, sungani fayilo ndikuyambitsanso HAProxy.
sudo systemctl restart haproxy
Kenako tsegulaninso zolemetsa ndi nambala yatsopano ya doko ndikulowa ndi dzina lolowera ndi mawu achinsinsi omwe mwatchula mufayilo yosinthira.
http://load_balancer_public_ip:8181
Onetsetsani kuti maseva anu onse akuwonetsa zobiriwira ndiyeno mutsegule IP yolemetsa yokha popanda manambala adoko mumsakatuli wanu.
http://load_balancer_public_ip/
Ngati muli ndi masamba angapo otsikira pamaseva anu akumbuyo, mudzazindikira kuti nthawi iliyonse mukatsegulanso tsambalo mumapeza yankho kuchokera kwa ena. Mutha kuyesa ma aligorivimu osiyanasiyana mugawo lokonzekera kapena onani
Kutsiliza: HAProxy Load Balancer
Zabwino zonse pokhazikitsa bwino HAProxy load balancer! Ngakhale mutakhala ndi kulinganiza koyambira, mutha kusintha magwiridwe antchito ndi kupezeka kwa pulogalamu yanu yapaintaneti. Upangiri uwu ndi mawu oyambira owonjezera kusanja ndi HAProxy, yomwe imatha zambiri kuposa zomwe zingafotokozedwe mu kalozera wokhazikitsa mwachangu. Tikukulimbikitsani kuyesa masinthidwe osiyanasiyana pogwiritsa ntchito
Pogwiritsa ntchito makamu angapo kuti muteteze ntchito yanu yapaintaneti ndi headroom, chowongolera chokhacho chingakhalebe cholephera. Mutha kupititsa patsogolo kupezeka kwakukulu mwa kukhazikitsa IP yoyandama pakati pa zolemetsa zambiri. Mutha kudziwa zambiri za izi patsamba lathu
Zambiri zamaphunzirowa
Source: www.habr.com