Kuyika HAProxy load balancer pa CentOS

Kumasulira kwa nkhaniyi kunakonzedwa madzulo a chiyambi cha maphunziro "Linux Administrator. Virtualization ndi clustering"

Kuyika HAProxy load balancer pa CentOS

Load balancing ndi njira yodziwika bwino yowongolerera mapulogalamu a pa intaneti mopingasa pamakina angapo kwinaku akupatsa ogwiritsa ntchito malo amodzi opezera ntchito. Hapo ndi imodzi mwamapulogalamu odziwika bwino otsegula gwero losanja gwero lomwe limaperekanso kupezeka kwakukulu komanso magwiridwe antchito a proxy.

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. Debian 8 ΠΈ Ubuntu 16.

Kuyika HAProxy load balancer pa CentOS

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 Tsamba lotsitsa la HAProxy.

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 patsamba lazolembangati mukufuna kudziwa zambiri za izo.

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 pa UpCloud control panel ndi pa tabu Makanema apamanja mumasamba Network.

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!

Kuyika HAProxy load balancer pa CentOS

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 zolemba zonse.

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 zolemba zambiri, kupezeka kwa HAProxy, ndiyeno yambani kukonzekera kusanja katundu kwa malo anu opangira.

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 nkhani yokhudza ma adilesi akuyandama a IP pa UpCloud.

Zambiri zamaphunzirowa "Linux Administrator. Virtualization ndi clustering"***

Source: www.habr.com

Kuwonjezera ndemanga