Sazkirina balansa barkirina HAProxy li ser CentOS

Wergera gotarê di êvara destpêkirina kursê de hat amadekirin "Rêveberê Linux. Virtualîzasyon û komkirin"

Sazkirina balansa barkirina HAProxy li ser CentOS

Hevsengkirina barkirinê çareseriyek hevpar e ji bo pîvandina serîlêdanên webê yên horîzontal li ser gelek mêvandaran dema ku ji bikarhêneran re xalek gihîştina karûbarê peyda dike. HAProxy yek ji wan nermalava hevsengiya barkirinê ya çavkaniya vekirî ya herî populer e ku di heman demê de hebûna bilind û fonksiyona proxy jî peyda dike.

HAProxy hewl dide ku karanîna çavkaniyê xweşbîn bike, berbi zêde bike, dema bersivê kêm bike, û ji barkirina çavkaniyek kesane dûr bixe. Ew dikare li ser cûrbecûr belavokên Linux-ê were saz kirin, wekî CentOS 8, ku em ê di vê rêbernameyê de li ser bisekinin, û her weha pergalên Debian 8 и Ubuntu 16.

Sazkirina balansa barkirina HAProxy li ser CentOS

HAProxy bi taybetî ji bo malperên xwedan seyrûsefera pir zêde maqûl e û ji ber vê yekê pir caran ji bo baştirkirina pêbawerî û performansa mîhengên karûbarê malperê yên pir-server tê bikar anîn. Vê rêbernameyê gavên ji bo sazkirina HAProxy-ê wekî balansek barkirinê li ser mêvandarek cloudê CentOS 8 destnîşan dike, ku dûv re seyrûseferê berbi serverên weya webê ve dibe.

Wekî şertek ji bo encamên çêtirîn, divê hûn bi kêmî ve du serverên malperê û serverek hevsengiya barkirinê hebin. Pêdivî ye ku serverên malperê bi kêmî ve karûbarek webê ya bingehîn wekî nginx an httpd bimeşînin da ku hevsengiya barkirinê di navbera wan de ceribandin.

Sazkirina HAProxy li ser CentOS 8

Ji ber ku HAProxy serîlêdanek çavkaniyek vekirî ye ku zû pêş dikeve, dibe ku belavkirina ku di depoyên standard CentOS de ji we re peyda dibe ne guhertoya herî dawî be. Ji bo ku hûn guhertoya heyî bibînin, emrê jêrîn bicîh bikin:

sudo yum info haproxy

HAProxy her gav sê guhertoyên stabîl peyda dike ku hûn ji wan hilbijêrin: du guhertoyên herî dawî yên piştgirî û guhertoyek sêyemîn, kevntir ku hîn jî nûvekirinên krîtîk distînin. Hûn dikarin her gav guhertoya paşîn a herî paşîn a ku li ser malpera HAProxy hatî navnîş kirin kontrol bikin û dûv re biryar bidin ka hûn dixwazin bi kîjan guhertoyê re bixebitin.

Di vê rêberê de, em ê guhertoya herî dawî ya stabîl 2.0 saz bikin, ku di dema nivîsandina rêbernameyê de hîna di depoyên standard de peyda nebûbû. Hûn hewce ne ku wê ji çavkaniya bingehîn saz bikin. Lê pêşî, kontrol bikin ka we şertên pêwîst bicîh anîne da ku bernameyê dakêşin û berhev bikin.

sudo yum install gcc pcre-devel tar make -y

Koda çavkaniyê bi karanîna fermana jêrîn dakêşin. Hûn dikarin kontrol bikin ka guhertoyek nûtir li ser heye Rûpelê dakêşana HAProxy.

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

Piştî ku dakêşandin qediya, pelan bi karanîna fermana jêrîn derxînin:

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

Biçe pelrêça çavkaniya nepakkirî:

cd ~/haproxy-2.0.7

Dûv re bernameyê ji bo pergala xwe berhev bikin:

make TARGET=linux-glibc

Û di dawiyê de, HAProxy bixwe saz bikin:

sudo make install

HAProxy naha hatî saz kirin, lê ji bo ku ew bixebite hin manipulasyonên din hewce dike. Werin em sazkirina nermalavê û karûbarên jêrîn bidomînin.

Sazkirina HAProxy ji bo servera xwe

Naha pelrêç û pelê statîstîkên jêrîn ji bo navnîşên HAProxy zêde bikin:

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

Ji bo binaryan girêdanek sembolîk biafirînin da ku hûn wekî bikarhênerek birêkûpêk emrên HAProxy bimeşînin:

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

Heke hûn dixwazin wekî karûbarek proxyek li pergala xwe zêde bikin, pelê haproxy.init ji mînakan li pelrêça /etc/init.d-ya xwe kopî bikin. Destûrên pelê biguherînin da ku skrîpt dê bimeşîne, û dûv re pergala daemon ji nû ve bidin destpêkirin:

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

Her weha hûn hewce ne ku destûr bidin ku karûbar bixweber ji nû ve dest pê bike dema ku pergalê dest pê dike:

sudo chkconfig haproxy on

Ji bo rehetiyê, di heman demê de tê pêşniyar kirin ku bikarhênerek nû lê zêde bike da ku HAProxy bimeşîne:

sudo useradd -r haproxy

Piştî vê yekê, hûn dikarin jimareya guhertoya sazkirî dîsa bi karanîna fermana jêrîn kontrol bikin:

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

Di doza me de, divê guhertoya 2.0.7 be, wekî ku di derana mînaka li jor de tê xuyang kirin.

Di dawiyê de, dîwarê xwerû ya di CentOS 8 de ji bo vê projeyê pir sînordar e. Fermanên jêrîn bikar bînin da ku hûn karûbarên pêdivî bihêlin û dîwarê agir ji nû ve saz bikin:

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

Setup Balansa barkirinê

Sazkirina HAProxy pêvajoyek pir hêsan e. Di bingeh de, ya ku hûn hewce ne bikin ev e ku ji HAProxy re bibêjin ka ew çi pêwendiyan divê guhdarî bike û li ku derê divê wan veguhezîne.

Ev bi afirandina pelê veavakirinê /etc/haproxy/haproxy.cfg bi mîhengên diyarkirî tê çêkirin. Hûn dikarin li ser vebijarkên veavakirina HAProxy bixwînin li ser rûpela belgekirinêheke hûn dixwazin li ser wê bêtir zanibin.

Hevsengkirina barkirinê li qata veguheztinê (qata 4)

Ka em bi sazkirina bingehîn dest pê bikin. Pelê mîhengek nû biafirînin, mînakî bikar bînin vi bi fermana jêrîn:

sudo vi /etc/haproxy/haproxy.cfg

Beşên jêrîn li pelê zêde bikin. Diberdaxistin server_name çi divê serverên xwe li ser rûpela îstatîstîkê gazî, û private_ip - Navnîşanên IP-ya taybet ên serverên ku hûn dixwazin seyrûsefera malperê bi rê ve bibin. Hûn dikarin navnîşanên IP-ê yên taybet kontrol bikin li ser panela kontrolê ya UpCloud û li ser tabê Torê taybet di menuê de 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

Ev yek hevsengek barkirina qata veguheztinê (layer 4) bi navê derveyî http_front guhdarîkirina li porta 80-ê diyar dike, ku dûv re seyrûseferê ber bi paşnavek xwerû ya bi navê http_back ve dişîne. Statîstîkên zêde /haproxy?stats rûpela îstatîstîkê bi navnîşana diyarkirî ve girêdide.

Algorîtmayên cûda yên hevsengkirina barkirinê.

Diyarkirina pêşkêşkeran di beşa paşîn de dihêle ku HAProxy van serveran ji bo hevsengkirina barkirinê li gorî algorîtmayek dor-robin dema ku gengaz be bikar bîne.

Algorîtmayên hevsengiyê têne bikar anîn da ku diyar bikin ku her girêdan ji kîjan serverê di paşverû de tê derbas kirin. Li vir çend vebijarkên kêrhatî hene:

  • Roundrobin: Her serverek li gorî giraniya xwe bi dorê tê bikar anîn. Dema ku dema pêvajoyê ya pêşkêşkeran bi rengek wekhev tê belav kirin ev algorîtmaya herî hêsan û dadperwer e. Ev algorîtma dînamîk e, dihêle ku giraniya serverê bi lez were sererast kirin.
  • Leastconn: servera ku herî hindik têkiliyek heye tê hilbijartin. Round robin di navbera serverên bi heman barkirinê de tête kirin. Bikaranîna vê algorîtmê ji bo danişînên dirêj ên wekî LDAP, SQL, TSE, hwd tê pêşniyar kirin, lê ji bo danişînên kurt ên wekî HTTP ne pir maqûl e.
  • Yekem: Pêşkêşkara yekem bi hêlînên pêwendiya berdest pêwendiyê distîne. Pêşkêşker ji navnîşa hejmarî ya herî nizm heya ya herî bilind têne hilbijartin, ku li gorî pozîsyona serverê ya di çandiniyê de vedihewîne. Gava ku serverek digihîje maxconn, servera din tê bikar anîn.
  • Kanî: Navnîşana IP-ya çavkaniyê bi giraniya giştî ya serverên xebitandinê ve tê dabeş kirin da ku diyar bike ka kîjan server dê daxwazê ​​werbigire. Bi vî rengî, heman navnîşana IP-ya xerîdar dê her gav biçe heman serverê, dema ku server heman bimîne.

Sazkirina hevsengiya barkirinê di asta serîlêdanê de (qata 7)

Vebijarkek din a berdest ev e ku meriv hevsengek barkirinê mîheng bike da ku li qata serîlêdanê (qata 7) bixebite, ku dema ku beşên serîlêdana weya webê li ser mêvandarên cûda cih digirin bikêr e. Ev dikare bi guheztina veguheztina pêwendiyê, mînakî bi URL-ê, were bidestxistin.

Pelê veavakirina HAProxy bi karanîna edîtorek nivîsê vekin:

sudo vi /etc/haproxy/haproxy.cfg

Dûv re li gorî mînaka jêrîn beşên pêşîn û paşîn mîheng bikin:

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

Pêşî qaîdeyek ACL ya bi navê url_blog eşkere dike ku ji bo hemî girêdanên bi rêyên ku bi /blog dest pê dikin re derbas dibe. Use_backend diyar dike ku girêdanên ku bi şerta url_blog-ê re têkildar in divê ji hêla paşverûyek bi navê blog_back ve werin xizmet kirin, û hemî daxwazên din ji hêla paşnava xwerû ve têne rêve kirin.

Li aliyê paşîn, veavakirin du komên pêşkêşkeran saz dike: http_back, wekî berê, û yek nû bi navê blog_back, ku girêdanên bi example.com/blog re dike.

Piştî guheztina mîhengan, pelê hilînin û bi karanîna fermana jêrîn HAProxy ji nû ve bidin destpêkirin:

sudo systemctl restart haproxy

Ger hûn di dema destpêkirinê de hişyarî an peyamên xeletiyê werbigirin, veavakirina xwe ji bo wan kontrol bikin û pê ewle bin ku we hemî pel û peldankên pêwîst afirandine, dûv re ji nû ve biceribîne.

Testkirina sazkirinê

Piştî ku HAProxy hate mîheng kirin û xebitandin, navnîşana IP-ya giştî ya servera barkêşkerê di gerokek de vekin û kontrol bikin ka hûn bi paşverû ve girêdayî ne. Parametreya stats uri di veavakirinê de rûpelek îstatîstîkî li navnîşana diyarkirî diafirîne.

http://load_balancer_public_ip/haproxy?stats

Gava ku hûn rûpela statîstîkê bar dikin, heke hemî serverên we kesk nîşan bidin, wê hingê sazkirin serketî bû!

Sazkirina balansa barkirina HAProxy li ser CentOS

Di rûpela îstatîstîkê de hin agahdariya kêrhatî ji bo şopandina mêvandarên weba we vedihewîne, di nav de dema jor/xwarê û hejmara danişînan. Ger server sor hatibe nîşankirin, pê ewle bin ku server vekirî ye û hûn dikarin wê ji makîneya balansa barkirinê ping bikin.

Ger balansa barkirina we bersiv nede, pê ewle bine ku girêdanên HTTP ji hêla dîwarê agir ve nayên asteng kirin. Her weha pê ewle bine ku HAProxy bi karanîna fermana jêrîn dixebite:

sudo systemctl status haproxy

Parastina rûpela îstatîstîkê bi şîfreyekê

Lêbelê, heke rûpela statîstîkê bi tenê li pêşiya pêşîn tête navnîş kirin, wê hingê ew ji bo dîtina her kesî vekirî ye, ku dibe ku ne ramanek baş be. Di şûna wê de, hûn dikarin wê jimareyek porta xwerû destnîşan bikin û mînaka jêrîn li dawiya pelê xweya haproxy.cfg zêde bikin. Diberdaxistin navê bikarhêner и şîfre ji bo tiştekî ewle:

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

Piştî ku komek guhdarvanek nû lê zêde bikin, girêdana statîstîkên kevin ji koma pêşiyê derxînin. Dema ku qediya, pelê hilînin û HAProxy ji nû ve bidin destpêkirin.

sudo systemctl restart haproxy

Dûv re bi jimareya porta nû ve balansa barkirinê vekin û bi nav û şîfreya ku we di pelê veavakirinê de diyar kiriye têkevinê.

http://load_balancer_public_ip:8181

Piştrast bikin ku hemî serverên we hîn jî kesk têne xuyang kirin û dûv re tenê IP-ya balansa barkirinê bêyî hejmarên portê di geroka xwe de vekin.

http://load_balancer_public_ip/

Ger li ser serverên xweya paşîn bi kêmî ve çend cûrbecûr rûpelên dakêşanê hebin, hûn ê pêbihesin ku her gava ku hûn rûpelê ji nû ve dakêşin hûn bersivek ji mêvandarek cûda digirin. Hûn dikarin di beşa mîhengê de algorîtmayên cuda yên hevsengiyê biceribînin an jî bişopînin belgeyên temam.

Encam: HAProxy Load Balancer

Ji bo sazkirina balansa barkirina HAProxy-ya xwe bi serfirazî pîroz dikim! Tewra bi sazûmanek hevsengiya barkirinê ya bingehîn, hûn dikarin bi girîngî performans û hebûna serîlêdana weba xwe baştir bikin. Ev rêber tenê destpêkek e ji bo hevsengkirina barkirinê bi HAProxy re, ku ji ya ku dikare di rêbernameya sazkirinê ya bilez de were vegirtin pir zêdetir dikare bike. Em pêşniyar dikin ku bi karanîna veavakirinên cihêreng ceribandin belgeyên berfireh, ji HAProxy re peyda dibe, û dûv re dest bi plansazkirina hevsengiya barkirinê ji bo hawîrdora hilberîna we bikin.

Bi karanîna pir mêvandar ji bo parastina karûbarê webê ya xweya bi serê xwe, hevsengkera barkirinê bixwe hîn jî dibe ku xalek têkçûnek nîşan bide. Hûn dikarin bi sazkirina IP-ya pêvek di navbera çend hevsengên barkirinê de hebûna zêde çêtir bikin. Hûn dikarin li ser vê yekê di me de bêtir fêr bibin gotarek di derbarê navnîşanên IP-ê yên li ser UpCloud-ê de.

Zêdetir li ser qursê "Rêveberê Linux. Virtualîzasyon û komkirin"***

Source: www.habr.com

Add a comment