Ukufakela i-HAProxy load balancer kwi-CentOS

Ukuguqulelwa kwenqaku kwalungiselelwa kwangaphambi kokuqalisa kwekhosi "Umlawuli weLinux. I-Virtualization kunye nokudibanisa"

Ukufakela i-HAProxy load balancer kwi-CentOS

Ukulayisha ukulinganisa sisisombululo esiqhelekileyo sokulinganisa ngokuthe tye izicelo zewebhu kwimikhosi emininzi ngelixa unikezela abasebenzisi indawo enye yokufikelela kwinkonzo. HAProxy yenye yezona zidumileyo isoftware yokulinganisa umthwalo wemithombo evulekileyo ekwabonelela ngokufumaneka okuphezulu kunye nokusebenza kommeli.

I-HAProxy izama ukwandisa ukusetyenziswa kwezibonelelo, ukwandisa ukuhamba, ukunciphisa ixesha lokuphendula, kwaye ugweme ukulayisha kakhulu nayiphi na isibonelelo somntu ngamnye. Inokufakwa kwiintlobo ezahlukeneyo zokusasazwa kweLinux, njengeCentOS 8, esiya kugxila kuyo kwesi sikhokelo, kunye neenkqubo. Debian 8 ΠΈ Ubuntu 16.

Ukufakela i-HAProxy load balancer kwi-CentOS

I-HAProxy ifaneleka ngokukodwa kwiiwebhusayithi ezine-traffic ephezulu kakhulu kwaye ngoko ke ihlala isetyenziselwa ukuphucula ukuthembeka kunye nokusebenza kobume benkonzo yewebhu ye-multi-server. Esi sikhokelo sichaza amanyathelo okuseta i-HAProxy njenge-balancer yomthwalo kwi-CentOS 8 cloud host, leyo ke ihambisa i-traffic kwiiseva zakho zewebhu.

Njengemfuneko yeziphumo ezingcono, kufuneka ubuncinane ube neeseva ezimbini zewebhu kunye neseva yokulinganisa umthwalo. Abancedisi bewebhu kufuneka basebenze ubuncinci benkonzo yewebhu esisiseko efana ne-nginx okanye i-httpd ukuze kuvavanywe ulungelelwaniso lomthwalo phakathi kwabo.

Ukufakela i-HAProxy kwi-CentOS 8

Ngenxa yokuba i-HAProxy sisicelo somthombo ovulekileyo ovela ngokukhawuleza, ukuhanjiswa okukhoyo kuwe kwiindawo zokugcina zokugcina ze-CentOS kusenokungabi yinguqulelo yamva nje. Ukufumana inguqulelo yangoku, sebenzisa lo myalelo ulandelayo:

sudo yum info haproxy

I-HAProxy isoloko ibonelela ngeenguqulelo ezintathu ezizinzile zokukhetha kuzo: iinguqulelo ezimbini zamva nje ezixhaswayo kunye neyesithathu, inguqulo endala esafumana ukuhlaziywa okubalulekileyo. Unokuhlala ujonga inguqulelo yamva nje ezinzileyo edweliswe kwiwebhusayithi ye-HAProxy kwaye emva koko uthathe isigqibo sokuba yeyiphi inguqulelo ofuna ukusebenza nayo.

Kwesi sikhokelo, siya kufaka inguqulelo yamva nje ezinzileyo ye-2.0, eyayingekafumaneki kwiindawo zokugcina ezisemgangathweni ngexesha lokubhalwa kwesikhokelo. Kuya kufuneka uyifake kumthombo wokuqala. Kodwa kuqala, khangela ukuba udibene neemeko eziyimfuneko zokukhuphela kunye nokuqokelela inkqubo.

sudo yum install gcc pcre-devel tar make -y

Khuphela ikhowudi yemvelaphi usebenzisa lo myalelo ungezantsi. Ungajonga ukuba kukho inguqulelo entsha ekhoyo Iphepha lokukhuphela le-HAProxy.

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

Nje ukuba ukhuphelo lugqityiwe, khupha iifayile usebenzisa lo myalelo ungezantsi:

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

Yiya kuvimba weefayili ongapakishwanga:

cd ~/haproxy-2.0.7

Emva koko qulunqa inkqubo yesixokelelwano sakho:

make TARGET=linux-glibc

Kwaye ekugqibeleni, faka i-HAProxy ngokwayo:

sudo make install

I-HAProxy ifakiwe ngoku, kodwa ifuna ezinye iindlela ezongezelelweyo ukuze isebenze. Masiqhubeke siseta isoftwe kunye neenkonzo ezingezantsi.

Ukumisela i-HAProxy yeseva yakho

Ngoku yongeza abalawuli balandelayo kunye nefayile yeenkcukacha-manani ukwenzela amangeno e-HAProxy:

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

Yenza ikhonkco lokomfuziselo lokubini ukuze ukwazi ukusebenzisa imiyalelo ye-HAProxy njengomsebenzisi oqhelekileyo:

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

Ukuba ufuna ukongeza ummeli kwisixokelelwano sakho njengenkonzo, khuphela ifayile ye haproxy.init ukusuka kwimizekelo ukuya kwi/etc/init.d directory. Hlela iimvume zefayile ukuze iskripthi sisebenze, kwaye emva koko uqalise kwakhona inkqubo yedaemon:

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

Kufuneka kwakhona uvumele inkonzo ukuba iqalise ngokuzenzekelayo xa inkqubo iqala:

sudo chkconfig haproxy on

Ukwenzela lula, kuyacetyiswa ukuba ungeze umsebenzisi omtsha ukuqhuba i-HAProxy:

sudo useradd -r haproxy

Emva koku, unokujonga kwakhona inombolo yenguqulo efakiweyo usebenzisa lo myalelo ulandelayo:

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

Kwimeko yethu, inguqu kufuneka ibe yi-2.0.7, njengoko kuboniswe kumzekelo ophuma ngasentla.

Okokugqibela, i-firewall engagqibekanga kwi-CentOS 8 ingqongqo kule projekthi. Sebenzisa le miyalelo ilandelayo ukuvumela iinkonzo ezifunekayo kwaye usete ngokutsha i-firewall:

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

Layisha iBalancer Setup

Ukuseta i-HAProxy yinkqubo elula. Ngokusisiseko, konke okufuneka ukwenze kukuxelela i-HAProxy ukuba loluphi unxibelelwano ekufuneka imamele kwaye iludlulisele phi na.

Oku kwenziwa ngokudala ifayile yoqwalaselo /etc/haproxy/haproxy.cfg ngokuchaza izicwangciso. Unokufunda malunga neenketho zoqwalaselo lwe-HAProxy kwiphepha lamaxwebhuukuba ufuna ukwazi ngakumbi ngayo.

Ukulinganisa ukulayisha kuluhlu lwezothutho (uluhlu lwesi-4)

Masiqale ngokuseta isiseko. Yenza ifayile entsha yoqwalaselo, umzekelo usebenzisa vi ngomyalelo ongezantsi:

sudo vi /etc/haproxy/haproxy.cfg

Yongeza la macandelo alandelayo kwifayile. Faka enye indawo igama lomncedisi yintoni ekufuneka ibize abancedisi bakho kwiphepha lezibalo, kwaye yabucala_ip β€” iidilesi ze-IP zabucala zeeseva ofuna ukwalathisa kuzo itrafikhi yewebhu. Ungajonga iidilesi ze-IP zabucala kwiphaneli yokulawula ye-UpCloud kunye nethebhu Inethwekhi yangasese kwimenyu womnatha.

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

Oku kuchaza umaleko womthwalo wesilinganisi (umaleko wesi-4) onikwe igama langaphandle elithi http_front ukumamela kwizibuko 80, ethi ke idlulisele itrafikhi kwindawo yangasemva engagqibekanga enegama http_back. Iinkcukacha-manani ezongezelelweyo /i-haproxy?stats idibanisa iphepha leenkcukacha-manani kwidilesi ekhankanyiweyo.

Ii-algorithms ezahlukeneyo zokulinganisa umthwalo.

Ukucacisa iiseva kwicandelo le-backend livumela i-HAProxy ukuba isebenzise ezi seva zokulinganisa umthwalo ngokwe-algorithm ye-robin ejikelezayo xa kunokwenzeka.

Ulungelelwaniso lwe-algorithms lusetyenziselwa ukumisela ukuba yeyiphi iseva kwi-backend umdibaniso ngamnye ugqithiselwa kuwo. Nazi ezinye zeenketho eziluncedo:

  • I-Roundrobin: Umncedisi ngamnye usetyenziswa ngokutshintshana ngokobunzima bayo. Le yi-algorithm egudileyo kwaye ilungile xa ixesha lokucubungula leeseva lihlala lisasazwa ngokulinganayo. Le algorithm iyaguquguquka, ivumela ubunzima bomncedisi ukuba bulungelelaniswe kubhabho.
  • Leastconn: umncedisi ngodibaniso olumbalwa lukhethiwe. I-robin ejikelezayo yenziwa phakathi kweeseva ezinomthwalo ofanayo. Ukusebenzisa le algorithm kucetyiswa kwiiseshoni ezinde ezifana ne-LDAP, SQL, TSE, njl., kodwa ayifanelekanga kakhulu kwiiseshoni ezimfutshane ezifana ne-HTTP.
  • Ekuqaleni: Umncedisi wokuqala oneendawo zokubeka zoqhagamshelo ezikhoyo ufumana umdibaniso. Iiseva zikhethwa ukusuka kwelona nani lisezantsi le-ID ukuya kwelona nani liphezulu, nto leyo engagqibekanga kwindawo yomncedisi efama. Nje ukuba iseva ifikelele kwi-maxconn, iseva elandelayo iyasetyenziswa.
  • umthombo: Idilesi ye-IP yomthombo ikhawuleza kwaye yahlulwe ngobunzima bubonke beeseva ezisebenzayo ukumisela ukuba yeyiphi iseva eya kufumana isicelo. Ngale ndlela, idilesi ye-IP yomxhasi ofanayo iya kuhlala isiya kumncedisi omnye, ngelixa abancedisi bahlala befana.

Ukumisela ukulinganisa umthwalo kwinqanaba lesicelo (uluhlu lwesi-7)

Olunye ukhetho olukhoyo kukuqwalasela isilinganisi somthwalo ukuba sisebenze kuluhlu lwesicelo (umaleko wesi-7), oluluncedo xa iinxalenye zesicelo sakho sewebhu zibekwe kwiinginginya ezahlukeneyo. Oku kunokufezekiswa ngokucofa ukuhanjiswa konxibelelwano, umzekelo nge-URL.

Vula ifayile yoqwalaselo ye-HAProxy usebenzisa umhleli wombhalo:

sudo vi /etc/haproxy/haproxy.cfg

Emva koko uqwalasele i-frontend kunye ne-backend segment ngokomzekelo ongezantsi:

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

Indawo engaphambili ibhengeza umthetho we-ACL obizwa ngokuba yi-url_blog esebenza kulo lonke uqhakamshelwano oluneendlela eziqala nge/blog. Use_backend ixela ukuba uqhagamshelo olungqamana nemeko ye-url_yeblogi kufuneka inikezelwe ngasemva ebizwa ngokuba yiblog_back, kwaye zonke ezinye izicelo ziphathwa ngasemva okungagqibekanga.

Kwicala elingasemva, uqwalaselo luseta amaqela amabini abancedisi: http_back, njengangaphambili, kunye nentsha ebizwa ngokuba yiblog_back, ephethe unxibelelwano kumzekelo.com/blog.

Emva kokutshintsha useto, gcina ifayile kwaye uqale kabusha i-HAProxy usebenzisa lo myalelo ulandelayo:

sudo systemctl restart haproxy

Ukuba ufumana naziphi na izilumkiso okanye imiyalezo yemposiso ngexesha lokuqalisa, khangela uqwalaselo lwakho kubo kwaye uqinisekise ukuba uzenzele zonke iifayile eziyimfuneko kunye neefolda, uze uzame ukuqalisa kwakhona.

Ukuvavanya ukuseta

Emva kokuba i-HAProxy iqwalaselwe kwaye isebenza, vula idilesi ye-IP yoluntu yomncedisi wokulinganisa umthwalo kwisiphequluli kwaye ukhangele ukuba uxhumeke kwi-backend ngokuchanekileyo. I-stats uri iparameter kuqwalaselo yenza iphepha leenkcukacha-manani kwidilesi ekhankanyiweyo.

http://load_balancer_public_ip/haproxy?stats

Xa ulayisha iphepha lezibalo, ukuba zonke iiseva zakho zibonisa eluhlaza, ngoko ukuseta kube yimpumelelo!

Ukufakela i-HAProxy load balancer kwi-CentOS

Iphepha leenkcukacha-manani liqulethe ulwazi oluluncedo lokulandelela iinginginya zakho zewebhu, kubandakanywa ixesha eliphezulu / eliphantsi kunye nenani leeseshoni. Ukuba iseva iphawulwe ngokubomvu, qiniseka ukuba iseva ivuliwe kwaye ungayicofa kumatshini wokulinganisa umthwalo.

Ukuba isilinganisi sakho somthwalo asiphenduli, qiniseka ukuba uqhagamshelo lwe-HTTP aluvalwanga ludonga lomlilo. Kwakhona qiniseka ukuba i-HAProxy isebenza usebenzisa lo myalelo ungezantsi:

sudo systemctl status haproxy

Ukukhusela iphepha lezibalo kunye negama lokugqitha

Nangona kunjalo, ukuba iphepha leenkcukacha-manani lidweliswe ngokulula kwisiphelo sangaphambili, ngoko ke livulekele wonke umntu ukuba alibone, elisenokungabi ngumbono olungileyo. Endaweni yoko, ungayabela inombolo yesiko lezibuko ngokudibanisa umzekelo ongezantsi ukuya ekupheleni kwefayile yakho ye-haproxy.cfg. Faka enye indawo lomsebenzisi ΠΈ inombolo yokuvula ngento ekhuselekileyo:

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

Emva kokufaka iqela elitsha lomphulaphuli, susa ikhonkco elidala lezibalo ze-uri kwiqela le-frontend. Xa ugqibile, gcina ifayile kwaye uqalise kwakhona i-HAProxy.

sudo systemctl restart haproxy

Emva koko vula ibhalansi yomthwalo kwakhona ngenombolo entsha yezibuko kwaye ungene ngegama lomsebenzisi kunye negama lokugqitha olichazileyo kwifayile yoqwalaselo.

http://load_balancer_public_ip:8181

Qinisekisa ukuba zonke iiseva zakho zisabonisa eluhlaza kwaye emva koko uvule i-balancer yomthwalo we-IP ngaphandle kweenombolo zezibuko kwisikhangeli sakho.

http://load_balancer_public_ip/

Ukuba ubuncinci ubuncinci bamaphepha okumisa kwiiseva zakho zokugqibela, uya kuqaphela ukuba ngalo lonke ixesha ulayisha kwakhona iphepha ufumana impendulo evela kumamkeli owahlukileyo. Ungazama ii-algorithms ezahlukeneyo zokulinganisa kwicandelo loqwalaselo okanye ujonge amaxwebhu apheleleyo.

Isiphelo: HAProxy Load Balancer

Sivuyisana nawe ngokuseta ngempumelelo i-HAProxy load balancer! Nangona ulungelelwaniso olusisiseko lokulinganisa umthwalo, unokuphucula kakhulu ukusebenza kunye nokufumaneka kwesicelo sakho sewebhu. Esi sikhokelo sisingeniso nje sokulayisha ukulinganisa kunye ne-HAProxy, ekwazi ukwenza okungaphezulu kunoko kunokugqunywa kwisikhokelo sokuseta ngokukhawuleza. Sincoma ukuzama ulungelelwaniso olwahlukileyo usebenzisa amaxwebhu abanzi, ekhoyo kwi-HAProxy, kwaye emva koko uqalise ukucwangcisa ukulinganisa umthwalo kwindawo yakho yokuvelisa.

Ngokusebenzisa iinginginya ezininzi ukukhusela inkonzo yakho yewebhu nge-headroom, isilinganisi somthwalo ngokwaso sisenokubonisa inqaku lokusilela. Unokuphucula ukufumaneka okuphezulu ngokufaka i-IP edadayo phakathi kwezilinganisi ezininzi zomthwalo. Unokufumana okungakumbi malunga noku kwinqaku lethu Inqaku malunga needilesi ze-IP ezidadayo kwi-UpCloud.

Okunye malunga nekhosi "Umlawuli weLinux. I-Virtualization kunye nokudibanisa"***

umthombo: www.habr.com

Yongeza izimvo