Fametrahana ny HAProxy load balancer amin'ny CentOS

Ny fandikana ny lahatsoratra dia nomanina tamin'ny fiandohan'ny fianarana "Linux Administrator. Virtualization sy clustering"

Fametrahana ny HAProxy load balancer amin'ny CentOS

Ny fampifandanjana entana dia vahaolana mahazatra amin'ny fampitomboana ny rindranasa an-tranonkala amin'ny alàlan'ny mpampiantrano maro ary manome ny mpampiasa amin'ny fidirana tokana amin'ny serivisy. HAProxy dia iray amin'ireo rindrambaiko fampifandanjana load open source malaza indrindra izay manome fahafaha-manao avo lenta sy fiasa proxy.

HAProxy dia miezaka manatsara ny fampiasana loharanon-karena, mampitombo ny fahafaha-manao, manamaivana ny fotoana famaliana, ary misoroka ny fampihenana ny loharanon-karena tsirairay. Azo apetraka amin'ny fizarana Linux isan-karazany izy io, toy ny CentOS 8, izay hifantohantsika ato amin'ity torolàlana ity, ary koa ny rafitra. Debian 8 и Ubuntu 16.

Fametrahana ny HAProxy load balancer amin'ny CentOS

Ny HAProxy dia mety indrindra amin'ny tranokala manana fifamoivoizana be dia be ary noho izany dia ampiasaina matetika mba hanatsarana ny fahamendrehana sy ny fahombiazan'ny serivisy serivisy tranonkala marobe. Ity toro-lalana ity dia mamaritra ny dingana hananganana HAProxy ho toy ny mandanjalanja entana amin'ny fampiantranoana rahona CentOS 8, izay mitarika ny fifamoivoizana mankany amin'ireo mpizara tranonkalanao.

Ho fepetra takiana hahazoana vokatra tsara indrindra dia tokony hanana mpizara tranonkala roa farafahakeliny ianao ary mpizara fampifandanjana entana. Ny mpizara tranonkala dia tsy maintsy miasa farafaharatsiny serivisy tranonkala fototra toy ny nginx na httpd mba hizaha toetra ny fifandanjana entana eo amin'izy ireo.

Fametrahana HAProxy amin'ny CentOS 8

Satria ny HAProxy dia rindranasa loharano misokatra mivoatra haingana, ny fizarana misy anao ao amin'ny tahiry CentOS mahazatra dia mety tsy ny kinova farany. Raha te hahalala ny dikan-teny ankehitriny dia araho ity baiko manaraka ity:

sudo yum info haproxy

Ny HAProxy dia manome dikan-teny stable telo foana azo isafidianana: ny dikan-teny roa tohanana farany indrindra ary ny fahatelo, dikan-teny tranainy izay mbola mahazo fanavaozana mitsikera. Azonao atao ny manamarina foana ny dikan-teny stable farany voatanisa ao amin'ny tranokala HAProxy ary avy eo manapa-kevitra hoe inona no dikan-teny tianao hiarahana.

Ao amin'ity torolàlana ity dia hametraka ny kinova stable farany indrindra 2.0 izahay, izay tsy mbola hita tao amin'ny tahiry mahazatra tamin'ny fotoana nanoratana ny torolàlana. Mila mametraka azy avy amin'ny loharano voalohany ianao. Fa aloha, jereo raha nahafeno ny fepetra ilaina amin'ny fampidinana sy fanangonana ny programa ianao.

sudo yum install gcc pcre-devel tar make -y

Ampidino ny kaody loharano mampiasa ny baiko etsy ambany. Azonao atao ny manamarina raha misy dikan-teny vaovao azo alaina ao HAProxy download pejy.

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

Rehefa vita ny fampidinana dia esory ireo rakitra mampiasa ny baiko etsy ambany:

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

Mandehana any amin'ny lahatahiry loharano tsy voafono:

cd ~/haproxy-2.0.7

Angony avy eo ny programa ho an'ny rafitrao:

make TARGET=linux-glibc

Ary farany, apetraho ny HAProxy tenany:

sudo make install

Efa napetraka izao ny HAProxy, saingy mila fanodinkodinana fanampiny izany mba hampandeha azy. Andeha isika hanohy ny fametrahana ny rindrambaiko sy ny serivisy eto ambany.

Mametraka HAProxy ho an'ny mpizara anao

Ampio ireto lahatahiry sy antontan'isa manaraka ireto ho an'ny fidirana HAProxy:

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

Mamorona rohy an'ohatra ho an'ny binary mba hahafahanao mampandeha ny baiko HAProxy ho mpampiasa mahazatra:

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

Raha te-hanampy proxy amin'ny rafitrao ho serivisy ianao dia adikao ny rakitra haproxy.init avy amin'ny ohatra mankany amin'ny lahatahiry /etc/init.d anao. Amboary ny fahazoan-dàlana amin'ny rakitra mba handehanan'ny script, ary avereno indray ny daemon 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

Ilainao koa ny mamela ny serivisy hanomboka ho azy rehefa manomboka ny rafitra:

sudo chkconfig haproxy on

Ho fanamorana dia aroso ihany koa ny manampy mpampiasa vaovao hampandeha HAProxy:

sudo useradd -r haproxy

Aorian'izany dia azonao atao ny manamarina ny laharan'ny dikan-teny napetraka indray amin'ny alàlan'ny baiko manaraka:

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

Amin'ny tranga misy antsika, ny dikan-teny dia tokony ho 2.0.7, araka ny aseho amin'ny famoahana ohatra etsy ambony.

Farany, ny firewall default ao amin'ny CentOS 8 dia tena voafetra ho an'ity tetikasa ity. Ampiasao ireto baiko manaraka ireto mba hamelana ny serivisy ilaina ary hamerina ny firewall:

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

Load Balancer Setup

Ny fametrahana HAProxy dia dingana tsotra. Amin'ny ankapobeny, ny hany tokony hataonao dia ny milaza amin'ny HAProxy ny fifandraisana tokony henoiny sy ny toerana tokony hampita izany.

Izany dia atao amin'ny alalan'ny famoronana fisie /etc/haproxy/haproxy.cfg miaraka amin'ny famaritana famaritana. Azonao atao ny mamaky momba ny safidy fanamafisana HAProxy amin'ny pejin'ny antontan-taratasyraha te hahalala bebe kokoa momba izany ianao.

Ny fifandanjana enta-mavesatra amin'ny sosona fitaterana (sosona 4)

Andeha isika hanomboka amin'ny fananganana fototra. Mamorona rakitra config vaovao, ohatra ny fampiasana vi miaraka amin'ny baiko etsy ambany:

sudo vi /etc/haproxy/haproxy.cfg

Ampio amin'ny rakitra ireto fizarana manaraka ireto. Soloy server_name inona no tokony hiantsoana ny mpizaranao amin'ny pejy statistika, ary private_ip - adiresy IP manokana an'ireo lohamilina tianao halehanao ny fifamoivoizana amin'ny Internet. Azonao atao ny manamarina ny adiresy IP manokana eo amin'ny tontonana fanaraha-maso UpCloud ary eo amin'ny tabilao Private network ao amin'ny menio 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

Izany dia mamaritra ny mpanelanelana entana (sosona 4) ivelany antsoina hoe http_front fihainoana amin'ny seranan-tsambo 80, izay avy eo dia mandefa ny fifamoivoizana mankany amin'ny backend default antsoina hoe http_back. Ny antontan'isa fanampiny /haproxy?stats dia mampifandray ny pejin'ny antontan'isa amin'ny adiresy voatondro.

Algorithm fandanjana entana isan-karazany.

Ny famaritana ny lohamilina ao amin'ny sehatra backend dia ahafahan'ny HAProxy hampiasa ireo lohamilina ireo amin'ny fampifandanjana entana araka ny algorithm round-robin raha azo atao.

Algorithm mandanjalanja dia ampiasaina hamaritana hoe iza amin'ireo mpizara ao amin'ny backend no ampitaina ny fifandraisana tsirairay. Ireto misy safidy mahasoa:

  • Roundrobin: Ny mpizara tsirairay dia ampiasaina araka ny lanjany. Io no algorithm malefaka sy marina indrindra rehefa mizara mitovy ny fotoana fanodinana ny mpizara. Ity algorithm ity dia mavitrika, mamela ny lanjan'ny mpizara ho manitsy amin'ny lalitra.
  • Leastconn: voafantina ny mpizara manana fifandraisana vitsy indrindra. Ny round robin dia atao eo anelanelan'ny mpizara mitovy entana. Ny fampiasana ity algorithm ity dia atolotra ho an'ny fotoam-pivoriana lava toy ny LDAP, SQL, TSE, sns., saingy tsy mety amin'ny fivoriana fohy toy ny HTTP.
  • voalohany: Ny mpizara voalohany manana slot fifandraisana misy dia mahazo ny fifandraisana. Ny mpizara dia nofantenana avy amin'ny laharana ambany indrindra ka hatramin'ny avo indrindra, izay tsy mety amin'ny toeran'ny mpizara ao amin'ny toeram-pambolena. Rehefa tonga amin'ny maxconn ny mpizara iray dia ampiasaina ny mpizara manaraka.
  • Source: Ny adiresy IP loharano dia voasokajy ary zaraina amin'ny totalin'ny lanjan'ny mpizara mandeha mba hamaritana hoe iza no mpizara handray ny fangatahana. Amin'izany fomba izany, ny adiresy IP mpanjifa iray ihany dia handeha amin'ny mpizara iray ihany, fa ny mpizara dia tsy miova.

Fametrahana fifandanjana entana amin'ny ambaratonga fampiharana (sosona 7)

Safidy iray hafa azo alaina dia ny manamboatra mpandanjalanja entana mba hihazakazaka amin'ny sosona fampiharana (sosona 7), izay mahasoa rehefa misy ampahany amin'ny rindranasa tranonkalanao amin'ny mpampiantrano samihafa. Izany dia azo atao amin'ny alalan'ny throttling ny fampitana ny fifandraisana, ohatra amin'ny URL.

Sokafy ny rakitra fikirakirana HAProxy amin'ny alàlan'ny tonian-dahatsoratra:

sudo vi /etc/haproxy/haproxy.cfg

Avy eo amboary ny fizarana frontend sy backend araka ny ohatra etsy ambany:

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

Ny frontend dia manambara fitsipika ACL antsoina hoe url_blog izay mihatra amin'ny fifandraisana rehetra misy lalana manomboka amin'ny /blog. Use_backend dia mamaritra fa ny fifandraisana mifanaraka amin'ny fepetra url_blog dia tokony hozarain'ny backend antsoina hoe blog_back, ary ny fangatahana hafa rehetra dia karakarain'ny backend default.

Eo amin'ny ilany aoriana, ny fandrindrana dia mametraka vondrona mpizara roa: http_back, toy ny teo aloha, ary iray vaovao antsoina hoe blog_back, izay mitantana ny fifandraisana amin'ny example.com/blog.

Rehefa avy nanova ny fanovana, tehirizo ny rakitra ary avereno indray ny HAProxy amin'ny fampiasana ity baiko manaraka ity:

sudo systemctl restart haproxy

Raha mahazo fampitandremana na hafatra diso ianao mandritra ny fanombohana, jereo ny fandrindranao azy ireo ary ataovy azo antoka fa namorona ny rakitra sy lahatahiry ilaina rehetra ianao, ary andramo averina indray.

Fitsapana ny fanamboarana

Raha vantany vao voarindra sy mihazakazaka ny HAProxy, sokafy ny adiresy IP ho an'ny daholobe an'ny mpizara mpandrindra entana ao anaty navigateur ary jereo raha mifandray tsara amin'ny backend ianao. Mamorona pejy statistika amin'ny adiresy voatondro ny paramètre stats uri ao amin'ny configuration.

http://load_balancer_public_ip/haproxy?stats

Rehefa mameno ny pejin'ny antontan'isa ianao, raha miseho maitso avokoa ny mpizaranao rehetra, dia nahomby ny fanamboarana!

Fametrahana ny HAProxy load balancer amin'ny CentOS

Ny pejin'ny antontan'isa dia mirakitra fampahalalana mahasoa amin'ny fanaraha-maso ireo mpampiantrano tranonkalanao, ao anatin'izany ny fotoana miakatra/midina sy ny isan'ny fivoriana. Raha voamarika mena ny mpizara dia ataovy azo antoka fa mihodina ny mpizara ary azonao atao ny mametaka azy amin'ny milina mpandrindra entana.

Raha tsy mamaly ny mpandrindra entanao dia ataovy azo antoka fa tsy voasakana firewall ny fifandraisana HTTP. Ataovy azo antoka koa fa miasa ny HAProxy amin'ny alàlan'ny baiko etsy ambany:

sudo systemctl status haproxy

Miaro ny pejy statistika amin'ny tenimiafina

Na izany aza, raha voatanisa fotsiny eo amin'ny faran'ny voalohany ny pejin'ny antontan'isa, dia misokatra ho hitan'ny rehetra izany, izay mety tsy hevitra tsara. Azonao atao kosa ny manendry laharana seranan-tsambo manokana amin'ny alalan'ny fanampiana ny ohatra etsy ambany amin'ny faran'ny rakitra haproxy.cfg-nao. Soloy Anaran'ny mpampiasa и tenimiafina ho an'ny zavatra azo antoka:

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

Rehefa avy nanampy vondrona mpihaino vaovao dia esory ny rohy uri stats taloha amin'ny vondrona frontend. Rehefa vita dia tehirizo ilay rakitra ary avereno indray ny HAProxy.

sudo systemctl restart haproxy

Avy eo sokafy indray ny load balancer miaraka amin'ny laharan'ny seranan-tsambo vaovao ary midira miaraka amin'ny solon'anarana sy ny tenimiafina nofaritanao tao amin'ny rakitra fanamafisana.

http://load_balancer_public_ip:8181

Ataovy azo antoka fa mbola maitso ny mpizaranao rehetra ary sokafy fotsiny ny IP mpandrindra entana tsy misy laharan-tseranana ao amin'ny navigateur.

http://load_balancer_public_ip/

Raha manana pejin-pejy isan-karazany farafaharatsiny ianao amin'ny lohamilina aoriana, dia ho hitanao fa isaky ny mamerina ny pejy ianao dia mahazo valiny avy amin'ny mpampiantrano hafa. Azonao atao ny manandrana algorithm fandanjana samihafa ao amin'ny fizarana fanamafisana na mijery antontan-taratasy feno.

Fehiny: HAProxy Load Balancer

Arahabaina noho ny fahombiazan'ny fametrahanao ny HAProxy load balancer! Na dia amin'ny fametrahana fifandanjana entana fototra aza dia azonao atao ny manatsara be ny fampandehanana sy ny fisian'ny rindranasa tranonkalanao. Ity torolàlana ity dia fampidirana fotsiny amin'ny fampifandanjana entana miaraka amin'ny HAProxy, izay mahavita mihoatra lavitra noho izay azo rakofana ao amin'ny torolàlana fananganana haingana. Manoro hevitra izahay ny hanandrana amin'ny tefy hafa mampiasa antontan-taratasy midadasika, azo alaina amin'ny HAProxy, ary manomboka manomana fampifandanjana entana ho an'ny tontolo famokarana anao.

Amin'ny alàlan'ny fampiasana mpampiantrano maro hiarovana ny serivisy tranonkalanao miaraka amin'ny efitrano fidirana, ny mpandrindra entana mihitsy dia mety mbola mampiseho teboka tsy fahombiazana. Azonao atao ny manatsara bebe kokoa ny fahafaha-manao amin'ny alàlan'ny fametrahana IP mitsingevana eo anelanelan'ny mpandrindra entana maro. Afaka mahafantatra bebe kokoa momba izany ianao ao amin'ny anay lahatsoratra momba ny adiresy IP mitsingevana ao amin'ny UpCloud.

Bebe kokoa momba ny taranja "Linux Administrator. Virtualization sy clustering"***

Source: www.habr.com

Add a comment