Ang pagsasalin ng artikulo ay inihanda sa bisperas ng pagsisimula ng kurso
Ang load balancing ay isang pangkaraniwang solusyon para sa pahalang na pag-scale ng mga web application sa maraming host habang nagbibigay sa mga user ng isang punto ng access sa serbisyo.
Nagsusumikap ang HAProxy na i-optimize ang paggamit ng mapagkukunan, i-maximize ang throughput, i-minimize ang oras ng pagtugon, at maiwasan ang labis na karga ng anumang indibidwal na mapagkukunan. Maaari itong mai-install sa iba't ibang mga distribusyon ng Linux, tulad ng CentOS 8, na pagtutuunan natin ng pansin sa gabay na ito, pati na rin sa mga system
Ang HAProxy ay partikular na angkop para sa mga website na may napakataas na trapiko at samakatuwid ay kadalasang ginagamit upang pahusayin ang pagiging maaasahan at pagganap ng mga multi-server na mga pagsasaayos ng serbisyo sa web. Binabalangkas ng gabay na ito ang mga hakbang para i-set up ang HAProxy bilang load balancer sa isang CentOS 8 cloud host, na nagruruta ng trapiko sa iyong mga web server.
Bilang isang kinakailangan para sa pinakamahusay na mga resulta, dapat kang magkaroon ng hindi bababa sa dalawang web server at isang load balancing server. Ang mga web server ay dapat na nagpapatakbo ng hindi bababa sa isang pangunahing serbisyo sa web tulad ng nginx o httpd upang masubukan ang pagbabalanse ng pag-load sa pagitan ng mga ito.
Pag-install ng HAProxy sa CentOS 8
Dahil ang HAProxy ay isang mabilis na umuusbong na open source na application, ang distribusyon na magagamit mo sa mga karaniwang CentOS repository ay maaaring hindi ang pinakabagong bersyon. Upang malaman ang kasalukuyang bersyon, patakbuhin ang sumusunod na command:
sudo yum info haproxy
Palaging nagbibigay ang HAProxy ng tatlong stable na bersyon na mapagpipilian: ang dalawang pinakabagong sinusuportahang bersyon at ang pangatlo, mas lumang bersyon na nakakatanggap pa rin ng mga kritikal na update. Maaari mong palaging suriin ang pinakabagong stable na bersyon na nakalista sa website ng HAProxy at pagkatapos ay magpasya kung aling bersyon ang gusto mong gamitin.
Sa gabay na ito, ii-install namin ang pinakabagong stable na bersyon 2.0, na hindi pa available sa mga karaniwang repository sa oras ng pagsulat ng gabay. Kakailanganin mong i-install ito mula sa orihinal na pinagmulan. Ngunit una, suriin kung natugunan mo ang mga kinakailangang kondisyon upang i-download at i-compile ang programa.
sudo yum install gcc pcre-devel tar make -y
I-download ang source code gamit ang command sa ibaba. Maaari mong tingnan kung mayroong mas bagong bersyon na available sa
wget http://www.haproxy.org/download/2.0/src/haproxy-2.0.7.tar.gz -O ~/haproxy.tar.gz
Kapag kumpleto na ang pag-download, i-extract ang mga file gamit ang command sa ibaba:
tar xzvf ~/haproxy.tar.gz -C ~/
Pumunta sa hindi naka-pack na direktoryo ng pinagmulan:
cd ~/haproxy-2.0.7
Pagkatapos ay i-compile ang programa para sa iyong system:
make TARGET=linux-glibc
At sa wakas, i-install ang HAProxy mismo:
sudo make install
Naka-install na ngayon ang HAProxy, ngunit nangangailangan ito ng ilang karagdagang pagmamanipula upang magawa itong gumana. Ipagpatuloy natin ang pag-set up ng software at mga serbisyo sa ibaba.
Pagse-set up ng HAProxy para sa iyong server
Ngayon idagdag ang sumusunod na mga direktoryo at statistics file para sa HAProxy entries:
sudo mkdir -p /etc/haproxy
sudo mkdir -p /var/lib/haproxy
sudo touch /var/lib/haproxy/stats
Gumawa ng simbolikong link para sa mga binary para makapagpatakbo ka ng mga utos ng HAProxy bilang isang regular na user:
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Kung gusto mong magdagdag ng proxy sa iyong system bilang isang serbisyo, kopyahin ang haproxy.init file mula sa mga halimbawa patungo sa iyong /etc/init.d na direktoryo. I-edit ang mga pahintulot ng file upang tumakbo ang script, at pagkatapos ay 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
Kailangan mo ring payagan ang serbisyo na awtomatikong mag-restart kapag nagsimula ang system:
sudo chkconfig haproxy on
Para sa kaginhawahan, inirerekomenda din na magdagdag ng bagong user na magpapatakbo ng HAProxy:
sudo useradd -r haproxy
Pagkatapos nito, maaari mong suriin muli ang naka-install na numero ng bersyon gamit ang sumusunod na command:
haproxy -v
HA-Proxy version 2.0.7 2019/09/27 - https://haproxy.org/
Sa aming kaso, ang bersyon ay dapat na 2.0.7, tulad ng ipinapakita sa halimbawang output sa itaas.
Sa wakas, ang default na firewall sa CentOS 8 ay medyo mahigpit para sa proyektong ito. Gamitin ang mga sumusunod na command upang payagan ang mga kinakailangang serbisyo at 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
Setup ng Load Balancer
Ang pag-set up ng HAProxy ay isang medyo simpleng proseso. Sa esensya, ang kailangan mo lang gawin ay sabihin sa HAProxy kung anong mga koneksyon ang dapat nitong pakinggan at kung saan ito dapat ihatid ang mga ito.
Ginagawa ito sa pamamagitan ng paggawa ng configuration file /etc/haproxy/haproxy.cfg na may mga setting ng pagtukoy. Maaari mong basahin ang tungkol sa mga opsyon sa pagsasaayos ng HAProxy
Pagbalanse ng load sa layer ng transportasyon (layer 4)
Magsimula tayo sa pangunahing pag-setup. Gumawa ng bagong config file, halimbawa gamit ang vi gamit ang utos sa ibaba:
sudo vi /etc/haproxy/haproxy.cfg
Idagdag ang mga sumusunod na seksyon sa file. Palitan pangalan ng server ano ang dapat na tawag sa iyong mga server sa pahina ng istatistika, at private_ip β mga pribadong IP address ng mga server kung saan mo gustong idirekta ang trapiko sa web. Maaari mong suriin ang mga pribadong IP address
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
Tinutukoy nito ang isang transport layer load balancer (layer 4) na panlabas na pinangalanang http_front na pakikinig sa port 80, na pagkatapos ay nagpapasa ng trapiko sa isang default na backend na pinangalanang http_back. Ang mga karagdagang istatistika /haproxy?stats ay nag-uugnay sa pahina ng mga istatistika sa tinukoy na address.
Iba't ibang mga algorithm ng pagbabalanse ng pag-load.
Ang pagtukoy sa mga server sa seksyong backend ay nagbibigay-daan sa HAProxy na gamitin ang mga server na ito para sa pagbalanse ng load ayon sa isang round-robin algorithm kung posible.
Ginagamit ang mga algorithm ng pagbabalanse upang matukoy kung saang server sa backend ipapasa ang bawat koneksyon. Narito ang ilan sa mga kapaki-pakinabang na opsyon:
- Roundrobin: Ang bawat server ay ginagamit ayon sa bigat nito. Ito ang pinakamakinis at pinakamakatarungang algorithm kapag ang oras ng pagproseso ng mga server ay nananatiling pantay-pantay. Ang algorithm na ito ay dynamic, na nagbibigay-daan sa bigat ng server na maisaayos sa mabilisang.
- Leastconn: pinipili ang server na may kakaunting koneksyon. Isinasagawa ang round robin sa pagitan ng mga server na may parehong load. Ang paggamit ng algorithm na ito ay inirerekomenda para sa mahahabang session gaya ng LDAP, SQL, TSE, atbp., ngunit hindi ito masyadong angkop para sa mga maiikling session gaya ng HTTP.
- Una: Ang unang server na may magagamit na mga puwang ng koneksyon ay tumatanggap ng koneksyon. Pinipili ang mga server mula sa pinakamababang numerong ID hanggang sa pinakamataas, na nagde-default sa posisyon ng server sa farm. Kapag naabot ng server ang maxconn, ang susunod na server ang gagamitin.
- Source: Ang pinagmulang IP address ay na-hash at hinati sa kabuuang bigat ng mga tumatakbong server upang matukoy kung aling server ang makakatanggap ng kahilingan. Sa ganitong paraan, ang parehong IP address ng kliyente ay palaging mapupunta sa parehong server, habang ang mga server ay mananatiling pareho.
Pagse-set up ng load balancing sa antas ng application (layer 7)
Ang isa pang magagamit na opsyon ay ang pag-configure ng load balancer upang tumakbo sa layer ng application (layer 7), na kapaki-pakinabang kapag ang mga bahagi ng iyong web application ay matatagpuan sa iba't ibang mga host. Ito ay maaaring makamit sa pamamagitan ng throttling sa pagpapadala ng koneksyon, halimbawa sa pamamagitan ng URL.
Buksan ang HAProxy configuration file gamit ang isang text editor:
sudo vi /etc/haproxy/haproxy.cfg
Pagkatapos ay i-configure ang frontend at backend na mga segment ayon sa halimbawa sa ibaba:
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 ay nagdedeklara ng panuntunan ng ACL na tinatawag na url_blog na nalalapat sa lahat ng koneksyon sa mga path na nagsisimula sa /blog. Tinutukoy ng Use_backend na ang mga koneksyon na tumutugma sa kundisyon ng url_blog ay dapat ihatid ng isang backend na pinangalanang blog_back, at lahat ng iba pang mga kahilingan ay pinangangasiwaan ng default na backend.
Sa backend na bahagi, ang configuration ay nagse-set up ng dalawang grupo ng mga server: http_back, tulad ng dati, at isang bago na tinatawag na blog_back, na humahawak ng mga koneksyon sa example.com/blog.
Pagkatapos baguhin ang mga setting, i-save ang file at i-restart ang HAProxy gamit ang sumusunod na command:
sudo systemctl restart haproxy
Kung nakatanggap ka ng anumang mga babala o mensahe ng error sa panahon ng pagsisimula, suriin ang iyong configuration para sa mga ito at tiyaking nagawa mo ang lahat ng kinakailangang mga file at folder, pagkatapos ay subukang i-restart muli.
Pagsubok sa setup
Kapag na-configure at tumatakbo na ang HAProxy, buksan ang pampublikong IP address ng server ng load balancer sa isang browser at tingnan kung nakakonekta ka nang tama sa backend. Ang parameter ng stats uri sa configuration ay lumilikha ng pahina ng mga istatistika sa tinukoy na address.
http://load_balancer_public_ip/haproxy?stats
Kapag na-load mo ang pahina ng istatistika, kung ang lahat ng iyong mga server ay nagpapakita ng berde, kung gayon ang pag-setup ay matagumpay!
Ang pahina ng istatistika ay naglalaman ng ilang kapaki-pakinabang na impormasyon para sa pagsubaybay sa iyong mga web host, kabilang ang up/down na oras at bilang ng mga session. Kung minarkahan ng pula ang server, tiyaking naka-on ang server at maaari mo itong i-ping mula sa load balancer machine.
Kung hindi tumutugon ang iyong load balancer, tiyaking hindi na-block ng firewall ang mga koneksyon sa HTTP. Tiyakin din na gumagana ang HAProxy gamit ang command sa ibaba:
sudo systemctl status haproxy
Pinoprotektahan ang pahina ng istatistika gamit ang isang password
Gayunpaman, kung ang pahina ng mga istatistika ay nakalista lamang sa harap na dulo, kung gayon ito ay bukas para makita ng lahat, na maaaring hindi magandang ideya. Sa halip, maaari mo itong italaga ng custom na numero ng port sa pamamagitan ng pagdaragdag ng halimbawa sa ibaba sa dulo ng iyong haproxy.cfg file. Palitan username ΠΈ password para sa isang bagay na ligtas:
listen stats
bind *:8181
stats enable
stats uri /
stats realm Haproxy Statistics
stats auth username:password
Pagkatapos magdagdag ng bagong pangkat ng listener, alisin ang lumang link ng uri ng stats sa frontend na grupo. Kapag tapos na, i-save ang file at i-restart ang HAProxy.
sudo systemctl restart haproxy
Pagkatapos ay buksan muli ang load balancer gamit ang bagong port number at mag-log in gamit ang username at password na iyong tinukoy sa configuration file.
http://load_balancer_public_ip:8181
Siguraduhin na ang lahat ng iyong mga server ay nagpapakita pa rin ng berde at pagkatapos ay buksan lamang ang load balancer IP nang walang anumang mga numero ng port sa iyong browser.
http://load_balancer_public_ip/
Kung mayroon kang hindi bababa sa ilang iba't ibang mga landing page sa iyong mga back-end na server, mapapansin mo na sa tuwing ire-reload mo ang page makakatanggap ka ng tugon mula sa ibang host. Maaari mong subukan ang iba't ibang mga algorithm sa pagbabalanse sa seksyon ng pagsasaayos o tingnan
Konklusyon: HAProxy Load Balancer
Binabati kita sa matagumpay na pag-set up ng iyong HAProxy load balancer! Kahit na may pangunahing pag-setup ng load balancing, mapapabuti mo nang malaki ang performance at availability ng iyong web application. Ang gabay na ito ay isang panimula lamang sa pag-load ng pagbabalanse gamit ang HAProxy, na may kakayahang higit pa sa maaaring saklawin sa mabilisang gabay sa pag-setup. Inirerekomenda namin ang pag-eksperimento sa iba't ibang configuration gamit
Sa pamamagitan ng paggamit ng maraming host upang protektahan ang iyong serbisyo sa web na may headroom, ang load balancer mismo ay maaari pa ring magpakita ng isang punto ng pagkabigo. Maaari mong higit pang pagbutihin ang mataas na kakayahang magamit sa pamamagitan ng pag-install ng isang lumulutang na IP sa pagitan ng maraming mga balanse ng pagkarga. Maaari mong malaman ang higit pa tungkol dito sa aming
Higit pa tungkol sa kurso
Pinagmulan: www.habr.com