Kusakinisha kisawazisha cha mzigo cha HAProxy kwenye CentOS

Tafsiri ya kifungu hicho ilitayarishwa usiku wa kuamkia kozi hiyo "Msimamizi wa Linux. Virtualization na nguzo"

Kusakinisha kisawazisha cha mzigo cha HAProxy kwenye CentOS

Kusawazisha mizigo ni suluhisho la kawaida la kuongeza mlalo programu za wavuti kwenye wapangishaji wengi huku ikiwapa watumiaji sehemu moja ya kufikia huduma. HAProxy ni mojawapo ya programu maarufu ya kusawazisha upakiaji wa chanzo huria ambayo pia hutoa upatikanaji wa juu na utendakazi wa seva mbadala.

HAProxy inajitahidi kuboresha matumizi ya rasilimali, kuongeza upitishaji, kupunguza muda wa majibu, na kuepuka kupakia rasilimali yoyote ya mtu binafsi. Inaweza kusakinishwa kwenye aina mbalimbali za usambazaji wa Linux, kama vile CentOS 8, ambayo tutazingatia katika mwongozo huu, pamoja na mifumo. Debian 8 ΠΈ Ubuntu 16.

Kusakinisha kisawazisha cha mzigo cha HAProxy kwenye CentOS

HAProxy inafaa haswa kwa tovuti zilizo na trafiki ya juu sana na kwa hivyo hutumiwa mara nyingi kuboresha kutegemewa na utendakazi wa usanidi wa huduma za wavuti za seva nyingi. Mwongozo huu unaonyesha hatua za kusanidi HAProxy kama kisawazisha cha upakiaji kwenye seva pangishi ya wingu ya CentOS 8, ambayo kisha huelekeza trafiki kwa seva zako za wavuti.

Kama sharti la matokeo bora, unapaswa kuwa na angalau seva mbili za wavuti na seva ya kusawazisha mzigo. Seva za wavuti lazima ziwe zinaendesha angalau huduma ya msingi ya wavuti kama vile nginx au httpd ili kujaribu kusawazisha upakiaji kati yao.

Inasakinisha HAProxy kwenye CentOS 8

Kwa sababu HAProxy ni programu huria inayobadilika kwa haraka, usambazaji unaopatikana kwako katika hazina za kawaida za CentOS huenda usiwe toleo jipya zaidi. Ili kujua toleo la sasa, endesha amri ifuatayo:

sudo yum info haproxy

HAProxy daima hutoa matoleo matatu thabiti ya kuchagua kutoka: matoleo mawili ya hivi karibuni yanayotumika na ya tatu, toleo la zamani ambalo bado linapokea masasisho muhimu. Unaweza kuangalia toleo la hivi punde thabiti lililoorodheshwa kwenye tovuti ya HAProxy kisha uamue ni toleo gani ungependa kufanya kazi nalo.

Katika mwongozo huu, tutakuwa tunasakinisha toleo la hivi punde la 2.0, ambalo lilikuwa bado halijapatikana katika hazina za kawaida wakati wa kuandika mwongozo. Utahitaji kusakinisha kutoka chanzo asili. Lakini kwanza, angalia ikiwa umekutana na masharti muhimu ya kupakua na kukusanya programu.

sudo yum install gcc pcre-devel tar make -y

Pakua msimbo wa chanzo kwa kutumia amri iliyo hapa chini. Unaweza kuangalia ikiwa kuna toleo jipya zaidi linalopatikana Ukurasa wa upakuaji wa HAProxy.

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

Mara tu upakuaji utakapokamilika, toa faili kwa kutumia amri hapa chini:

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

Nenda kwenye saraka ya chanzo ambayo haijapakiwa:

cd ~/haproxy-2.0.7

Kisha kusanya programu ya mfumo wako:

make TARGET=linux-glibc

Na mwishowe, sasisha HAProxy yenyewe:

sudo make install

HAProxy sasa imesakinishwa, lakini inahitaji upotoshaji wa ziada ili kuifanya ifanye kazi. Hebu tuendelee kusanidi programu na huduma hapa chini.

Kuanzisha HAProxy kwa seva yako

Sasa ongeza saraka na faili zifuatazo za takwimu kwa maingizo ya HAProxy:

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

Unda kiunga cha mfano cha jozi ili uweze kutekeleza maagizo ya HAProxy kama mtumiaji wa kawaida:

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

Ikiwa unataka kuongeza proksi kwenye mfumo wako kama huduma, nakili faili ya haproxy.init kutoka kwa mifano hadi saraka yako ya /etc/init.d. Hariri ruhusa za faili ili hati iendeshe, kisha uanze tena 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

Pia unahitaji kuruhusu huduma kuanza upya kiotomatiki mfumo unapoanza:

sudo chkconfig haproxy on

Kwa urahisi, inashauriwa pia kuongeza mtumiaji mpya ili kuendesha HAProxy:

sudo useradd -r haproxy

Baada ya hayo, unaweza kuangalia nambari ya toleo iliyosanikishwa tena kwa kutumia amri ifuatayo:

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

Kwa upande wetu, toleo linapaswa kuwa 2.0.7, kama inavyoonyeshwa kwenye pato la mfano hapo juu.

Hatimaye, ngome chaguo-msingi katika CentOS 8 ni kizuizi kwa mradi huu. Tumia amri zifuatazo kuruhusu huduma zinazohitajika na kuweka upya ngome:

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

Pakia Mizania Mipangilio

Kuanzisha HAProxy ni mchakato rahisi. Kimsingi, unachohitaji kufanya ni kumwambia HAProxy ni miunganisho gani inapaswa kusikiliza na ni wapi inapaswa kuwasilisha.

Hii inafanywa kwa kuunda faili ya usanidi /etc/haproxy/haproxy.cfg na mipangilio ya kufafanua. Unaweza kusoma kuhusu chaguzi za usanidi wa HAProxy kwenye ukurasa wa nyarakaukitaka kujua zaidi kuhusu hilo.

Kusawazisha mzigo kwenye safu ya usafirishaji (safu ya 4)

Wacha tuanze na usanidi wa kimsingi. Unda faili mpya ya usanidi, kwa mfano kutumia vi na amri hapa chini:

sudo vi /etc/haproxy/haproxy.cfg

Ongeza sehemu zifuatazo kwenye faili. Badilisha server_name nini kinapaswa kuita seva zako kwenye ukurasa wa takwimu, na faragha_ip - anwani za IP za kibinafsi za seva ambazo unataka kuelekeza trafiki ya wavuti. Unaweza kuangalia anwani za IP za kibinafsi kwenye paneli ya udhibiti ya UpCloud na kwenye kichupo Mtandao wa kibinafsi kwenye menyu Mtandao.

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

Hii inafafanua kikisawazisha cha upakiaji wa safu ya uchukuzi (safu ya 4) kwa jina la nje la http_front kusikiliza kwenye bandari 80, ambayo kisha hupeleka trafiki kwa mandhari-msingi ya nyuma inayoitwa http_back. Takwimu za ziada /haproxy?stats huunganisha ukurasa wa takwimu kwa anwani maalum.

Algorithms mbalimbali za kusawazisha mzigo.

Kubainisha seva katika sehemu ya nyuma huruhusu HAProxy kutumia seva hizi kwa kusawazisha upakiaji kulingana na algoriti ya robini ya pande zote inapowezekana.

Algorithms ya kusawazisha hutumiwa kubainisha ni seva gani katika mazingira ya nyuma kila muunganisho unapitishwa. Hapa kuna baadhi ya chaguzi muhimu:

  • Roundrobin: Kila seva hutumiwa kwa zamu kulingana na uzito wake. Hii ndiyo algoriti laini na ya haki zaidi wakati wakati wa usindikaji wa seva unasalia kusambazwa sawasawa. Kanuni hii inabadilika, kuruhusu uzito wa seva kurekebishwa kwa kuruka.
  • Leastconn: seva iliyo na viunganisho vichache zaidi imechaguliwa. Robin ya pande zote inafanywa kati ya seva zilizo na mzigo sawa. Kutumia algoriti hii kunapendekezwa kwa vipindi virefu kama vile LDAP, SQL, TSE, n.k., lakini haifai sana kwa vipindi vifupi kama vile HTTP.
  • Kwanza: Seva ya kwanza iliyo na nafasi za uunganisho zinazopatikana hupokea muunganisho. Seva huchaguliwa kutoka nambari ya chini kabisa ya nambari hadi nambari ya juu zaidi, ambayo hubadilika kwa nafasi ya seva kwenye shamba. Mara seva inapofikia maxconn, seva inayofuata inatumiwa.
  • chanzo: Anwani ya IP ya chanzo huharakishwa na kugawanywa kwa jumla ya uzito wa seva zinazoendesha ili kubaini ni seva gani itapokea ombi. Kwa njia hii, anwani ya IP ya mteja sawa itaenda kwa seva moja kila wakati, wakati seva zinabaki sawa.

Kuweka usawazishaji wa mzigo kwenye kiwango cha programu (safu ya 7)

Chaguo jingine linalopatikana ni kusanidi kusawazisha mzigo ili kuendeshwa kwenye safu ya programu (safu ya 7), ambayo ni muhimu wakati sehemu za programu yako ya wavuti ziko kwenye wapangishi tofauti. Hii inaweza kupatikana kwa kusukuma upitishaji wa muunganisho, kwa mfano na URL.

Fungua faili ya usanidi wa HAProxy kwa kutumia hariri ya maandishi:

sudo vi /etc/haproxy/haproxy.cfg

Kisha usanidi sehemu za mbele na za nyuma kama kwa mfano hapa chini:

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

Sehemu ya mbele inatangaza sheria ya ACL inayoitwa url_blog ambayo inatumika kwa miunganisho yote yenye njia zinazoanza na /blog. Use_backend inabainisha kuwa miunganisho inayolingana na hali ya url_blog inafaa kutumwa na mandharinyuma iitwayo blog_back, na maombi mengine yote yanashughulikiwa na mandharinyuma chaguomsingi.

Kwa upande wa nyuma, usanidi huanzisha vikundi viwili vya seva: http_back, kama hapo awali, na mpya inayoitwa blog_back, ambayo hushughulikia miunganisho kwa example.com/blog.

Baada ya kubadilisha mipangilio, hifadhi faili na uanze tena HAProxy kwa kutumia amri ifuatayo:

sudo systemctl restart haproxy

Ikiwa unapokea maonyo yoyote au ujumbe wa hitilafu wakati wa kuanzisha, angalia usanidi wako kwao na uhakikishe kuwa umeunda faili na folda zote muhimu, kisha ujaribu kuanzisha upya tena.

Kujaribu usanidi

Mara baada ya HAProxy kusanidiwa na kufanya kazi, fungua anwani ya IP ya umma ya seva ya kusawazisha mzigo kwenye kivinjari na uangalie ikiwa umeunganishwa kwa nyuma kwa usahihi. Kigezo cha uri cha takwimu katika usanidi huunda ukurasa wa takwimu kwenye anwani iliyobainishwa.

http://load_balancer_public_ip/haproxy?stats

Unapopakia ukurasa wa takwimu, ikiwa seva zako zote zinaonyesha kijani, basi usanidi ulifanikiwa!

Kusakinisha kisawazisha cha mzigo cha HAProxy kwenye CentOS

Ukurasa wa takwimu una taarifa muhimu za kufuatilia wapangishi wako wa wavuti, ikijumuisha muda wa juu/chini na idadi ya vipindi. Ikiwa seva imewekwa alama nyekundu, hakikisha kuwa seva imewashwa na unaweza kuipiga kutoka kwa mashine ya kusawazisha mzigo.

Ikiwa kisawazisha mzigo wako hakijibu, hakikisha miunganisho ya HTTP haijazuiwa na ngome. Pia hakikisha kuwa HAProxy inafanya kazi kwa kutumia amri hapa chini:

sudo systemctl status haproxy

Kulinda ukurasa wa takwimu na nenosiri

Walakini, ikiwa ukurasa wa takwimu umeorodheshwa tu kwenye mwisho wa mbele, basi uko wazi kwa kila mtu kuona, ambayo inaweza kuwa sio wazo nzuri. Badala yake, unaweza kuikabidhi nambari ya mlango maalum kwa kuongeza mfano ulio hapa chini hadi mwisho wa faili yako ya haproxy.cfg. Badilisha username ΠΈ nywila kwa kitu salama:

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

Baada ya kuongeza kikundi kipya cha wasikilizaji, ondoa kiungo cha zamani cha takwimu kutoka kwa kikundi cha mstari wa mbele. Baada ya kumaliza, hifadhi faili na uanze upya HAProxy.

sudo systemctl restart haproxy

Kisha ufungue salio la mzigo tena na nambari mpya ya bandari na uingie na jina la mtumiaji na nenosiri ulilotaja kwenye faili ya usanidi.

http://load_balancer_public_ip:8181

Hakikisha seva zako zote bado zinaonyesha kijani na kisha ufungue tu IP ya kusawazisha mzigo bila nambari za mlango wowote kwenye kivinjari chako.

http://load_balancer_public_ip/

Ikiwa una angalau baadhi ya kurasa za kutua kwenye seva zako za mwisho-mwisho, utagundua kuwa kila wakati unapopakia upya ukurasa unapata jibu kutoka kwa seva pangishi tofauti. Unaweza kujaribu algoriti tofauti za kusawazisha katika sehemu ya usanidi au uangalie nyaraka kamili.

Hitimisho: Kisawazisha cha Mzigo wa HAProxy

Hongera kwa kufanikiwa kusanidi kisawazishi chako cha HAProxy! Hata ukiwa na usanidi wa kimsingi wa kusawazisha mzigo, unaweza kuboresha kwa kiasi kikubwa utendakazi na upatikanaji wa programu yako ya wavuti. Mwongozo huu ni utangulizi tu wa kusawazisha upakiaji na HAProxy, ambayo ina uwezo wa zaidi ya kile kinachoweza kufunikwa katika mwongozo wa usanidi wa haraka. Tunapendekeza ujaribu na usanidi tofauti ukitumia nyaraka nyingi, inapatikana kwa HAProxy, na kisha anza kupanga kusawazisha mzigo kwa mazingira yako ya uzalishaji.

Kwa kutumia seva pangishi nyingi ili kulinda huduma yako ya wavuti kwa kichwa, kiweka usawazishaji chenyewe bado kinaweza kuwasilisha hali ya kutofaulu. Unaweza kuboresha zaidi upatikanaji wa juu kwa kusakinisha IP inayoelea kati ya visawazisha vingi vya mizigo. Unaweza kujua zaidi kuhusu hili katika yetu nakala kuhusu anwani za IP zinazoelea kwenye UpCloud.

Zaidi kuhusu kozi "Msimamizi wa Linux. Virtualization na nguzo"***

Chanzo: mapenzi.com

Kuongeza maoni