Txhim kho HAProxy load balancer ntawm CentOS

Kev txhais lus ntawm tsab xov xwm tau npaj rau hnub ua ntej ntawm kev pib kawm "Linux Administrator. Virtualization thiab clustering "

Txhim kho HAProxy load balancer ntawm CentOS

Load balancing yog ib qho kev daws teeb meem rau kab rov tav scaling web applications hla ntau tus tswv thaum muab cov neeg siv nrog ib qho kev nkag mus rau qhov kev pabcuam. HAPROxy yog ib qhov nrov tshaj plaws qhib qhov chaw load balancing software uas kuj muab siab muaj thiab proxy functionality.

HAProxy siv zog los txhim kho kev siv cov peev txheej, ua kom muaj txiaj ntsig zoo, txo lub sij hawm teb, thiab tsis txhob overloading ib tus neeg cov peev txheej. Nws tuaj yeem ntsia tau rau ntawm ntau yam Linux faib, xws li CentOS 8, uas peb yuav tsom mus rau hauv phau ntawv qhia no, nrog rau cov tshuab. Debian 8 ΠΈ Ubuntu 16.

Txhim kho HAProxy load balancer ntawm CentOS

HAProxy yog qhov tshwj xeeb tshaj yog haum rau cov vev xaib uas muaj tsheb ntau heev thiab yog li ntawd feem ntau siv los txhim kho kev ntseeg tau thiab kev ua tau zoo ntawm ntau lub vev xaib kev pabcuam kev teeb tsa. Phau ntawv qhia no qhia txog cov kauj ruam los teeb tsa HAProxy raws li kev thauj khoom sib npaug ntawm CentOS 8 huab host, uas tom qab ntawd khiav tsheb mus rau koj lub vev xaib servers.

Raws li qhov yuav tsum tau ua ua ntej kom tau txais txiaj ntsig zoo tshaj plaws, koj yuav tsum muaj tsawg kawg ob lub vev xaib servers thiab cov khoom siv sib npaug. Cov web servers yuav tsum tau khiav tsawg kawg yog ib qho kev pabcuam hauv lub vev xaib xws li nginx lossis httpd txhawm rau ntsuas qhov sib npaug ntawm lawv.

Txhim kho HAProxy ntawm CentOS 8

Vim tias HAProxy yog ib daim ntawv thov qhib qhib sai sai, qhov kev faib tawm muaj rau koj hauv tus qauv CentOS repositories yuav tsis yog qhov tseeb version. Txhawm rau kom paub qhov tseeb version, khiav cov lus txib hauv qab no:

sudo yum info haproxy

HAProxy ib txwm muab peb qhov ruaj khov versions xaiv los ntawm: ob qhov kev txhawb nqa tsis ntev los no thiab ib feem peb, cov ntawv qub uas tseem tau txais cov hloov tshiab tseem ceeb. Koj tuaj yeem tshawb xyuas qhov tseeb ruaj khov uas tau teev tseg hauv HAProxy lub vev xaib thiab tom qab ntawd txiav txim siab seb qhov twg koj xav ua haujlwm nrog.

Hauv phau ntawv qhia no, peb yuav tau txhim kho qhov tseeb ruaj khov version 2.0, uas tseem tsis tau muaj nyob rau hauv cov txheej txheem repositories thaum lub sijhawm sau cov lus qhia. Koj yuav tsum tau nruab nws los ntawm tus thawj qhov chaw. Tab sis ua ntej, xyuas seb koj puas tau ntsib cov xwm txheej tsim nyog los rub tawm thiab sau cov program.

sudo yum install gcc pcre-devel tar make -y

Download tau lub hauv paus code siv cov lus txib hauv qab no. Koj tuaj yeem tshawb xyuas seb puas muaj cov tshiab version muaj nyob rau HAProxy download nplooj ntawv.

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

Thaum cov download tiav, rho tawm cov ntaub ntawv siv cov lus txib hauv qab no:

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

Mus rau lub unpacked source directory:

cd ~/haproxy-2.0.7

Tom qab ntawd sau cov program rau koj lub system:

make TARGET=linux-glibc

Thiab thaum kawg, nruab HAProxy nws tus kheej:

sudo make install

HAProxy tau teeb tsa tam sim no, tab sis nws yuav tsum muaj qee qhov kev siv ntxiv los ua kom nws ua haujlwm. Cia peb txuas ntxiv teeb tsa cov software thiab cov kev pabcuam hauv qab no.

Teeb tsa HAProxy rau koj lub server

Tam sim no ntxiv cov npe hauv qab no thiab cov ntaub ntawv txheeb cais rau HAProxy nkag:

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

Tsim cov cim txuas rau binaries yog li koj tuaj yeem khiav HAProxy cov lus txib raws li tus neeg siv tsis tu ncua:

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

Yog tias koj xav ntxiv ib daim ntawv tso cai rau koj lub cev ua qhov kev pabcuam, luam cov ntaub ntawv haproxy.init los ntawm cov piv txwv rau koj phau ntawv /etc/init.d. Kho cov ntaub ntawv tso cai kom tsab ntawv yuav khiav, thiab rov pib dua lub 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

Koj kuj yuav tsum tso cai rau qhov kev pabcuam rov pib dua thaum lub kaw lus pib:

sudo chkconfig haproxy on

Txhawm rau kom yooj yim, nws tseem pom zoo kom ntxiv tus neeg siv tshiab los khiav HAProxy:

sudo useradd -r haproxy

Tom qab qhov no, koj tuaj yeem tshawb xyuas tus naj npawb ntawm cov xov tooj rov qab siv cov lus txib hauv qab no:

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

Nyob rau hauv peb cov ntaub ntawv, lub version yuav tsum yog 2.0.7, raws li qhia nyob rau hauv cov piv txwv tso zis saum toj no.

Thaum kawg, lub default firewall nyob rau hauv CentOS 8 yog heev txwv rau qhov project no. Siv cov lus txib hauv qab no kom tso cai rau cov kev pabcuam xav tau thiab rov pib dua lub 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 Teeb

Kev teeb tsa HAProxy yog txheej txheem yooj yim. Qhov tseem ceeb, txhua yam koj yuav tsum tau ua yog qhia HAProxy qhov kev sib txuas uas nws yuav tsum mloog thiab qhov twg nws yuav tsum xa lawv.

Qhov no yog ua los ntawm kev tsim cov ntaub ntawv configuration /etc/haproxy/haproxy.cfg nrog kev txhais cov chaw. Koj tuaj yeem nyeem txog HAProxy configuration xaiv ntawm nplooj ntawv cov ntaub ntawvyog koj xav paub ntxiv txog nws.

Load ntsuas ntawm txheej thauj (txheej 4)

Cia peb pib nrog kev teeb tsa yooj yim. Tsim cov ntaub ntawv config tshiab, piv txwv li siv vi nrog cov lus txib hauv qab no:

sudo vi /etc/haproxy/haproxy.cfg

Ntxiv cov ntu nram qab no rau hauv cov ntaub ntawv. Hloov server_name dab tsi yuav tsum hu rau koj cov servers ntawm nplooj ntawv txheeb cais, thiab tus kheej_ip - tus IP chaw nyob ntawm cov servers uas koj xav tau coj mus rau hauv lub vev xaib. Koj tuaj yeem tshawb xyuas tus IP chaw nyob ntawm UpCloud tswj vaj huam sib luag thiab ntawm lub tab Private network hauv tshuab raj 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

Qhov no txhais cov txheej txheem thauj khoom sib npaug (txheej 4) sab nraud hu ua http_front mloog ntawm chaw nres nkoj 80, uas tom qab ntawd xa cov tsheb mus rau lub neej ntawd lub npe hu ua http_back. Cov txheeb cais ntxiv /haproxy?stats txuas cov nplooj ntawv txheeb cais mus rau qhov chaw nyob.

Ntau yam load ntsuas algorithms.

Kev qhia cov servers hauv seem backend tso cai rau HAProxy siv cov servers no rau kev thauj khoom sib npaug raws li qhov sib npaug-robin algorithm thaum ua tau.

Ntsuas algorithms yog siv los txiav txim seb tus neeg rau zaub mov twg hauv qhov backend txhua qhov kev sib txuas raug xa mus rau. Nov yog qee qhov kev xaiv muaj txiaj ntsig:

  • Roundrobin: Txhua lub server yog siv nyob rau hauv lem raws li nws qhov hnyav. Qhov no yog qhov smoothest thiab fairest algorithm thaum lub sij hawm ua cov servers tseem sib npaug. Qhov no algorithm yog dynamic, cia tus neeg rau zaub mov qhov hnyav yuav tsum tau kho ntawm ya.
  • Tsawg kawg: tus neeg rau zaub mov uas muaj kev sib txuas tsawg tshaj plaws yog xaiv. Round robin yog ua los ntawm cov servers nrog tib lub thauj khoom. Kev siv cov algorithm no tau pom zoo rau cov ntu ntev xws li LDAP, SQL, TSE, thiab lwm yam, tab sis nws tsis haum rau cov ntu luv xws li HTTP.
  • Thawj: Thawj tus neeg rau zaub mov uas muaj qhov txuas txuas tau txais kev sib txuas. Cov servers raug xaiv los ntawm tus lej lej qis tshaj plaws mus rau qhov siab tshaj plaws, uas ua rau tus neeg rau zaub mov txoj haujlwm hauv kev ua liaj ua teb. Thaum tus neeg rau zaub mov ncav cuag maxconn, tus neeg rau zaub mov tom ntej yog siv.
  • Tau qhov twg los: Qhov chaw IP chaw nyob yog hashed thiab muab faib los ntawm tag nrho qhov hnyav ntawm cov servers khiav los txiav txim seb tus neeg rau zaub mov twg yuav tau txais qhov kev thov. Txoj kev no, tib tus neeg siv tus IP chaw nyob yuav ib txwm mus rau tib lub server, thaum cov servers tseem zoo ib yam.

Teeb tsa kev sib npaug ntawm cov ntawv thov (txheej 7)

Lwm qhov kev xaiv muaj yog los teeb tsa lub load balancer los khiav ntawm daim ntawv thov txheej (txheej 7), uas yog qhov muaj txiaj ntsig zoo thaum qhov chaw ntawm koj daim ntawv thov lub vev xaib nyob rau ntawm cov tswv sib txawv. Qhov no tuaj yeem ua tiav los ntawm throttling kev sib kis ntawm kev sib txuas, piv txwv li los ntawm URL.

Qhib cov ntaub ntawv HAProxy configuration siv cov ntawv nyeem:

sudo vi /etc/haproxy/haproxy.cfg

Tom qab ntawd teeb tsa lub frontend thiab backend ntu raws li qhov piv txwv hauv qab no:

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

Lub frontend tshaj tawm txoj cai ACL hu ua url_blog uas siv rau txhua qhov kev sib txuas nrog txoj hauv kev pib nrog /blog. Use_backend qhia meej tias cov kev sib txuas sib txuas nrog cov xwm txheej url_blog yuav tsum tau txais kev pabcuam los ntawm lub backend npe hu ua blog_back, thiab tag nrho lwm yam kev thov raug tswj los ntawm lub neej ntawd backend.

Nyob rau sab nraub qaum, qhov teeb tsa teeb tsa ob pawg servers: http_back, zoo li ua ntej, thiab ib qho tshiab hu ua blog_back, uas tswj kev sib txuas rau example.com/blog.

Tom qab hloov cov chaw, txuag cov ntaub ntawv thiab rov pib dua HAProxy siv cov lus txib hauv qab no:

sudo systemctl restart haproxy

Yog tias koj tau txais cov lus ceeb toom lossis cov lus yuam kev thaum pib, xyuas koj qhov kev teeb tsa rau lawv thiab xyuas kom tseeb tias koj tau tsim tag nrho cov ntaub ntawv tsim nyog thiab cov folders, ces sim rov pib dua.

Kuaj kev teeb tsa

Thaum HAProxy tau teeb tsa thiab ua haujlwm, qhib qhov chaw nyob IP pej xeem ntawm cov neeg siv khoom sib npaug hauv qhov browser thiab xyuas seb koj puas txuas nrog lub backend kom raug. Cov stats uri parameter hauv kev teeb tsa tsim ib nplooj ntawv txheeb cais ntawm qhov chaw nyob.

http://load_balancer_public_ip/haproxy?stats

Thaum koj thauj cov nplooj ntawv txheeb cais, yog tias tag nrho koj cov servers pom ntsuab, ces qhov kev teeb tsa tau ua tiav!

Txhim kho HAProxy load balancer ntawm CentOS

Nplooj ntawv txheeb cais muaj qee cov ntaub ntawv tseem ceeb rau kev taug qab koj lub vev xaib hosts, suav nrog lub sijhawm nce / nqis thiab cov ntu ntu. Yog tias tus neeg rau zaub mov raug cim liab, nco ntsoov tias lub server qhib thiab koj tuaj yeem ping nws los ntawm lub tshuab load balancer.

Yog tias koj lub load balancer tsis teb, xyuas kom tseeb tias HTTP kev sib txuas tsis raug thaiv los ntawm firewall. Kuj xyuas kom meej tias HAProxy ua haujlwm siv cov lus txib hauv qab no:

sudo systemctl status haproxy

Tiv thaiv nplooj ntawv txheeb cais nrog tus password

Txawm li cas los xij, yog tias nplooj ntawv txheeb cais tsuas yog teev nyob rau pem hauv ntej kawg, ces nws qhib rau txhua tus neeg pom, uas tej zaum yuav tsis yog lub tswv yim zoo. Hloov chaw, koj tuaj yeem muab nws tus lej chaw nres nkoj los ntawm kev ntxiv cov piv txwv hauv qab no mus rau qhov kawg ntawm koj cov ntaub ntawv haproxy.cfg. Hloov username ΠΈ lo lus zais rau tej yam nyab xeeb:

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

Tom qab ntxiv ib pab neeg mloog tshiab, tshem tawm cov qub stats uri txuas los ntawm pab pawg frontend. Thaum ua tiav, txuag cov ntaub ntawv thiab pib dua HAProxy.

sudo systemctl restart haproxy

Tom qab ntawd qhib lub load balancer dua nrog tus lej chaw nres nkoj tshiab thiab nkag mus nrog tus username thiab password koj tau teev tseg hauv cov ntaub ntawv teeb tsa.

http://load_balancer_public_ip:8181

Xyuas kom tseeb tias tag nrho koj cov servers tseem pom ntsuab thiab tom qab ntawd qhib tsuas yog cov khoom sib npaug IP tsis muaj tus lej chaw nres nkoj hauv koj lub browser.

http://load_balancer_public_ip/

Yog tias koj muaj tsawg kawg yog qee cov nplooj ntawv tsaws ntawm koj cov servers tom qab, koj yuav pom tias txhua zaus koj rov rub nplooj ntawv koj tau txais lus teb los ntawm lwm tus tswv tsev. Koj tuaj yeem sim sib txawv algorithms nyob rau hauv seem configuration los yog kos tawm ua kom tiav cov ntaub ntawv.

Xaus: HAProxy Load Balancer

Zoo siab nrog rau kev teeb tsa koj HAProxy load balancer ua tiav! Txawm tias muaj kev teeb tsa yooj yim thauj khoom, koj tuaj yeem txhim kho qhov ua tau zoo thiab muaj nyob ntawm koj daim ntawv thov web. Cov lus qhia no tsuas yog kev qhia txog kev thauj khoom sib npaug nrog HAProxy, uas muaj peev xwm ntau dua li qhov yuav tsum tau them rau hauv phau ntawv qhia kev teeb tsa ceev. Peb pom zoo kom sim nrog cov kev teeb tsa sib txawv siv cov ntaub ntawv dav dav, muaj rau HAProxy, thiab tom qab ntawd pib npaj cov khoom sib npaug rau koj qhov chaw tsim khoom.

Los ntawm kev siv ntau tus tswv los tiv thaiv koj lub vev xaib kev pabcuam nrog headroom, lub load balancer nws tus kheej tseem tuaj yeem nthuav qhia qhov tsis ua tiav. Koj tuaj yeem txhim kho kev muaj peev xwm ntxiv los ntawm kev txhim kho tus IP ntab ntawm ntau lub load balancers. Koj tuaj yeem paub ntau ntxiv txog qhov no hauv peb tsab xov xwm hais txog ntab IP chaw nyob ntawm UpCloud.

Xav paub ntxiv txog chav kawm "Linux Administrator. Virtualization thiab clustering "***

Tau qhov twg los: www.hab.com

Ntxiv ib saib