Pag-install ng HAProxy load balancer sa CentOS

Ang pagsasalin ng artikulo ay inihanda sa bisperas ng pagsisimula ng kurso "Linux Administrator. Virtualization at clustering"

Pag-install ng HAProxy load balancer sa CentOS

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. HAProxy ay isa sa pinakasikat na open source load balancing software na nagbibigay din ng mataas na kakayahang magamit at proxy functionality.

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 Debian 8 ΠΈ Ubuntu 16.

Pag-install ng HAProxy load balancer sa CentOS

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 Pahina ng pag-download ng HAProxy.

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 sa pahina ng dokumentasyonkung gusto mong malaman ang higit pa tungkol dito.

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 sa control panel ng UpCloud at sa tab Pribadong 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

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!

Pag-install ng HAProxy load balancer sa CentOS

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 kumpletong dokumentasyon.

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 malawak na dokumentasyon, available sa HAProxy, at pagkatapos ay simulan ang pagpaplano ng load balancing para sa iyong production environment.

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 artikulo tungkol sa mga lumulutang na IP address sa UpCloud.

Higit pa tungkol sa kurso "Linux Administrator. Virtualization at clustering"***

Pinagmulan: www.habr.com

Magdagdag ng komento