Kev txhais lus ntawm tsab xov xwm tau npaj rau hnub ua ntej ntawm kev pib kawm

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. 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 ΠΈ .

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 .
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. , 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 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!

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 .
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 , 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 .
Kawm ntxiv txog chav kawm ***
Tau qhov twg los: www.hab.com
