Txhim kho HAProxy load balancer rau ntawm CentOS

Kev txhais lus ntawm tsab xov xwm tau npaj rau hnub ua ntej ntawm kev pib kawm "Tus Thawj Coj Linux"Kev ua virtualization thiab kev sib sau ua ke"

Txhim kho HAProxy load balancer rau ntawm CentOS

Kev sib npaug ntawm qhov thauj khoom yog ib qho kev daws teeb meem rau kev nthuav dav ntawm cov ntawv thov web hla ntau lub hosts thaum muab rau cov neeg siv nrog ib qho chaw nkag mus rau cov kev pabcuam. HAPROxy yog ib qho ntawm cov software qhib qhov chaw nrov tshaj plaws uas tseem muab kev muaj peev xwm siab thiab kev ua haujlwm proxying.

HAProxy lub hom phiaj yog los ua kom siv tau cov peev txheej zoo tshaj plaws, ua kom muaj txiaj ntsig ntau tshaj plaws, txo lub sijhawm teb, thiab tsis txhob siv ntau dhau rau txhua qhov peev txheej. Nws tuaj yeem ntsia tau rau ntau qhov chaw faib tawm. Linux, zoo li CentOS 8, uas peb yuav tsom mus rau hauv phau ntawv qhia no, nrog rau hauv cov txheej txheem Debian 8 ΠΈ Ubuntu 16.

Txhim kho HAProxy load balancer rau ntawm CentOS

HAProxy yog qhov tsim nyog rau cov vev xaib uas muaj neeg coob heev thiab yog li ntawd feem ntau siv los txhim kho kev ntseeg siab thiab kev ua tau zoo ntawm ntau lub server web service configurations. Phau ntawv qhia no piav qhia txog cov kauj ruam rau kev teeb tsa HAProxy ua lub load balancer ntawm lub cloud host. CentOS 8, uas tom qab ntawd xa cov tsheb mus rau koj cov web servers.

Yuav kom ua tau qhov zoo tshaj plaws, koj yuav tsum muaj tsawg kawg yog ob lub web servers thiab ib lub load-balancing server. Cov web servers yuav tsum khiav tsawg kawg yog ib qho kev pabcuam web yooj yim, xws li nginx lossis httpd, los sim load balancing ntawm lawv.

Kev teeb tsa HAProxy rau CentOS 8

Vim tias HAProxy yog ib daim ntawv thov qhib uas tab tom loj hlob sai, qhov kev faib tawm no muaj rau koj hauv cov chaw khaws cia tus qauv. CentOS, tej zaum yuav tsis yog qhov tseeb tshaj plaws. Txhawm rau nrhiav qhov tam sim no, khiav cov lus txib hauv qab no:

sudo yum info haproxy

HAProxy yeej ib txwm muaj peb hom version ruaj khov rau koj xaiv: ob hom version uas nyuam qhuav txhawb nqa thiab hom version thib peb, uas yog version qub dua uas tseem tau txais cov hloov tshiab tseem ceeb. Koj tuaj yeem tshawb xyuas hom version ruaj khov tshiab tshaj plaws uas teev nyob rau hauv lub vev xaib HAProxy thiab tom qab ntawd txiav txim siab seb koj xav siv hom version twg.

Hauv phau ntawv qhia no, peb yuav teeb tsa qhov tseeb tshaj plaws ruaj khov version, version 2.0, uas tseem tsis tau muaj nyob rau hauv cov chaw khaws cia tus qauv thaum lub sijhawm sau ntawv. Koj yuav tsum teeb tsa nws los ntawm qhov chaw. Tab sis ua ntej, xyuas kom tseeb tias koj ua tau raws li qhov yuav tsum tau ua rau rub tawm thiab sau cov program.

sudo yum install gcc pcre-devel tar make -y

Rub tawm cov lej qhov chaw siv cov lus txib hauv qab no. Koj tuaj yeem tshawb xyuas seb puas muaj qhov version tshiab dua ntawm nplooj ntawv rub tawm HAProxy.

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

Thaum lub download tiav lawm, unzip cov ntaub ntawv siv cov lus txib hauv qab no:

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

Mus rau daim nplaub tshev uas tsis tau qhib nrog cov peev txheej:

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 twb tau teeb tsa lawm, tab sis nws yuav tsum muaj qee cov kauj ruam ntxiv kom nws ua haujlwm tau. Peb yuav 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 stats rau HAProxy nkag:

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

Tsim ib qho txuas symbolic rau cov binaries kom koj tuaj yeem khiav HAProxy cov lus txib ua tus neeg siv ib txwm:

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

Yog tias koj xav ntxiv lub proxy server rau hauv lub system ua ib qho kev pabcuam, theej cov ntaub ntawv haproxy.init los ntawm cov piv txwv rau koj daim nplaub tshev /etc/init.d. Kho cov cai ntawm cov ntaub ntawv kom tso cai rau tsab ntawv khiav, thiab tom qab ntawd 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 tseem yuav tsum tso cai rau qhov kev pabcuam kom rov pib dua thaum lub system pib:

sudo chkconfig haproxy on

Rau kev yooj yim, nws kuj tseem pom zoo kom ntxiv tus neeg siv tshiab los khiav HAProxy:

sudo useradd -r haproxy

Tom qab ntawd, koj tuaj yeem tshawb xyuas tus lej version uas tau teeb tsa dua siv cov lus txib hauv qab no:

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

Hauv peb qhov teeb meem, qhov version yuav tsum yog 2.0.7 raws li qhia hauv qhov piv txwv tso zis saum toj no.

Thaum kawg, lub firewall hauv CentOS 8 yog qhov txwv heev los ntawm lub neej ntawd rau qhov project no. Siv cov lus txib hauv qab no kom tso cai rau cov kev pabcuam tsim nyog 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

Teeb tsa lub load balancer

Kev teeb tsa HAProxy yog ib qho txheej txheem yooj yim heev. Qhov tseem ceeb, txhua yam koj yuav tsum ua yog qhia rau HAProxy seb nws yuav tsum mloog cov kev sib txuas twg thiab nws yuav tsum xa lawv mus rau qhov twg.

Qhov no ua tiav los ntawm kev tsim cov ntaub ntawv teeb tsa /etc/haproxy/haproxy.cfg nrog cov chaw teeb tsa uas xav tau. Koj tuaj yeem nyeem txog cov kev teeb tsa HAProxy. nyob rau ntawm nplooj ntawv cov ntaub ntawv, yog tias koj xav paub ntxiv txog qhov no.

Kev sib npaug ntawm cov khoom thauj ntawm txheej thauj khoom (txheej 4)

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

sudo vi /etc/haproxy/haproxy.cfg

Ntxiv cov ntu hauv qab no rau hauv cov ntaub ntawv. Hloov server_name uas yuav tsum hu rau koj cov servers ntawm nplooj ntawv txheeb cais, thiab tus kheej_ip β€” cov chaw nyob IP ntiag tug ntawm cov servers uas koj xav xa cov tsheb khiav hauv web mus rau. Koj tuaj yeem tshawb xyuas cov chaw nyob IP ntiag tug ntawm UpCloud tswj vaj huam sib luag thiab rau 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 tau tias yog ib qho transport-layer (txheej 4) load balancer nrog lub npe sab nraud http_front, mloog ntawm qhov chaw nres nkoj 80, uas tom qab ntawd xa cov tsheb mus rau lub backend uas hu ua http_back. Cov ntaub ntawv ntxiv /haproxy?stats txuas mus rau nplooj ntawv txheeb cais ntawm qhov chaw nyob teev tseg.

Ntau yam algorithms balancing load.

Kev teev cov servers hauv seem backend tso cai rau HAProxy siv cov servers ntawd rau kev sib npaug ntawm qhov load raws li cov algorithm round-robin thaum ua tau.

Cov txheej txheem ntsuas qhov hnyav yog siv los txiav txim siab seb qhov kev sib txuas twg yog xa mus rau backend server. Nov yog qee cov kev xaiv muaj txiaj ntsig:

  • Roundrobin: Txhua lub server raug siv ib zaug raws li nws qhov hnyav. Qhov no yog qhov algorithm du thiab ncaj ncees tshaj plaws, ua kom lub sijhawm ua tiav thoob plaws cov servers tseem sib npaug. Cov algorithm no yog dynamic, tso cai rau qhov hnyav ntawm lub server kom hloov kho tau sai.
  • Tsawg tshaj plaws: Lub server uas muaj kev sib txuas tsawg tshaj plaws raug xaiv. Kev xaiv puag ncig yog ua tiav ntawm cov servers uas muaj tib lub load. Cov algorithm no raug pom zoo rau cov kev sib tham ntev xws li LDAP, SQL, TSE, thiab lwm yam, tab sis nws tsis haum rau cov kev sib tham luv luv xws li HTTP.
  • Thawj: Lub server thawj zaug uas muaj qhov chaw sib txuas tau txais kev sib txuas. Cov servers raug xaiv los ntawm tus lej ID qis tshaj plaws mus rau tus lej siab tshaj plaws, uas los ntawm lub neej ntawd sib raug rau qhov chaw ntawm lub server hauv lub teb. Thaum lub server mus txog tus nqi maxconn, lub server tom ntej raug siv.
  • Tau qhov twg los: Qhov chaw nyob IP thawj zaug raug hashed thiab faib los ntawm tag nrho qhov hnyav ntawm cov servers khiav kom txiav txim siab seb lub server twg tau txais qhov kev thov. Qhov no ua kom ntseeg tau tias tib tus neeg siv khoom IP chaw nyob yuav ib txwm raug xa mus rau tib lub server, thaum cov servers lawv tus kheej tseem zoo li qub.

Kev teeb tsa qhov sib npaug ntawm qhov kev siv ntawm daim ntawv thov txheej (txheej 7)

Lwm txoj kev xaiv yog teeb tsa lub load balancer kom ua haujlwm ntawm txheej txheej thov (txheej 7), uas yog qhov muaj txiaj ntsig thaum qee qhov ntawm koj daim ntawv thov web nyob ntawm cov tswv tsev sib txawv. Qhov no tuaj yeem ua tiav los ntawm kev tswj hwm kev sib txuas, piv txwv li, los ntawm URL.

Qhib cov ntaub ntawv teeb tsa HAProxy siv cov ntawv kho:

sudo vi /etc/haproxy/haproxy.cfg

Tom qab ntawd teeb tsa cov ntu frontend thiab backend 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 kev pib nrog /blog. Use_backend qhia meej tias cov kev sib txuas uas phim qhov xwm txheej url_blog yuav tsum tau txais kev pabcuam los ntawm backend hu ua blog_back, thaum tag nrho lwm cov kev thov raug tswj hwm los ntawm lub backend qub.

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

Tom qab hloov qhov 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 qhia 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 thiab cov nplaub tshev tsim nyog, tom qab ntawd sim rov pib dua.

Kev sim qhov kev teeb tsa

Thaum HAProxy tau teeb tsa thiab khiav lawm, qhib qhov chaw nyob IP pej xeem ntawm lub load balancer server hauv browser thiab xyuas kom tseeb tias koj tau txuas nrog backend kom raug. Tus parameter stats uri hauv qhov kev teeb tsa tsim ib nplooj ntawv txheeb cais ntawm qhov chaw nyob teev tseg.

http://load_balancer_public_ip/haproxy?stats

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

Txhim kho HAProxy load balancer rau ntawm CentOS

Cov nplooj ntawv txheeb cais muaj qee cov ntaub ntawv pab tau rau kev saib xyuas koj cov neeg tuav lub vev xaib, suav nrog lub sijhawm ua haujlwm / lub sijhawm tsis ua haujlwm thiab tus lej ntawm kev sib tham. Yog tias lub server raug cim liab, xyuas kom tseeb tias nws online thiab tuaj yeem pinged los ntawm lub load balancer.

Yog tias koj lub load balancer tsis teb, xyuas kom tseeb tias cov kev sib txuas HTTP tsis raug thaiv los ntawm firewall. Tsis tas li ntawd, xyuas kom tseeb tias HAProxy khiav siv cov lus txib hauv qab no:

sudo systemctl status haproxy

Tiv thaiv nplooj ntawv txheeb cais nrog lo lus zais

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

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

Tom qab ntxiv pawg listener tshiab, tshem tawm qhov siv qub rau stats uri ntawm pawg frontend. Thaum ua tiav, txuag cov ntaub ntawv thiab rov 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 lub npe neeg siv thiab lo lus zais uas 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 tshwm sim ntsuab, tom qab ntawd qhib tsuas yog lub load balancer IP yam tsis muaj cov lej chaw nres nkoj hauv koj tus browser.

http://load_balancer_public_ip/

Yog tias koj cov servers sab hauv muaj ntau nplooj ntawv tsaws, koj yuav pom tias txhua zaus koj rov qab thauj ib nplooj ntawv, koj yuav tau txais cov lus teb los ntawm tus tswv tsev sib txawv. Koj tuaj yeem sim cov algorithms sib npaug ntawm qhov load hauv ntu configuration lossis tshawb xyuas cov ntaub ntawv tiav.

Xaus Lus: HAProxy Load Balancer

Zoo siab rau koj qhov kev teeb tsa HAProxy load balancer tau zoo! Txawm tias muaj kev teeb tsa load balancing yooj yim, koj tuaj yeem txhim kho qhov kev ua tau zoo thiab muaj ntawm koj daim ntawv thov web. Phau ntawv qhia no tsuas yog kev qhia txog kev sib npaug load nrog HAProxy, uas muaj peev xwm ua ntau yam ntau dua li qhov tau piav qhia hauv phau ntawv qhia teeb tsa luv luv. Peb xav kom koj sim nrog ntau yam kev teeb tsa siv cov ntaub ntawv ntau yam, muaj rau HAProxy, thiab tom qab ntawd pib npaj qhov kev sib npaug ntawm qhov load rau koj qhov chaw tsim khoom.

Txawm hais tias siv ntau lub hosts los tiv thaiv koj cov kev pabcuam web nrog redundancy, lub load balancer nws tus kheej tseem tuaj yeem ua rau muaj ib qho tsis ua haujlwm. Koj tuaj yeem txhim kho qhov muaj peev xwm siab ntxiv los ntawm kev teeb tsa IP floating ntawm ntau lub load balancers. Koj tuaj yeem kawm paub ntxiv txog qhov no hauv peb Tsab xov xwm hais txog cov chaw nyob IP uas ntab rau ntawm UpCloud.

Kawm ntxiv txog chav kawm "Tus Thawj Coj Linux"Kev ua virtualization thiab kev sib sau ua ke"***

Tau qhov twg los: www.hab.com

Yuav txhim khu kev qha hosting rau cov chaw nrog DDoS tiv thaiv, VPS VDS servers πŸ”₯ Yuav lub vev xaib hosting txhim khu kev qha nrog kev tiv thaiv DDoS, VPS VDS servers | ProHoster