Uppsetning HAProxy hleðslujafnari á CentOS

Þýðing á greininni var unnin í aðdraganda námskeiðsins "Linux stjórnandi. Sýndarvæðing og þyrping“

Uppsetning HAProxy hleðslujafnari á CentOS

Álagsjöfnun er algeng lausn til að stækka vefforrit lárétt yfir marga gestgjafa á meðan að veita notendum einn aðgangsstað að þjónustunni. HAProxy er einn vinsælasti opinn uppspretta hleðslujöfnunarhugbúnaður sem einnig veitir mikið framboð og umboðsvirkni.

HAProxy leitast við að hámarka auðlindanotkun, hámarka afköst, lágmarka viðbragðstíma og forðast að ofhlaða hvers kyns auðlind. Það er hægt að setja það upp á ýmsum Linux dreifingum, svo sem CentOS 8, sem við munum leggja áherslu á í þessari handbók, sem og kerfi Debian 8 и ubuntu 16.

Uppsetning HAProxy hleðslujafnari á CentOS

HAProxy hentar sérstaklega vel fyrir vefsíður með mjög mikla umferð og er því oft notað til að bæta áreiðanleika og afköst margmiðlara vefþjónustustillinga. Þessi handbók útlistar skrefin til að setja upp HAProxy sem álagsjafnara á CentOS 8 skýjagestgjafa, sem síðan beinir umferð til vefþjónanna þinna.

Sem forsenda fyrir besta árangri ættir þú að hafa að minnsta kosti tvo vefþjóna og hleðslujöfnunarþjón. Vefþjónar verða að keyra að minnsta kosti grunnvefþjónustu eins og nginx eða httpd til að prófa álagsjafnvægi á milli þeirra.

Að setja upp HAProxy á CentOS 8

Vegna þess að HAProxy er opinn uppspretta forrit í örri þróun, gæti dreifingin í boði fyrir þig í stöðluðu CentOS geymslunum ekki verið nýjasta útgáfan. Til að komast að núverandi útgáfu skaltu keyra eftirfarandi skipun:

sudo yum info haproxy

HAProxy býður alltaf upp á þrjár stöðugar útgáfur til að velja úr: tvær nýjustu studdu útgáfurnar og þriðja, eldri útgáfan sem er enn að fá mikilvægar uppfærslur. Þú getur alltaf athugað nýjustu stöðugu útgáfuna sem skráð er á heimasíðu HAProxy og síðan ákveðið hvaða útgáfu þú vilt vinna með.

Í þessari handbók munum við setja upp nýjustu stöðugu útgáfuna 2.0, sem var ekki enn fáanleg í stöðluðum geymslum þegar handbókin var skrifuð. Þú verður að setja það upp frá upprunalegum uppruna. En fyrst skaltu athuga hvort þú hafir uppfyllt nauðsynleg skilyrði til að hlaða niður og setja saman forritið.

sudo yum install gcc pcre-devel tar make -y

Sæktu frumkóðann með því að nota skipunina hér að neðan. Þú getur athugað hvort það sé til nýrri útgáfa á HAProxy niðurhalssíða.

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

Þegar niðurhalinu er lokið skaltu draga út skrárnar með skipuninni hér að neðan:

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

Farðu í ópakkaða upprunaskrá:

cd ~/haproxy-2.0.7

Settu síðan saman forritið fyrir kerfið þitt:

make TARGET=linux-glibc

Og að lokum skaltu setja upp HAProxy sjálft:

sudo make install

HAProxy er nú uppsett, en það krefst nokkurra viðbótaraðgerða til að það virki. Höldum áfram að setja upp hugbúnaðinn og þjónustuna hér að neðan.

Að setja upp HAProxy fyrir netþjóninn þinn

Bættu nú við eftirfarandi möppum og tölfræðiskrá fyrir HAProxy færslurnar:

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

Búðu til táknrænan hlekk fyrir tvöfaldana svo þú getir keyrt HAProxy skipanir sem venjulegur notandi:

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

Ef þú vilt bæta proxy við kerfið þitt sem þjónustu, afritaðu haproxy.init skrána úr dæmum í /etc/init.d möppuna þína. Breyttu skráarheimildunum þannig að handritið keyri og endurræstu síðan systemd púkann:

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

Þú þarft einnig að leyfa þjónustunni að endurræsa sjálfkrafa þegar kerfið ræsir:

sudo chkconfig haproxy on

Til hægðarauka er einnig mælt með því að bæta við nýjum notanda til að keyra HAProxy:

sudo useradd -r haproxy

Eftir þetta geturðu athugað uppsetta útgáfunúmerið aftur með því að nota eftirfarandi skipun:

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

Í okkar tilviki ætti útgáfan að vera 2.0.7, eins og sýnt er í dæminu hér að ofan.

Að lokum er sjálfgefinn eldveggur í CentOS 8 nokkuð takmarkandi fyrir þetta verkefni. Notaðu eftirfarandi skipanir til að leyfa nauðsynlega þjónustu og endurstilla eldvegginn:

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

Uppsetning álagsjafnvægis

Að setja upp HAProxy er frekar einfalt ferli. Í meginatriðum, allt sem þú þarft að gera er að segja HAProxy hvaða tengingar það ætti að hlusta á og hvar það ætti að miðla þeim.

Þetta er gert með því að búa til stillingarskrá /etc/haproxy/haproxy.cfg með skilgreindum stillingum. Þú getur lesið um HAProxy stillingarvalkosti á skjalasíðunnief þú vilt vita meira um það.

Álagsjöfnun við flutningslag (lag 4)

Byrjum á grunnuppsetningunni. Búðu til nýja stillingarskrá, til dæmis með því að nota vi með skipuninni hér að neðan:

sudo vi /etc/haproxy/haproxy.cfg

Bættu eftirfarandi hlutum við skrána. Skipta um netþjóni hvað ætti að kalla netþjónana þína á tölfræðisíðunni, og einka_ip — einka IP tölur netþjónanna sem þú vilt beina vefumferð á. Þú getur athugað einka IP tölur á UpCloud stjórnborðinu og á flipanum Einkanet á matseðlinum Net.

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

Þetta skilgreinir álagsjafnvægi fyrir flutningslag (lag 4) sem heitir að utan http_front hlustun á höfn 80, sem sendir síðan umferð áfram í sjálfgefna bakenda sem heitir http_back. Viðbótartölfræði /haproxy?stats tengir tölfræðisíðuna við tilgreint heimilisfang.

Ýmis reiknirit til að jafna álag.

Að tilgreina netþjóna í bakendahlutanum gerir HAProxy kleift að nota þessa netþjóna fyrir álagsjafnvægi í samræmi við hringlaga reiknirit þegar mögulegt er.

Jafnvægisalgrím eru notuð til að ákvarða til hvaða netþjóns í bakenda hver tenging er send. Hér eru nokkrir af gagnlegum valkostum:

  • Rounddrobin: Hver miðlari er notaður eftir þyngd hans. Þetta er sléttasta og sanngjarnasta reikniritið þegar vinnslutími netþjónanna helst jafnt dreift. Þetta reiknirit er kraftmikið, sem gerir kleift að stilla þyngd netþjónsins á flugi.
  • Leastconn: þjónninn með fæstar tengingar er valinn. Round robin er framkvæmt á milli netþjóna með sama álag. Mælt er með því að nota þetta reiknirit fyrir langar lotur eins og LDAP, SQL, TSE o.s.frv., en það er ekki mjög hentugur fyrir stuttar lotur eins og HTTP.
  • Fyrst: Fyrsti netþjónninn með tiltæka tengipláss tekur á móti tengingunni. Netþjónar eru valdir úr lægsta tölulega auðkenninu upp í það hæsta, sem er sjálfgefið í stöðu miðlarans í bænum. Þegar þjónn nær maxconn er næsti þjónn notaður.
  • Heimild: Uppruna IP vistfangið er hashed og deilt með heildarþyngd keyrandi netþjóna til að ákvarða hvaða netþjónn mun fá beiðnina. Þannig mun sama IP-tala viðskiptavinarins alltaf fara á sama netþjóninn á meðan netþjónarnir eru þeir sömu.

Uppsetning álagsjafnvægis á umsóknarstigi (lag 7)

Annar tiltækur valkostur er að stilla álagsjafnvægi til að keyra á forritalagið (lag 7), sem er gagnlegt þegar hlutar af vefforritinu þínu eru staðsettir á mismunandi vélum. Þetta er hægt að ná með því að stöðva sendingu tengingarinnar, til dæmis með vefslóð.

Opnaðu HAProxy stillingarskrána með því að nota textaritil:

sudo vi /etc/haproxy/haproxy.cfg

Stilltu síðan framenda- og bakendahlutana eins og á dæminu hér að neðan:

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

Framendinn lýsir yfir ACL reglu sem kallast url_blog sem á við um allar tengingar við slóðir sem byrja á /blog. Use_backend tilgreinir að tengingar sem passa við url_blog skilyrðið ættu að vera þjónað af bakenda sem heitir blog_back og allar aðrar beiðnir eru meðhöndlaðar af sjálfgefnum bakenda.

Á bakhliðinni setur uppsetningin upp tvo hópa netþjóna: http_back, eins og áður, og nýjan sem heitir blog_back, sem sér um tengingar við example.com/blog.

Eftir að stillingunum hefur verið breytt skaltu vista skrána og endurræsa HAProxy með eftirfarandi skipun:

sudo systemctl restart haproxy

Ef þú færð einhverjar viðvaranir eða villuboð við ræsingu skaltu athuga stillingarnar þínar fyrir þær og ganga úr skugga um að þú hafir búið til allar nauðsynlegar skrár og möppur, reyndu síðan að endurræsa aftur.

Er að prófa uppsetninguna

Þegar HAProxy hefur verið stillt og keyrt skaltu opna opinbera IP-tölu álagsjafnvægisþjónsins í vafra og athuga hvort þú sért tengdur við bakendann á réttan hátt. Stats uri færibreytan í uppsetningunni býr til tölfræðisíðu á tilgreindu heimilisfangi.

http://load_balancer_public_ip/haproxy?stats

Þegar þú hleður upp tölfræðisíðunni, ef allir netþjónarnir þínir sýna grænt, þá tókst uppsetningin!

Uppsetning HAProxy hleðslujafnari á CentOS

Tölfræðisíðan inniheldur nokkrar gagnlegar upplýsingar til að fylgjast með vefþjónum þínum, þar á meðal upp/niður tíma og fjölda lota. Ef þjónninn er rauður merktur skaltu ganga úr skugga um að kveikt sé á þjóninum og að þú getir pingað hann frá álagsjafnvægisvélinni.

Ef álagsjafnarinn þinn svarar ekki skaltu ganga úr skugga um að eldvegg sé ekki læst á HTTP-tengingar. Gakktu úr skugga um að HAProxy virki með því að nota skipunina hér að neðan:

sudo systemctl status haproxy

Að vernda tölfræðisíðuna með lykilorði

Hins vegar, ef tölfræðisíðan er einfaldlega skráð á framendanum, þá er hún opin fyrir alla að sjá, sem er kannski ekki góð hugmynd. Þess í stað geturðu úthlutað því sérsniðnu gáttarnúmeri með því að bæta dæminu hér að neðan í lok haproxy.cfg skráarinnar. Skipta um notandanafn и lykilorð fyrir eitthvað öruggt:

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

Eftir að nýr hlustendahópur hefur verið bætt við skaltu fjarlægja gamla stats uri hlekkinn úr framendahópnum. Þegar því er lokið skaltu vista skrána og endurræsa HAProxy.

sudo systemctl restart haproxy

Opnaðu síðan hleðslujafnarann ​​aftur með nýja gáttarnúmerinu og skráðu þig inn með notandanafninu og lykilorðinu sem þú tilgreindir í stillingarskránni.

http://load_balancer_public_ip:8181

Gakktu úr skugga um að allir netþjónarnir þínir séu enn grænir og opnaðu síðan bara hleðslujafnaðar IP án gáttanúmera í vafranum þínum.

http://load_balancer_public_ip/

Ef þú ert með að minnsta kosti ýmsar áfangasíður á bakþjónum þínum, muntu taka eftir því að í hvert skipti sem þú endurhleður síðuna færðu svar frá öðrum gestgjafa. Þú getur prófað mismunandi jafnvægisreiknirit í stillingarhlutanum eða skoðað fullkomin skjöl.

Niðurstaða: HAProxy Load Balancer

Til hamingju með að hafa sett upp HAProxy hleðslujafnara! Jafnvel með grunnuppsetningu álagsjafnvægis geturðu bætt árangur og aðgengi vefforritsins þíns verulega. Þessi handbók er aðeins kynning á álagsjafnvægi með HAProxy, sem er fær um miklu meira en það sem hægt er að fjalla um í flýtiuppsetningarhandbókinni. Við mælum með því að gera tilraunir með mismunandi stillingar með því að nota víðtæk skjöl, í boði fyrir HAProxy, og byrjaðu síðan að skipuleggja álagsjafnvægi fyrir framleiðsluumhverfið þitt.

Með því að nota marga gestgjafa til að vernda vefþjónustuna þína með loftrými, gæti álagsjafnarinn sjálfur samt verið bilunarpunktur. Þú getur bætt mikið framboð enn frekar með því að setja upp fljótandi IP á milli margra álagsjafnara. Þú getur fundið meira um þetta í okkar grein um fljótandi IP tölur á UpCloud.

Nánar um námskeiðið "Linux stjórnandi. Sýndarvæðing og þyrping“***

Heimild: www.habr.com

Bæta við athugasemd