Installazzjoni tal-balancer tat-tagħbija HAProxy fuq CentOS

It-traduzzjoni tal-artiklu tħejjiet lejlet il-bidu tal-kors "Amministratur tal-Linux. Virtualization u clustering"

Installazzjoni tal-balancer tat-tagħbija HAProxy fuq CentOS

L-ibbilanċjar tat-tagħbija huwa soluzzjoni komuni għall-iskala orizzontal tal-applikazzjonijiet tal-web fuq hosts multipli filwaqt li jipprovdi lill-utenti b'punt wieħed ta 'aċċess għas-servizz. HAProxy huwa wieħed mill-aktar popolari softwer tal-ibbilanċjar tat-tagħbija ta 'sors miftuħ li jipprovdi wkoll disponibbiltà għolja u funzjonalità ta' prokura.

HAProxy tistinka biex tottimizza l-użu tar-riżorsi, timmassimizza t-throughput, timminimizza l-ħin tar-rispons, u tevita t-tagħbija żejda ta’ kwalunkwe riżors individwali. Jista 'jiġi installat fuq varjetà ta' distribuzzjonijiet Linux, bħal CentOS 8, li se niffukaw fuqu f'din il-gwida, kif ukoll sistemi Debian 8 и Ubuntu 16.

Installazzjoni tal-balancer tat-tagħbija HAProxy fuq CentOS

HAProxy huwa partikolarment adattat għal websajts bi traffiku għoli ħafna u għalhekk spiss jintuża biex itejjeb l-affidabbiltà u l-prestazzjoni ta 'konfigurazzjonijiet ta' servizzi tal-web b'ħafna servers. Din il-gwida tiddeskrivi l-passi biex twaqqaf HAProxy bħala load balancer fuq CentOS 8 cloud host, li mbagħad iwassal it-traffiku lejn is-servers tal-web tiegħek.

Bħala prerekwiżit għall-aħjar riżultati, għandu jkollok mill-inqas żewġ servers tal-web u server tal-ibbilanċjar tat-tagħbija. Is-servers tal-web iridu jkunu qed jaħdmu mill-inqas servizz tal-web bażiku bħal nginx jew httpd sabiex jiġi ttestjat l-ibbilanċjar tat-tagħbija bejniethom.

Installazzjoni ta 'HAProxy fuq CentOS 8

Minħabba li HAProxy hija applikazzjoni ta 'sors miftuħ li qed tevolvi malajr, id-distribuzzjoni disponibbli għalik fir-repożitorji standard ta' CentOS tista 'ma tkunx l-aħħar verżjoni. Biex issir taf il-verżjoni attwali, mexxi l-kmand li ġej:

sudo yum info haproxy

HAProxy dejjem jipprovdi tliet verżjonijiet stabbli minn fejn jagħżlu: iż-żewġ verżjonijiet l-aktar reċenti appoġġjati u t-tielet verżjoni eqdem li għadha qed tirċievi aġġornamenti kritiċi. Tista' dejjem tiċċekkja l-aħħar verżjoni stabbli elenkata fuq il-websajt HAProxy u mbagħad tiddeċiedi liema verżjoni trid taħdem magħha.

F'din il-gwida, se nkunu qed ninstallaw l-aħħar verżjoni stabbli 2.0, li kienet għadha ma kinitx disponibbli fir-repożitorji standard fil-ħin tal-kitba tal-gwida. Ikollok bżonn tinstallah mis-sors oriġinali. Imma l-ewwel, iċċekkja jekk issodisfatx il-kundizzjonijiet meħtieġa biex tniżżel u tiġbor il-programm.

sudo yum install gcc pcre-devel tar make -y

Niżżel il-kodiċi tas-sors billi tuża l-kmand hawn taħt. Tista 'tiċċekkja jekk hemmx verżjoni aktar ġdida disponibbli fuq Il-paġna tat-tniżżil ta' HAProxy.

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

Ladarba t-tniżżil tkun kompluta, iġbed il-fajls billi tuża l-kmand hawn taħt:

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

Mur fid-direttorju tas-sors mhux ippakkjat:

cd ~/haproxy-2.0.7

Imbagħad ikkumpila l-programm għas-sistema tiegħek:

make TARGET=linux-glibc

U fl-aħħarnett, installa HAProxy innifsu:

sudo make install

HAProxy issa huwa installat, iżda jeħtieġ xi manipulazzjonijiet addizzjonali biex jaħdem. Ejja nkomplu nwaqqfu s-softwer u s-servizzi hawn taħt.

Twaqqif ta 'HAProxy għas-server tiegħek

Issa żid id-direttorji u l-fajl tal-istatistika li ġejjin għall-entrati HAProxy:

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

Oħloq link simboliku għall-binarji sabiex tkun tista' tħaddem il-kmandi HAProxy bħala utent regolari:

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

Jekk trid iżżid proxy mas-sistema tiegħek bħala servizz, ikkopja l-fajl haproxy.init minn eżempji fid-direttorju /etc/init.d tiegħek. Editja l-permessi tal-fajl sabiex l-iskrittura taħdem, u mbagħad terġa 'tibda d-daemon systemd:

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

Għandek bżonn ukoll li tippermetti lis-servizz jerġa' jibda awtomatikament meta tibda s-sistema:

sudo chkconfig haproxy on

Għall-konvenjenza, huwa rakkomandat ukoll li żżid utent ġdid biex iħaddem HAProxy:

sudo useradd -r haproxy

Wara dan, tista 'tiċċekkja n-numru tal-verżjoni installata mill-ġdid billi tuża l-kmand li ġej:

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

Fil-każ tagħna, il-verżjoni għandha tkun 2.0.7, kif muri fl-eżempju output hawn fuq.

Fl-aħħarnett, il-firewall default f'CentOS 8 huwa pjuttost restrittiv għal dan il-proġett. Uża l-kmandi li ġejjin biex tippermetti s-servizzi meħtieġa u reset il-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 ta' Load Balancer

It-twaqqif ta' HAProxy huwa proċess pjuttost sempliċi. Essenzjalment, kull ma trid tagħmel hu li tgħid lil HAProxy liema konnessjonijiet għandha tisma 'u fejn għandha tibgħathom.

Dan isir billi jinħoloq fajl ta 'konfigurazzjoni /etc/haproxy/haproxy.cfg b'settings li jiddefinixxu. Tista' taqra dwar l-għażliet ta' konfigurazzjoni HAProxy fuq il-paġna tad-dokumentazzjonijekk trid tkun taf aktar dwarha.

Ibbilanċjar tat-tagħbija fis-saff tat-trasport (saff 4)

Ejja nibdew bis-setup bażiku. Oħloq fajl ta 'konfigurazzjoni ġdid, pereżempju bl-użu vi bil-kmand hawn taħt:

sudo vi /etc/haproxy/haproxy.cfg

Żid it-taqsimiet li ġejjin mal-fajl. Ibdel server_name dak li għandu jsejjaħ is-servers tiegħek fuq il-paġna tal-istatistika, u private_ip — indirizzi IP privati ​​tas-servers li lejhom trid tidderieġi t-traffiku tal-web. Tista 'tiċċekkja indirizzi IP privati fuq il-pannell tal-kontroll UpCloud u fuq it-tab Netwerk privat fuq il-menu Netwerk.

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

Dan jiddefinixxi bilanċjar tat-tagħbija tas-saff tat-trasport (saff 4) esternament bl-isem http_front listening fuq il-port 80, li mbagħad jgħaddi t-traffiku għal backend default jismu http_back. Statistika addizzjonali /haproxy?stats jgħaqqad il-paġna tal-istatistika mal-indirizz speċifikat.

Diversi algoritmi tal-ibbilanċjar tat-tagħbija.

L-ispeċifikazzjoni tas-servers fit-taqsima backend tippermetti lil HAProxy juża dawn is-servers għall-ibbilanċjar tat-tagħbija skont algoritmu round-robin meta jkun possibbli.

L-algoritmi tal-ibbilanċjar jintużaw biex jiddeterminaw liema server fil-backend tiġi mgħoddija kull konnessjoni. Hawn huma xi wħud mill-għażliet utli:

  • Roundrobin: Kull server jintuża min-naħa tiegħu skont il-piż tiegħu. Dan huwa l-aktar algoritmu bla xkiel u ġust meta l-ħin tal-ipproċessar tas-servers jibqa' mqassam b'mod ugwali. Dan l-algoritmu huwa dinamiku, li jippermetti li l-piż tas-server jiġi aġġustat fuq il-fly.
  • Leastconn: jintgħażel is-server bl-inqas konnessjonijiet. Round robin jitwettaq bejn servers bl-istess tagħbija. L-użu ta 'dan l-algoritmu huwa rakkomandat għal sessjonijiet twal bħal LDAP, SQL, TSE, eċċ., iżda mhuwiex adattat ħafna għal sessjonijiet qosra bħal HTTP.
  • L-ewwel: L-ewwel server bi slots ta 'konnessjoni disponibbli jirċievi l-konnessjoni. Is-servers jintgħażlu mill-ID numeriku l-aktar baxx sa l-ogħla, li tiddependi mill-pożizzjoni tas-server fir-razzett. Ladarba server jilħaq maxconn, jintuża s-server li jmiss.
  • sors: L-indirizz IP tas-sors huwa hashed u diviż bil-piż totali tas-servers li qed jaħdmu biex jiddetermina liema server se jirċievi t-talba. Dan il-mod, l-istess indirizz IP tal-klijent dejjem imur għall-istess server, filwaqt li s-servers jibqgħu l-istess.

Twaqqif tal-ibbilanċjar tat-tagħbija fil-livell tal-applikazzjoni (saff 7)

Għażla oħra disponibbli hija li tikkonfigura load balancer biex taħdem fis-saff tal-applikazzjoni (saff 7), li hija utli meta partijiet tal-applikazzjoni tal-web tiegħek jinsabu fuq hosts differenti. Dan jista 'jinkiseb billi throttling it-trażmissjoni tal-konnessjoni, pereżempju permezz tal-URL.

Iftaħ il-fajl tal-konfigurazzjoni HAProxy billi tuża editur tat-test:

sudo vi /etc/haproxy/haproxy.cfg

Imbagħad ikkonfigura s-segmenti tal-frontend u backend skont l-eżempju hawn taħt:

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

Il-frontend jiddikjara regola ACL imsejħa url_blog li tapplika għall-konnessjonijiet kollha b'mogħdijiet li jibdew minn /blog. Use_backend jispeċifika li l-konnessjonijiet li jaqblu mal-kundizzjoni url_blog għandhom jiġu moqdija minn backend bl-isem blog_back, u t-talbiet l-oħra kollha jiġu ttrattati mill-backend default.

Fuq in-naħa ta 'backend, il-konfigurazzjoni tistabbilixxi żewġ gruppi ta' servers: http_back, bħal qabel, u wieħed ġdid imsejjaħ blog_back, li jimmaniġġja konnessjonijiet ma 'exemple.com/blog.

Wara li tbiddel is-settings, issejvja l-fajl u erġa ibda HAProxy billi tuża l-kmand li ġej:

sudo systemctl restart haproxy

Jekk tirċievi xi twissijiet jew messaġġi ta 'żball waqt l-istartjar, iċċekkja l-konfigurazzjoni tiegħek għalihom u kun żgur li ħloqt il-fajls u l-folders kollha meħtieġa, imbagħad ipprova jerġa' jibda mill-ġdid.

Ittestjar tas-setup

Ladarba HAProxy ikun ikkonfigurat u qed jaħdem, iftaħ l-indirizz IP pubbliku tas-server tal-load balancer f'browser u iċċekkja jekk intix konness mal-backend b'mod korrett. Il-parametru stats uri fil-konfigurazzjoni joħloq paġna tal-istatistika fl-indirizz speċifikat.

http://load_balancer_public_ip/haproxy?stats

Meta tgħabbi l-paġna tal-istatistika, jekk is-servers kollha tiegħek juru aħdar, allura s-setup kien suċċess!

Installazzjoni tal-balancer tat-tagħbija HAProxy fuq CentOS

Il-paġna tal-istatistika fiha xi informazzjoni utli għat-traċċar tal-web hosts tiegħek, inkluż il-ħin up/down u n-numru ta’ sessjonijiet. Jekk is-server huwa mmarkat bl-aħmar, kun żgur li s-server huwa mixgħul u li tista 'tpinġih mill-magna load balancer.

Jekk il-load balancer tiegħek mhux qed jirrispondi, kun żgur li l-konnessjonijiet HTTP mhumiex qed jiġu mblukkati minn firewall. Kun żgur ukoll li HAProxy qed jaħdem billi tuża l-kmand hawn taħt:

sudo systemctl status haproxy

Protezzjoni tal-paġna tal-istatistika b'password

Madankollu, jekk il-paġna tal-istatistika hija sempliċement elenkata fuq in-naħa ta 'quddiem, allura hija miftuħa għal kulħadd biex tara, li tista' ma tkunx idea tajba. Minflok, tista 'tassenjah numru tal-port tad-dwana billi żżid l-eżempju hawn taħt fl-aħħar tal-fajl haproxy.cfg tiegħek. Ibdel username и password għal xi ħaġa sigura:

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

Wara li żżid grupp ġdid ta 'semmiegħa, neħħi l-link l-antik tal-stats uri mill-grupp ta' frontend. Meta tkun lest, isalva l-fajl u erġa ibda HAProxy.

sudo systemctl restart haproxy

Imbagħad iftaħ il-load balancer mill-ġdid bin-numru tal-port il-ġdid u illoggja bl-isem tal-utent u l-password li speċifikajt fil-fajl tal-konfigurazzjoni.

http://load_balancer_public_ip:8181

Kun żgur li s-servers kollha tiegħek għadhom qed juru aħdar u mbagħad iftaħ biss l-IP tal-bilanċjar tat-tagħbija mingħajr ebda numri tal-port fil-browser tiegħek.

http://load_balancer_public_ip/

Jekk għandek mill-inqas xi varjetà ta' paġni ta' inżul fuq is-servers back-end tiegħek, tinduna li kull darba li terġa' tgħabbi l-paġna tirċievi tweġiba minn ospitanti differenti. Tista 'tipprova algoritmi ta' bilanċ differenti fit-taqsima tal-konfigurazzjoni jew iċċekkja dokumentazzjoni kompleta.

Konklużjoni: HAProxy Load Balancer

Prosit talli twaqqaf b'suċċess il-balancer tat-tagħbija HAProxy tiegħek! Anke b'setup bażiku tal-ibbilanċjar tat-tagħbija, tista 'ttejjeb b'mod sinifikanti l-prestazzjoni u d-disponibbiltà tal-applikazzjoni tal-web tiegħek. Din il-gwida hija biss introduzzjoni għall-ibbilanċjar tat-tagħbija b'HAProxy, li hija kapaċi ħafna aktar minn dak li jista 'jiġi kopert fil-gwida tas-setup ta' malajr. Nirrakkomandaw li jesperimentaw b'konfigurazzjonijiet differenti bl-użu dokumentazzjoni estensiva, disponibbli għal HAProxy, u mbagħad ibda tippjana l-ibbilanċjar tat-tagħbija għall-ambjent tal-produzzjoni tiegħek.

Billi tuża hosts multipli biex tipproteġi s-servizz tal-web tiegħek b'headroom, il-load balancer innifsu xorta jista 'jippreżenta punt ta' falliment. Tista 'ttejjeb aktar id-disponibbiltà għolja billi tinstalla IP floating bejn bilanċjanti tat-tagħbija multipli. Tista' ssir taf aktar dwar dan f'tagħna artiklu dwar indirizzi IP floating fuq UpCloud.

Aktar dwar il-kors "Amministratur tal-Linux. Virtualization u clustering"***

Sors: www.habr.com

Żid kumment