Enstale balans chaj HAProxy sou CentOS

Tradiksyon atik la te prepare lavèy kòmansman kou a "Administratè Linux. Virtualization ak clustering"

Enstale balans chaj HAProxy sou CentOS

Ekilib chaj se yon solisyon komen pou orizontal dekale aplikasyon entènèt atravè plizyè lame pandan y ap bay itilizatè yo yon sèl pwen aksè nan sèvis la. HAProxy se youn nan lojisyèl ki pi popilè sous louvri balanse chaj ki bay tou disponiblite segondè ak fonksyonalite prokurasyon.

HAProxy fè efò pou optimize itilizasyon resous yo, maksimize debi, minimize tan repons, epi evite twòp chaj nenpòt resous endividyèl. Li ka enstale sou yon varyete distribisyon Linux, tankou CentOS 8, ke nou pral konsantre sou nan gid sa a, osi byen ke sistèm Debian 8 и Ubentu 16.

Enstale balans chaj HAProxy sou CentOS

HAProxy se patikilyèman apwopriye pou sit entènèt ki gen anpil trafik epi se poutèt sa souvan itilize amelyore fyab ak pèfòmans nan konfigirasyon sèvis entènèt milti-sèvè. Gid sa a esplike etap sa yo pou mete kanpe HAProxy kòm yon balans chaj sou yon lame nwaj CentOS 8, ki Lè sa a, wout trafik nan sèvè entènèt ou yo.

Kòm yon avantou pou pi bon rezilta, ou ta dwe gen omwen de serveurs entènèt ak yon sèvè balanse chaj. Sèvè entènèt yo dwe kouri omwen yon sèvis entènèt debaz tankou nginx oswa httpd yo nan lòd yo teste balans chaj ant yo.

Enstale HAProxy sou CentOS 8

Paske HAProxy se yon aplikasyon sous louvri ki rapidman evolye, distribisyon ki disponib pou ou nan depo CentOS estanda yo ka pa dènye vèsyon an. Pou chèche konnen vèsyon aktyèl la, kouri lòd sa a:

sudo yum info haproxy

HAProxy toujou bay twa vèsyon ki estab pou chwazi nan: de vèsyon ki pi resan sipòte yo ak yon twazyèm, vèsyon ki pi gran ki toujou ap resevwa mizajou kritik. Ou ka toujou tcheke dènye vèsyon ki estab ki nan lis sou sitwèb HAProxy epi deside ki vèsyon ou vle travay avèk yo.

Nan gid sa a, nou pral enstale dènye vèsyon ki estab 2.0, ki pa t 'ankò disponib nan depo estanda yo nan moman ekri gid la. Ou pral bezwen enstale li soti nan sous orijinal la. Men, anvan, tcheke si ou te ranpli kondisyon ki nesesè yo telechaje ak konpile pwogram nan.

sudo yum install gcc pcre-devel tar make -y

Telechaje kòd sous la lè l sèvi avèk kòmandman ki anba a. Ou ka tcheke si gen yon nouvo vèsyon ki disponib sou Paj telechaje HAProxy.

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

Yon fwa telechajman an fini, ekstrè dosye yo lè l sèvi avèk kòmandman ki anba a:

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

Ale nan anyè sous ki pa pake a:

cd ~/haproxy-2.0.7

Lè sa a, konpile pwogram nan pou sistèm ou a:

make TARGET=linux-glibc

Epi finalman, enstale HAProxy tèt li:

sudo make install

HAProxy kounye a enstale, men li mande kèk manipilasyon adisyonèl pou fè li travay. Ann kontinye mete sou pye lojisyèl ak sèvis ki anba a.

Mete kanpe HAProxy pou sèvè w la

Koulye a, ajoute anyè sa yo ak dosye estatistik pou antre HAProxy yo:

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

Kreye yon lyen senbolik pou binè yo pou ou ka kouri kòmandman HAProxy kòm yon itilizatè regilye:

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

Si ou vle ajoute yon prokurasyon nan sistèm ou an kòm yon sèvis, kopye fichye haproxy.init ki soti nan egzanp nan anyè /etc/init.d ou. Edite otorizasyon dosye yo pou script la ap kouri, epi rekòmanse demon systemd la:

sudo cp ~/haproxy-2.0.7/examples/haproxy.init /etc/init.d/haproxy
sudo chmod 755 /etc/init.d/haproxy
sudo systemctl daemon-reload

Ou bezwen tou pèmèt sèvis la rekòmanse otomatikman lè sistèm lan kòmanse:

sudo chkconfig haproxy on

Pou konvenyans, li rekòmande tou pou ajoute yon nouvo itilizatè pou kouri HAProxy:

sudo useradd -r haproxy

Apre sa, ou ka tcheke nimewo vèsyon enstale a ankò lè l sèvi avèk lòd sa a:

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

Nan ka nou an, vèsyon an ta dwe 2.0.7, jan yo montre nan pwodiksyon an egzanp pi wo a.

Finalman, firewall default nan CentOS 8 se byen restriksyon pou pwojè sa a. Sèvi ak kòmandman sa yo pou pèmèt sèvis obligatwa yo ak reset firewall la:

sudo firewall-cmd --permanent --zone=public --add-service=http
sudo firewall-cmd --permanent --zone=public --add-port=8181/tcp
sudo firewall-cmd --reload

Enstalasyon balanse chaj

Mete kanpe HAProxy se yon pwosesis jistis senp. Esansyèlman, tout sa ou bezwen fè se di HAProxy ki koneksyon li ta dwe koute ak ki kote li ta dwe relè yo.

Sa a se fè pa kreye yon dosye konfigirasyon /etc/haproxy/haproxy.cfg ak defini anviwònman. Ou ka li sou opsyon konfigirasyon HAProxy sou paj dokiman ansi ou vle konnen plis sou li.

Balanse chaj nan kouch transpò a (kouch 4)

Ann kòmanse ak konfigirasyon debaz la. Kreye yon nouvo fichye konfigirasyon, pou egzanp lè l sèvi avèk vi ak kòmandman ki anba a:

sudo vi /etc/haproxy/haproxy.cfg

Ajoute seksyon sa yo nan dosye a. Ranplase server_name ki sa ki ta dwe rele serveurs ou sou paj la estatistik, ak prive_ip — adrès IP prive nan serveurs yo kote ou vle dirije trafik entènèt. Ou ka tcheke adrès IP prive sou panèl kontwòl UpCloud ak sou tab la Prive rezo nan meni an Rezo.

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

Sa a defini yon balanse chaj transpò kouch (kouch 4) deyò yo te rele http_front koute sou pò 80, ki Lè sa a, voye trafik nan yon backend default yo te rele http_back. Lòt estatistik /haproxy?stats konekte paj estatistik la ak adrès espesifye a.

Plizyè algoritm balanse chaj.

Espesifye sèvè nan seksyon backend la pèmèt HAProxy sèvi ak sèvè sa yo pou balanse chaj dapre yon algorithm round-robin lè sa posib.

Algoritm balanse yo itilize pou detèmine ki sèvè nan backend la chak koneksyon yo pase. Men kèk nan opsyon itil yo:

  • Roundrobin: Chak sèvè yo itilize nan vire selon pwa li yo. Sa a se algorithm ki pi lis ak pi jis lè tan an pwosesis nan serveurs yo rete respire distribye. Algorithm sa a se dinamik, ki pèmèt pwa sèvè a yo dwe ajiste sou vole.
  • Leastconn: sèvè a ki gen mwens koneksyon yo chwazi. Round robin fèt ant serveurs ak menm chaj la. Sèvi ak algorithm sa a rekòmande pou sesyon long tankou LDAP, SQL, TSE, elatriye, men li pa trè apwopriye pou sesyon kout tankou HTTP.
  • Premye: Premye sèvè a ak fant koneksyon ki disponib resevwa koneksyon an. Sèvè yo chwazi soti nan ID nimerik ki pi ba a rive nan pi wo a, ki default nan pozisyon sèvè a nan fèm nan. Yon fwa yon sèvè rive nan maxconn, yo itilize pwochen sèvè a.
  • sous: Adrès IP sous la hache ak divize pa pwa total de serveurs kouri pou detèmine ki sèvè ap resevwa demann lan. Nan fason sa a, menm adrès IP kliyan an ap toujou ale nan menm sèvè a, pandan y ap serveurs yo rete menm jan an.

Mete kanpe balans chaj nan nivo aplikasyon an (kouch 7)

Yon lòt opsyon ki disponib se konfigirasyon yon balans chaj pou kouri nan kouch aplikasyon an (kouch 7), ki itil lè pati nan aplikasyon entènèt ou a sitiye sou diferan lame. Sa a ka reyalize pa throttling transmisyon an nan koneksyon an, pou egzanp pa URL.

Louvri fichye konfigirasyon HAProxy a lè l sèvi avèk yon editè tèks:

sudo vi /etc/haproxy/haproxy.cfg

Lè sa a, konfigirasyon segman entèfas ak backend dapre egzanp ki anba a:

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

Frontend la deklare yon règ ACL ki rele url_blog ki aplike nan tout koneksyon ak chemen ki kòmanse ak /blog. Use_backend presize ke koneksyon ki matche kondisyon url_blog yo ta dwe sèvi pa yon backend ki rele blog_back, epi tout lòt demann yo okipe pa backend default la.

Sou bò backend, konfigirasyon an mete kanpe de gwoup serveurs: http_back, tankou anvan, ak yon nouvo ki rele blog_back, ki okipe koneksyon ak example.com/blog.

Apre chanje paramèt yo, sove fichye a epi rekòmanse HAProxy lè l sèvi avèk lòd sa a:

sudo systemctl restart haproxy

Si ou resevwa nenpòt avètisman oswa mesaj erè pandan demaraj, tcheke konfigirasyon ou pou yo epi asire w ke ou te kreye tout dosye ki nesesè yo ak dosye, epi eseye rekòmanse ankò.

Tès konfigirasyon an

Yon fwa HAProxy konfigirasyon epi kouri, louvri adrès IP piblik sèvè balans chaj la nan yon navigatè epi tcheke si ou konekte ak backend la kòrèkteman. Paramèt uri stats nan konfigirasyon an kreye yon paj estatistik nan adrès espesifye a.

http://load_balancer_public_ip/haproxy?stats

Lè ou chaje paj la estatistik, si tout serveurs ou yo montre vèt, Lè sa a, konfigirasyon an te reyisi!

Enstale balans chaj HAProxy sou CentOS

Paj estatistik la gen kèk enfòmasyon itil pou swiv hôtes entènèt ou yo, ki gen ladan tan monte/desann ak kantite sesyon yo. Si sèvè a make wouj, asire w ke sèvè a limen epi ou ka ping li nan machin balanse chaj la.

Si balans chaj ou a pa reponn, asire w ke koneksyon HTTP yo pa bloke pa yon firewall. Epitou asire w ke HAProxy ap travay lè l sèvi avèk lòd ki anba a:

sudo systemctl status haproxy

Pwoteje paj estatistik ak yon modpas

Sepandan, si paj estatistik la tou senpleman ki nan lis devan, Lè sa a, li louvri pou tout moun wè, ki pa ka yon bon lide. Olye de sa, ou ka bay li yon nimewo pò koutim lè w ajoute egzanp ki anba a nan fen dosye haproxy.cfg ou a. Ranplase non itilizatè и modpas pou yon bagay ki an sekirite:

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

Apre ou fin ajoute yon nouvo gwoup moun kap koute, retire ansyen lyen uri stats nan gwoup entèfas la. Lè fini, sove fichye a epi rekòmanse HAProxy.

sudo systemctl restart haproxy

Lè sa a, louvri balans chaj la ankò ak nimewo pò a nouvo epi konekte ak non itilizatè a ak modpas ou espesifye nan dosye a konfigirasyon.

http://load_balancer_public_ip:8181

Asire w ke tout serveurs ou yo toujou montre vèt ak Lè sa a, louvri jis chaj balans IP la san okenn nimewo pò nan navigatè ou a.

http://load_balancer_public_ip/

Si ou gen omwen kèk varyete paj aterisaj sou serveurs back-end ou yo, ou pral remake ke chak fwa ou rechaje paj la ou jwenn yon repons nan men yon lame diferan. Ou ka eseye diferan algoritm balanse nan seksyon konfigirasyon an oswa tcheke deyò dokiman konplè.

Konklizyon: HAProxy Load Balancer

Felisitasyon pou w te byen enstale balanse chaj HAProxy ou a! Menm ak yon konfigirasyon balans chaj debaz, ou ka siyifikativman amelyore pèfòmans ak disponiblite aplikasyon entènèt ou an. Gid sa a se jis yon entwodiksyon nan balans chaj ak HAProxy, ki kapab pi plis pase sa ki ka kouvri nan gid konfigirasyon rapid la. Nou rekòmande fè eksperyans ak diferan konfigirasyon lè l sèvi avèk dokimantasyon vaste, disponib pou HAProxy, ak Lè sa a, kòmanse planifye balans chaj pou anviwònman pwodiksyon ou.

Lè w itilize plizyè lame pou pwoteje sèvis entènèt ou a ak headroom, balans chaj la li menm ka toujou prezante yon pwen echèk. Ou ka amelyore plis disponiblite lè w enstale yon IP k ap flote ant balanse chaj miltip. Ou ka jwenn plis enfòmasyon sou sa nan nou an atik sou adrès IP k ap flote sou UpCloud.

Plis sou kou a "Administratè Linux. Virtualization ak clustering"***

Sous: www.habr.com

Add nouvo kòmantè