Pag-instalar sa HAProxy load balancer sa CentOS

Ang paghubad sa artikulo giandam sa bisperas sa pagsugod sa kurso "Linux Administrator. Virtualization ug clustering"

Pag-instalar sa HAProxy load balancer sa CentOS

Ang pagbalanse sa load usa ka komon nga solusyon alang sa horizontally scaling nga mga aplikasyon sa web sa daghang mga host samtang naghatag sa mga tiggamit og usa ka punto sa pag-access sa serbisyo. HAProxy mao ang usa sa pinakasikat nga open source load balancing software nga naghatag usab ug taas nga magamit ug proxy functionality.

Ang HAProxy naningkamot nga ma-optimize ang paggamit sa kahinguhaan, ma-maximize ang throughput, mamenosan ang oras sa pagtubag, ug malikayan ang pag-overload sa bisan unsang indibidwal nga kapanguhaan. Mahimo kini nga ma-install sa lainlaing mga distribusyon sa Linux, sama sa CentOS 8, nga atong ipunting sa kini nga giya, ingon man mga sistema. Debian 8 ΠΈ Ubuntu 16.

Pag-instalar sa HAProxy load balancer sa CentOS

Ang HAProxy labi nga angay alang sa mga website nga adunay taas kaayo nga trapiko ug busa kanunay nga gigamit aron mapauswag ang kasaligan ug paghimo sa mga pag-configure sa serbisyo sa web nga daghang server. Kini nga giya naglatid sa mga lakang sa pag-set up sa HAProxy isip usa ka load balancer sa usa ka CentOS 8 cloud host, nga nag-ruta sa trapiko sa imong mga web server.

Isip usa ka kinahanglanon alang sa labing maayo nga mga resulta, kinahanglan nga adunay labing menos duha ka mga web server ug usa ka server sa pagbalanse sa load. Ang mga web server kinahanglan nga nagdagan labing menos usa ka sukaranan nga serbisyo sa web sama sa nginx o httpd aron masulayan ang pagbalanse sa load tali kanila.

Pag-instalar sa HAProxy sa CentOS 8

Tungod kay ang HAProxy usa ka paspas nga nag-uswag nga bukas nga gigikanan nga aplikasyon, ang pag-apod-apod nga magamit nimo sa mga standard nga mga repositoryo sa CentOS mahimong dili ang pinakabag-o nga bersyon. Aron mahibal-an ang karon nga bersyon, pagdagan ang mosunud nga mando:

sudo yum info haproxy

Ang HAProxy kanunay nga naghatag ug tulo ka stable nga bersyon nga mapilian: ang duha ka pinakabag-o nga gisuportahan nga mga bersyon ug ang ikatulo, mas daan nga bersyon nga nakadawat gihapon sa kritikal nga mga update. Mahimo nimo kanunay nga susihon ang pinakabag-o nga stable nga bersyon nga nalista sa HAProxy website ug dayon pagdesisyon kung unsang bersyon ang gusto nimo gamiton.

Niini nga giya, among i-install ang pinakabag-o nga stable nga bersyon 2.0, nga wala pa magamit sa standard nga mga repository sa panahon sa pagsulat sa giya. Kinahanglan nimo nga i-install kini gikan sa orihinal nga gigikanan. Apan una, susiha kung nahimamat nimo ang gikinahanglan nga mga kondisyon sa pag-download ug pag-compile sa programa.

sudo yum install gcc pcre-devel tar make -y

I-download ang source code gamit ang command sa ubos. Mahimo nimong susihon kung adunay mas bag-ong bersyon nga magamit sa HAProxy nga panid sa pag-download.

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

Kung kompleto na ang pag-download, kuhaa ang mga file gamit ang command sa ubos:

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

Lakaw ngadto sa wala maputos nga direktoryo sa tinubdan:

cd ~/haproxy-2.0.7

Dayon pagtipon sa programa alang sa imong sistema:

make TARGET=linux-glibc

Ug sa katapusan, i-install ang HAProxy mismo:

sudo make install

Na-install na karon ang HAProxy, apan nanginahanglan kini pipila ka dugang nga mga manipulasyon aron mahimo kini nga molihok. Ipadayon nato ang pag-set up sa software ug mga serbisyo sa ubos.

Pag-set up sa HAProxy para sa imong server

Karon idugang ang mosunod nga mga direktoryo ug statistics file para sa HAProxy entries:

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

Paghimo og simbolikong sumpay alang sa binary aron makadagan ka sa mga sugo sa HAProxy isip regular nga tiggamit:

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

Kung gusto ka magdugang ug proxy sa imong sistema isip serbisyo, kopyaha ang haproxy.init file gikan sa mga pananglitan ngadto sa imong /etc/init.d nga direktoryo. I-edit ang mga permiso sa file aron ang script modagan, ug dayon i-restart ang systemd daemon:

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

Kinahanglan mo usab nga tugutan ang serbisyo nga awtomatiko nga i-restart kung magsugod ang sistema:

sudo chkconfig haproxy on

Alang sa kasayon, girekomendar usab ang pagdugang og bag-ong user nga modagan sa HAProxy:

sudo useradd -r haproxy

Pagkahuman niini, mahimo nimong susihon pag-usab ang na-install nga numero sa bersyon gamit ang mosunud nga mando:

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

Sa among kaso, ang bersyon kinahanglan nga 2.0.7, ingon sa gipakita sa pananglitan nga output sa ibabaw.

Sa katapusan, ang default nga firewall sa CentOS 8 medyo higpit alang sa kini nga proyekto. Gamita ang mosunod nga mga sugo aron tugotan ang gikinahanglan nga mga serbisyo ug i-reset ang firewall:

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

Pag-setup sa Load Balancer

Ang pagpahimutang sa HAProxy usa ka yano nga proseso. Sa esensya, ang kinahanglan nimong buhaton mao ang pagsulti sa HAProxy kung unsa nga mga koneksyon ang kinahanglan nga paminawon ug kung diin kini kinahanglan nga ipasa kini.

Gihimo kini pinaagi sa pagmugna og configuration file /etc/haproxy/haproxy.cfg uban sa pagtino sa mga setting. Makabasa ka bahin sa mga kapilian sa pag-configure sa HAProxy sa panid sa dokumentasyonkung gusto nimo mahibal-an ang dugang bahin niini.

Pagbalanse sa load sa transport layer (layer 4)

Magsugod ta sa batakang setup. Paghimo og bag-ong config file, pananglitan gamit ang vi uban sa sugo sa ubos:

sudo vi /etc/haproxy/haproxy.cfg

Idugang ang mosunod nga mga seksyon sa file. Ilisan server_name unsa ang kinahanglan nga tawag sa imong mga server sa panid sa istatistika, ug private_ip - pribado nga mga adres sa IP sa mga server diin gusto nimo nga idirekta ang trapiko sa web. Mahimo nimong susihon ang mga pribadong IP address sa UpCloud control panel ug sa tab Pribado nga network sa menu 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

Kini naghubit sa usa ka transport layer load balancer (layer 4) sa gawas nga ginganlan og http_front nga pagpaminaw sa port 80, nga dayon mopasa sa trapiko ngadto sa default nga backend nga ginganlan og http_back. Ang dugang nga estadistika /haproxy?stats nagkonektar sa panid sa estadistika ngadto sa gipiho nga adres.

Nagkalainlain nga mga algorithm sa pagbalanse sa load.

Ang pagtino sa mga server sa backend nga seksyon nagtugot sa HAProxy sa paggamit niini nga mga server alang sa pagbalanse sa load sumala sa usa ka round-robin algorithm kung mahimo.

Ang mga algorithm sa pagbalanse gigamit aron mahibal-an kung unsang server sa backend ang matag koneksyon gipasa. Ania ang pipila sa mga mapuslanon nga kapilian:

  • Roundrobin: Ang matag server gigamit sa baylo sumala sa gibug-aton niini. Kini ang labing hapsay ug labing patas nga algorithm kung ang oras sa pagproseso sa mga server nagpabilin nga parehas nga giapod-apod. Kini nga algorithm dinamiko, nga nagtugot sa gibug-aton sa server nga ma-adjust dayon.
  • Leastconn: gipili ang server nga adunay pinakagamay nga koneksyon. Ang round robin gihimo tali sa mga server nga adunay parehas nga load. Ang paggamit niini nga algorithm girekomendar alang sa taas nga mga sesyon sama sa LDAP, SQL, TSE, ug uban pa, apan kini dili kaayo angay alang sa mubo nga mga sesyon sama sa HTTP.
  • Una: Ang una nga server nga adunay magamit nga mga slot sa koneksyon nakadawat sa koneksyon. Ang mga server gipili gikan sa pinakaubos nga numeric ID ngadto sa pinakataas, nga nag-default sa posisyon sa server sa umahan. Sa higayon nga ang usa ka server makaabot sa maxconn, ang sunod nga server gigamit.
  • Source: Ang gigikanan nga IP address gi-hash ug gibahin sa kinatibuk-ang gibug-aton sa mga nagdagan nga mga server aron mahibal-an kung unsang server ang makadawat sa hangyo. Niining paagiha, ang parehas nga IP address sa kliyente kanunay nga moadto sa parehas nga server, samtang ang mga server nagpabilin nga parehas.

Pag-set up sa load balancing sa lebel sa aplikasyon (layer 7)

Ang laing magamit nga kapilian mao ang pag-configure sa usa ka load balancer nga modagan sa layer sa aplikasyon (layer 7), nga mapuslanon kung ang mga bahin sa imong aplikasyon sa web nahimutang sa lainlaing mga host. Kini makab-ot pinaagi sa throttling sa transmission sa koneksyon, pananglitan pinaagi sa URL.

Ablihi ang HAProxy configuration file gamit ang text editor:

sudo vi /etc/haproxy/haproxy.cfg

Dayon i-configure ang frontend ug backend nga mga bahin sama sa pananglitan sa ubos:

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

Ang frontend nagdeklarar ug ACL nga lagda nga gitawag ug url_blog nga magamit sa tanang koneksyon sa mga agianan nga nagsugod sa /blog. Ang Use_backend nagtino nga ang mga koneksyon nga motakdo sa kondisyon sa url_blog kinahanglang isilbi sa usa ka backend nga ginganlag blog_back, ug ang tanang ubang mga hangyo gidumala sa default backend.

Sa backend nga bahin, ang configuration nagbutang og duha ka grupo sa mga server: http_back, sama kaniadto, ug usa ka bag-o nga gitawag og blog_back, nga nagdumala sa mga koneksyon sa example.com/blog.

Human sa pagbag-o sa mga setting, i-save ang file ug i-restart ang HAProxy gamit ang mosunod nga sugo:

sudo systemctl restart haproxy

Kung makadawat ka bisan unsang mga pasidaan o mga mensahe sa sayup sa panahon sa pagsugod, susiha ang imong pag-configure alang kanila ug siguroha nga nahimo nimo ang tanan nga kinahanglan nga mga file ug folder, unya sulayi ang pagsugod pag-usab.

Pagsulay sa setup

Sa higayon nga ang HAProxy ma-configure ug modagan, ablihi ang publikong IP address sa load balancer server sa usa ka browser ug susiha kon konektado ka ba sa backend sa husto. Ang stats uri parameter sa configuration nagmugna ug statistics page sa gipiho nga adres.

http://load_balancer_public_ip/haproxy?stats

Kung imong gikarga ang panid sa estadistika, kung ang tanan nimo nga mga server nagpakita nga berde, nan malampuson ang pag-setup!

Pag-instalar sa HAProxy load balancer sa CentOS

Ang panid sa estadistika adunay pipila ka mapuslanon nga kasayuran alang sa pagsubay sa imong mga host sa web, lakip ang oras sa taas/ubos ug gidaghanon sa mga sesyon. Kung ang server gimarkahan nga pula, siguroha nga ang server naka-on ug mahimo nimo kini i-ping gikan sa load balancer machine.

Kung ang imong load balancer dili motubag, siguroha nga ang mga koneksyon sa HTTP wala gibabagan sa usa ka firewall. Siguruha usab nga ang HAProxy nagtrabaho gamit ang mando sa ubos:

sudo systemctl status haproxy

Pagpanalipod sa panid sa estadistika gamit ang password

Bisan pa, kung ang panid sa estadistika yano nga gilista sa atubangan nga tumoy, nan bukas kini aron makita sa tanan, nga dili maayo nga ideya. Hinoon, mahimo nimong i-assign kini nga custom nga numero sa port pinaagi sa pagdugang sa pananglitan sa ubos sa katapusan sa imong haproxy.cfg file. Ilisan username ΠΈ password alang sa usa ka butang nga luwas:

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

Human makadugang ug bag-ong grupo sa tigpaminaw, kuhaa ang daan nga stats uri link gikan sa frontend nga grupo. Kung nahuman na, i-save ang file ug i-restart ang HAProxy.

sudo systemctl restart haproxy

Dayon ablihi pag-usab ang load balancer gamit ang bag-ong port number ug log in gamit ang username ug password nga imong gipiho sa configuration file.

http://load_balancer_public_ip:8181

Siguruha nga ang tanan nimo nga mga server nagpakita gihapon nga berde ug dayon ablihi ang load balancer IP nga wala’y bisan unsang mga numero sa port sa imong browser.

http://load_balancer_public_ip/

Kung ikaw adunay labing menos pipila ka lainlaing mga landing page sa imong back-end nga mga server, imong mamatikdan nga sa matag higayon nga imong i-reload ang panid makadawat ka og tubag gikan sa laing host. Mahimo nimong sulayan ang lainlaing mga algorithm sa pagbalanse sa seksyon sa pag-configure o susihon kompleto nga dokumentasyon.

Panapos: HAProxy Load Balancer

Pahalipay sa malampuson nga pag-set up sa imong HAProxy load balancer! Bisan sa usa ka sukaranan nga pag-setup sa pagbalanse sa load, mahimo nimong mapauswag ang pasundayag ug pagkaanaa sa imong aplikasyon sa web. Kini nga giya usa lang ka pasiuna sa pagbalanse sa load gamit ang HAProxy, nga makahimo sa labaw pa sa kung unsa ang masakop sa dali nga giya sa pag-setup. Girekomenda namon ang pag-eksperimento sa lainlaing mga pag-configure gamit halapad nga dokumentasyon, magamit sa HAProxy, ug dayon magsugod sa pagplano sa pagbalanse sa load para sa imong palibot sa produksiyon.

Pinaagi sa paggamit sa daghang mga host aron mapanalipdan ang imong serbisyo sa web nga adunay headroom, ang load balancer mismo mahimong magpakita sa usa ka punto sa kapakyasan. Mahimo nimong mapauswag ang taas nga pagkaanaa pinaagi sa pag-install sa usa ka naglutaw nga IP taliwala sa daghang mga balanse sa pagkarga. Mahibal-an nimo ang dugang bahin niini sa among artikulo bahin sa naglutaw nga mga adres sa IP sa UpCloud.

Dugang pa bahin sa kurso "Linux Administrator. Virtualization ug clustering"***

Source: www.habr.com

Idugang sa usa ka comment