Gosod y cydbwysedd llwyth HAProxy ar CentOS

Paratowyd y cyfieithiad o'r erthygl ar y noson cyn dechrau'r cwrs msgstr "Gweinyddwr Linux. Rhithwiroli a chlystyru"

Gosod y cydbwysedd llwyth HAProxy ar CentOS

Mae cydbwyso llwyth yn ateb cyffredin ar gyfer graddio cymwysiadau gwe yn llorweddol ar draws gwesteiwyr lluosog tra'n darparu un pwynt mynediad i'r gwasanaeth i ddefnyddwyr. HAProxy yw un o'r meddalwedd cydbwyso llwyth ffynhonnell agored mwyaf poblogaidd sydd hefyd yn darparu argaeledd uchel ac ymarferoldeb dirprwy.

Mae HAProxy yn ymdrechu i wneud y defnydd gorau o adnoddau, gwneud y mwyaf o fewnbwn, lleihau amser ymateb, ac osgoi gorlwytho unrhyw adnodd unigol. Gellir ei osod ar amrywiaeth o ddosbarthiadau Linux, megis CentOS 8, y byddwn yn canolbwyntio arno yn y canllaw hwn, yn ogystal â systemau Debian 8 и Ubuntu 16.

Gosod y cydbwysedd llwyth HAProxy ar CentOS

Mae HAProxy yn arbennig o addas ar gyfer gwefannau â thraffig uchel iawn ac felly fe'i defnyddir yn aml i wella dibynadwyedd a pherfformiad cyfluniadau gwasanaeth gwe aml-weinydd. Mae'r canllaw hwn yn amlinellu'r camau i sefydlu HAProxy fel cydbwysedd llwyth ar westeiwr cwmwl CentOS 8, sydd wedyn yn cyfeirio traffig i'ch gweinyddwyr gwe.

Fel rhagofyniad ar gyfer y canlyniadau gorau, dylai fod gennych o leiaf ddau weinydd gwe a gweinydd cydbwyso llwyth. Rhaid i weinyddion gwe fod yn rhedeg o leiaf gwasanaeth gwe sylfaenol fel nginx neu httpd er mwyn profi cydbwyso llwyth rhyngddynt.

Gosod HAProxy ar CentOS 8

Gan fod HAProxy yn gymhwysiad ffynhonnell agored sy'n datblygu'n gyflym, efallai nad y dosbarthiad sydd ar gael i chi yn ystorfeydd safonol CentOS yw'r fersiwn ddiweddaraf. I ddarganfod y fersiwn gyfredol, rhedeg y gorchymyn canlynol:

sudo yum info haproxy

Mae HAProxy bob amser yn darparu tair fersiwn sefydlog i ddewis ohonynt: y ddwy fersiwn a gefnogir fwyaf diweddar a thrydedd fersiwn hŷn sy'n dal i gael diweddariadau beirniadol. Gallwch chi bob amser wirio'r fersiwn sefydlog ddiweddaraf a restrir ar wefan HAProxy ac yna penderfynu pa fersiwn rydych chi am weithio gyda hi.

Yn y canllaw hwn, byddwn yn gosod y fersiwn sefydlog ddiweddaraf 2.0, nad oedd ar gael eto yn y storfeydd safonol ar adeg ysgrifennu'r canllaw. Bydd angen i chi ei osod o'r ffynhonnell wreiddiol. Ond yn gyntaf, gwiriwch a ydych wedi bodloni'r amodau angenrheidiol i lawrlwytho a llunio'r rhaglen.

sudo yum install gcc pcre-devel tar make -y

Dadlwythwch y cod ffynhonnell gan ddefnyddio'r gorchymyn isod. Gallwch wirio a oes fersiwn mwy diweddar ar gael ar Tudalen lawrlwytho HAProxy.

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

Unwaith y bydd y lawrlwythiad wedi'i gwblhau, tynnwch y ffeiliau gan ddefnyddio'r gorchymyn isod:

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

Ewch i'r cyfeiriadur ffynhonnell heb ei bacio:

cd ~/haproxy-2.0.7

Yna lluniwch y rhaglen ar gyfer eich system:

make TARGET=linux-glibc

Ac yn olaf, gosod HAProxy ei hun:

sudo make install

Mae HAProxy bellach wedi'i osod, ond mae angen rhai triniaethau ychwanegol i wneud iddo weithio. Gadewch i ni barhau i sefydlu'r meddalwedd a'r gwasanaethau isod.

Sefydlu HAProxy ar gyfer eich gweinydd

Nawr ychwanegwch y cyfeiriaduron a'r ffeil ystadegau ganlynol ar gyfer y cofnodion HAProxy:

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

Creu dolen symbolaidd ar gyfer y binaries fel y gallwch redeg gorchmynion HAProxy fel defnyddiwr rheolaidd:

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

Os ydych chi am ychwanegu dirprwy i'ch system fel gwasanaeth, copïwch y ffeil haproxy.init o enghreifftiau i'ch cyfeiriadur /etc/init.d. Golygu'r caniatadau ffeil fel y bydd y sgript yn rhedeg, ac yna ailgychwyn yr 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

Mae angen i chi hefyd ganiatáu i'r gwasanaeth ailgychwyn yn awtomatig pan fydd y system yn cychwyn:

sudo chkconfig haproxy on

Er hwylustod, argymhellir hefyd ychwanegu defnyddiwr newydd i redeg HAProxy:

sudo useradd -r haproxy

Ar ôl hyn, gallwch wirio rhif y fersiwn wedi'i osod eto gan ddefnyddio'r gorchymyn canlynol:

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

Yn ein hachos ni, dylai'r fersiwn fod yn 2.0.7, fel y dangosir yn yr allbwn enghreifftiol uchod.

Yn olaf, mae'r wal dân ddiofyn yn CentOS 8 yn eithaf cyfyngol ar gyfer y prosiect hwn. Defnyddiwch y gorchmynion canlynol i ganiatáu gwasanaethau gofynnol ac ailosod y wal dân:

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

Gosod Balansiwr Llwyth

Mae sefydlu HAProxy yn broses eithaf syml. Yn y bôn, y cyfan sydd angen i chi ei wneud yw dweud wrth HAProxy pa gysylltiadau y dylai wrando amdanynt a ble y dylai eu trosglwyddo.

Gwneir hyn trwy greu ffeil ffurfweddu /etc/haproxy/haproxy.cfg gyda gosodiadau diffinio. Gallwch ddarllen am opsiynau cyfluniad HAProxy ar y dudalen ddogfennaethos ydych chi eisiau gwybod mwy amdano.

Cydbwyso llwyth ar yr haen gludo (haen 4)

Gadewch i ni ddechrau gyda'r gosodiad sylfaenol. Creu ffeil ffurfweddu newydd, er enghraifft gan ddefnyddio vi gyda'r gorchymyn isod:

sudo vi /etc/haproxy/haproxy.cfg

Ychwanegwch yr adrannau canlynol i'r ffeil. Amnewid gweinydd_name beth ddylai alw eich gweinyddion ar y dudalen ystadegau, a preifat_ip — cyfeiriadau IP preifat y gweinyddion yr ydych am gyfeirio traffig gwe iddynt. Gallwch wirio cyfeiriadau IP preifat ar y panel rheoli UpCloud ac ar y tab Rhwydwaith preifat ar y fwydlen Rhwydwaith.

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

Mae hyn yn diffinio cydbwysedd llwyth haen trafnidiaeth (haen 4) a enwir yn allanol wrando http_front ar borth 80, sydd wedyn yn anfon traffig ymlaen i ôl-ben diofyn o'r enw http_back. Mae ystadegau ychwanegol /haproxy?stats yn cysylltu'r dudalen ystadegau i'r cyfeiriad penodedig.

Algorithmau cydbwyso llwyth amrywiol.

Mae pennu gweinyddwyr yn yr adran backend yn caniatáu i HAProxy ddefnyddio'r gweinyddwyr hyn ar gyfer cydbwyso llwyth yn unol ag algorithm robin crwn pan fo modd.

Defnyddir algorithmau cydbwyso i benderfynu i ba weinydd yn yr ôl-ben y trosglwyddir pob cysylltiad. Dyma rai o'r opsiynau defnyddiol:

  • Roundrobin: Defnyddir pob gweinydd yn ei dro yn ôl ei bwysau. Dyma'r algorithm llyfnaf a thecaf pan fo amser prosesu'r gweinyddwyr yn parhau i fod wedi'i ddosbarthu'n gyfartal. Mae'r algorithm hwn yn ddeinamig, gan ganiatáu i bwysau'r gweinydd gael ei addasu ar y hedfan.
  • Lesconn: dewisir y gweinydd gyda'r nifer lleiaf o gysylltiadau. Mae robin crwn yn cael ei berfformio rhwng gweinyddwyr sydd â'r un llwyth. Argymhellir defnyddio'r algorithm hwn ar gyfer sesiynau hir fel LDAP, SQL, TSE, ac ati, ond nid yw'n addas iawn ar gyfer sesiynau byr fel HTTP.
  • Yn gyntaf: Mae'r gweinydd cyntaf gyda slotiau cysylltiad sydd ar gael yn derbyn y cysylltiad. Mae gweinyddwyr yn cael eu dewis o'r ID rhifol isaf i'r uchaf, sy'n rhagosodedig i safle'r gweinydd yn y fferm. Unwaith y bydd gweinydd yn cyrraedd maxconn, defnyddir y gweinydd nesaf.
  • ffynhonnell: Mae'r cyfeiriad IP ffynhonnell yn cael ei stwnsio a'i rannu â chyfanswm pwysau rhedeg gweinyddwyr i benderfynu pa weinydd fydd yn derbyn y cais. Fel hyn, bydd yr un cyfeiriad IP cleient bob amser yn mynd i'r un gweinydd, tra bod y gweinyddwyr yn aros yr un peth.

Sefydlu cydbwyso llwyth ar lefel y cais (haen 7)

Opsiwn arall sydd ar gael yw ffurfweddu cydbwysedd llwyth i redeg ar yr haen cymhwysiad (haen 7), sy'n ddefnyddiol pan fydd rhannau o'ch cymhwysiad gwe wedi'u lleoli ar wahanol westeion. Gellir cyflawni hyn trwy wthio trosglwyddiad y cysylltiad, er enghraifft trwy URL.

Agorwch y ffeil ffurfweddu HAProxy gan ddefnyddio golygydd testun:

sudo vi /etc/haproxy/haproxy.cfg

Yna ffurfweddwch y segmentau blaen a chefn yn unol â'r enghraifft isod:

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

Mae'r frontend yn datgan rheol ACL o'r enw url_blog sy'n berthnasol i bob cysylltiad â llwybrau sy'n dechrau gyda /blog. Mae Use_backend yn nodi y dylai cysylltiadau sy'n cyfateb i'r amod url_blog gael eu gwasanaethu gan ôl-wyneb o'r enw blog_back, ac ymdrinnir â phob cais arall gan y pen ôl rhagosodedig.

Ar ochr y pen ôl, mae'r ffurfweddiad yn sefydlu dau grŵp o weinyddion: http_back, fel o'r blaen, ac un newydd o'r enw blog_back, sy'n trin cysylltiadau â example.com/blog.

Ar ôl newid y gosodiadau, arbedwch y ffeil ac ailgychwyn HAProxy gan ddefnyddio'r gorchymyn canlynol:

sudo systemctl restart haproxy

Os byddwch yn derbyn unrhyw rybuddion neu negeseuon gwall wrth gychwyn, gwiriwch eich ffurfweddiad ar eu cyfer a gwnewch yn siŵr eich bod wedi creu'r holl ffeiliau a ffolderau angenrheidiol, yna ceisiwch ailgychwyn eto.

Profi'r gosodiad

Unwaith y bydd HAProxy wedi'i ffurfweddu a'i redeg, agorwch gyfeiriad IP cyhoeddus y gweinydd cydbwysedd llwyth mewn porwr a gwiriwch a ydych wedi'ch cysylltu â'r backend yn gywir. Mae'r paramedr stats uri yn y ffurfweddiad yn creu tudalen ystadegau yn y cyfeiriad penodedig.

http://load_balancer_public_ip/haproxy?stats

Pan fyddwch chi'n llwytho'r dudalen ystadegau, os yw'ch holl weinyddion yn dangos gwyrdd, yna roedd y gosodiad yn llwyddiannus!

Gosod y cydbwysedd llwyth HAProxy ar CentOS

Mae'r dudalen ystadegau yn cynnwys rhywfaint o wybodaeth ddefnyddiol ar gyfer olrhain eich gwesteiwyr gwe, gan gynnwys amser i fyny/lawr a nifer y sesiynau. Os yw'r gweinydd wedi'i farcio'n goch, gwnewch yn siŵr bod y gweinydd wedi'i droi ymlaen a'ch bod chi'n gallu ei binio o'r peiriant cydbwysedd llwyth.

Os nad yw'ch cydbwysydd llwyth yn ymateb, gwnewch yn siŵr nad yw cysylltiadau HTTP yn cael eu rhwystro gan wal dân. Hefyd gwnewch yn siŵr bod HAProxy yn gweithio gan ddefnyddio'r gorchymyn isod:

sudo systemctl status haproxy

Diogelu'r dudalen ystadegau gyda chyfrinair

Fodd bynnag, os yw'r dudalen ystadegau wedi'i rhestru'n syml ar y pen blaen, yna mae'n agored i bawb ei gweld, ac efallai nad yw hynny'n syniad da. Yn lle hynny, gallwch chi neilltuo rhif porthladd arferol iddo trwy ychwanegu'r enghraifft isod at ddiwedd eich ffeil haproxy.cfg. Amnewid enw defnyddiwr и cyfrinair am rywbeth diogel:

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

Ar ôl ychwanegu grŵp gwrandawyr newydd, tynnwch yr hen ddolen stats uri o'r grŵp blaen. Ar ôl gorffen, arbedwch y ffeil ac ailgychwyn HAProxy.

sudo systemctl restart haproxy

Yna agorwch y balans llwyth eto gyda'r rhif porthladd newydd a mewngofnodwch gyda'r enw defnyddiwr a'r cyfrinair a nodwyd gennych yn y ffeil ffurfweddu.

http://load_balancer_public_ip:8181

Gwnewch yn siŵr bod eich holl weinyddion yn dal i ddangos gwyrdd ac yna agorwch yr IP cydbwysedd llwyth yn unig heb unrhyw rifau porthladd yn eich porwr.

http://load_balancer_public_ip/

Os oes gennych chi o leiaf rywfaint o amrywiaeth o dudalennau glanio ar eich gweinyddwyr pen ôl, byddwch chi'n sylwi bob tro y byddwch chi'n ail-lwytho'r dudalen y byddwch chi'n cael ymateb gan westeiwr gwahanol. Gallwch chi roi cynnig ar wahanol algorithmau cydbwyso yn yr adran ffurfweddu neu edrychwch allan dogfennaeth gyflawn.

Casgliad: Cydbwysedd Llwyth HAProxy

Llongyfarchiadau ar sefydlu eich cydbwysedd llwyth HAProxy yn llwyddiannus! Hyd yn oed gyda gosodiad cydbwyso llwyth sylfaenol, gallwch wella perfformiad ac argaeledd eich cymhwysiad gwe yn sylweddol. Dim ond cyflwyniad i gydbwyso llwyth gyda HAProxy yw'r canllaw hwn, sy'n gallu llawer mwy na'r hyn y gellir ei gynnwys yn y canllaw gosod cyflym. Rydym yn argymell arbrofi gyda gwahanol ffurfweddiadau gan ddefnyddio dogfennaeth helaeth, ar gael i HAProxy, ac yna dechreuwch gynllunio cydbwyso llwyth ar gyfer eich amgylchedd cynhyrchu.

Trwy ddefnyddio gwesteiwyr lluosog i amddiffyn eich gwasanaeth gwe gyda gofod uwch, efallai y bydd y cydbwysedd llwyth ei hun yn dal i gyflwyno pwynt o fethiant. Gallwch wella argaeledd uchel ymhellach trwy osod IP symudol rhwng cydbwyswyr llwyth lluosog. Gallwch ddarganfod mwy am hyn yn ein erthygl am gyfeiriadau IP symudol ar UpCloud.

Mwy am y cwrs msgstr "Gweinyddwr Linux. Rhithwiroli a chlystyru"***

Ffynhonnell: hab.com

Ychwanegu sylw