Si të përdorni HAProxy si një balancues i ngarkesës së shtresës 7 për WordPress dhe Nginx në Ubuntu 14.04


Prezantimi

Në këtë tutorial, ne do t'ju mësojmë se si të përdorni HAProxy si një balancues i ngarkesës së shtresës 7 për të shërbyer aplikacione të shumta nga një emër domeni ose adresë IP e vetme. Balancimi i ngarkesës mund të përmirësojë performancën, disponueshmërinë dhe elasticitetin e mjedisit tuaj.

Përfaqësimi i kundërt i shtresës 7 dhe balancimi i ngarkesës është i përshtatshëm për faqen tuaj nëse dëshironi të keni një emër domeni të vetëm që shërben për shumë aplikacione, pasi kërkesat http mund të analizohen për të vendosur se cili aplikacion duhet të marrë trafikun.

Ky tutorial është shkruar me WordPress dhe një faqe interneti statike si shembuj, por konceptet e tij të përgjithshme mund të përdoren me aplikacione të tjera për një efekt të ngjashëm.

Parakushtet

Përpara se të vazhdoni me këtë tutorial, duhet të keni të paktën dy aplikacione që funksionojnë në serverë të veçantë. Ne do të përdorim një faqe interneti statike të organizuar në Nginx dhe WordPress si dy aplikacionet tona. Nëse dëshironi ta ndiqni saktësisht këtë tutorial, këtu janë mësimet që kemi përdorur për të vendosur mjedisin tonë parakusht:

  • wordpress-1 VPS: Si të konfiguroni një bazë të dhënash në distancë për të optimizuar performancën e sitit me MySQL
  • web-1 VPS: Si të instaloni Nginx në Ubuntu 14.04

Mjedisi ynë fillestar duket si ky:

Përveç mjedisit tuaj aktual, ne do të krijojmë VPS-të e mëposhtme:

  • haproxy-www: Serveri juaj HAProxy, për balancimin e ngarkesës dhe proksimin e kundërt
  • wordpress-2: Serveri juaj i dytë i aplikacionit në ueb WordPress (kërkohet vetëm nëse doni të ngarkoni balancën e komponentit WordPress të mjedisit tuaj)
  • web-2: Serveri juaj i dytë i uebit Nginx (kërkohet vetëm nëse dëshironi të ngarkoni balancën e komponentit Nginx të mjedisit tuaj)

Nëse nuk jeni të njohur me konceptet ose terminologjinë bazë të balancimit të ngarkesës, si balancimi i ngarkesës së shtresës 7 ose backends ose ACLs, këtu është një artikull që shpjegon bazat: Një hyrje në konceptet HAProxy dhe Load Balancing.

Qellimi jone

Deri në fund të këtij tutoriali, ne duam të kemi një mjedis që duket si ky:

Kjo do të thotë, përdoruesit tuaj do të kenë qasje në të dy aplikacionet tuaja përmes http://example.com/wordpress do të përcillen te serverët tuaj të WordPress dhe të gjitha kërkesat e tjera do të përcillen te serverët tuaj bazë Nginx . Vini re se nuk keni nevojë domosdoshmërisht të ngarkoni balancën e aplikacioneve tuaja për t'i shfaqur ato në një domen të vetëm, por ne do të mbulojmë balancimin e ngarkesës në këtë tutorial.

Shënim: udhëzues për konfigurimin e Load Balancers nga hapi 2 në vend të konfigurimit të HAProxy.

Instaloni HAProxy

Krijoni një VPS të ri me Rrjetin Privat. Për këtë tutorial, ne do ta quajmë atë haproxy-www.

haproxy-www VPS-në tonë, le të instalojmë HAProxy me apt-get:

sudo apt-get update
sudo apt-get install haproxy

Ne duhet të aktivizojmë skriptin fillestar të HAProxy, kështu që HAProxy do të fillojë dhe do të ndalojë së bashku me VPS-në tuaj.

sudo vi /etc/default/haproxy

Ndrysho vlerën e ENABLED1 për të aktivizuar skriptin fillestar HAProxy:

ENABLED=1

Ruani dhe hiqni dorë. Tani HAProxy do të fillojë dhe do të ndalojë me VPS-në tuaj. Gjithashtu, tani mund të përdorni komandën service për të kontrolluar HAProxy-në tuaj. Le të kontrollojmë nëse po funksionon:

user@haproxy-www:/etc/init.d$ sudo service haproxy status
haproxy not running.

Nuk po funksionon. Kjo është mirë, sepse duhet të konfigurohet përpara se ta përdorim. Më pas, le të konfigurojmë HAProxy për mjedisin tonë.

Konfigurimi i HAProxy

Skedari i konfigurimit të HAProxy është i ndarë në dy seksione kryesore:

  • Global: vendos parametra të gjithë procesit
  • Proxies: përbëhet nga parazgjedhjet, dëgjo, frontend dhe backend parametrat

Përsëri, nëse nuk jeni të njohur me HAProxy ose konceptet dhe terminologjinë bazë të balancimit të ngarkesës, ju lutemi referojuni kësaj lidhjeje: Një hyrje në konceptet HAProxy dhe balancimin e ngarkesës

Konfigurimi i HAProxy: Global

I gjithë konfigurimi i HAProxy duhet të bëhet në HAProxy VPS, haproxy-www.

Së pari, le të bëjmë një kopje të skedarit të paracaktuar haproxy.cfg:

cd /etc/haproxy; sudo cp haproxy.cfg haproxy.cfg.orig

Tani hapni haproxy.cfg në një redaktues teksti:

sudo vi /etc/haproxy/haproxy.cfg

Do të shihni se ka dy seksione të përcaktuara tashmë: global dhe parazgjedhjet. Fillimisht do të hedhim një vështrim në disa nga parametrat e paracaktuar.

Nën parazgjedhjet, shikoni për rreshtat e mëposhtëm:

mode    http
option  httplog

Zgjedhja e http si modalitet konfiguron HAProxy për të kryer balancimin e ngarkesës së shtresës 7 ose shtresës së aplikacionit. Kjo do të thotë që balancuesi i ngarkesës do të shikojë përmbajtjen e kërkesave http dhe do ta përcjellë atë në serverin e duhur bazuar në rregullat e përcaktuara në frontend. Nëse nuk jeni të njohur me këtë koncept, ju lutemi lexoni seksionin Llojet e balancimit të ngarkesës në hyrjen tonë në HAProxy.

Mos e mbyllni akoma skedarin e konfigurimit! Më pas do të shtojmë konfigurimin e përfaqësuesit.

Konfigurimi i HAProxy: Proxy

Konfigurimi i frontendit

Gjëja e parë që duam të shtojmë është një frontend. Për një konfigurim të kundërt të proksimit të shtresës 7 dhe balancimit të ngarkesës, ne do të duam të përcaktojmë një ACL që do të përdoret për të drejtuar trafikun tonë në serverët e duhur të backend. Ka shumë ACL që mund të përdoren në HAProxy dhe ne do të mbulojmë vetëm një prej tyre në këtë tutorial (path_beg) – për një listë të plotë të ACL-ve në HAProxy, shikoni dokumentacionin zyrtar: HAProxy ACL

Në fund të skedarit, le të shtojmë frontin tonë, www. Sigurohuni që të zëvendësoni haproxy_www_public_IP me IP-në publike të haproxy-www VPS tuaj:

Këtu është një shpjegim se çfarë do të thotë çdo rresht në fragmentin e konfigurimit të frontendit të mësipërm:

  • frontend www: specifikon një frontend të quajtur \www, pasi ne do ta përdorim atë për të trajtuar trafikun hyrës www
  • lidh haproxy_www_public_IP:80: zëvendëso haproxy_www_public_IP me adresën IP publike të haproxy-www. Kjo i tregon HAProxy se ky frontend do të trajtojë trafikun hyrës të rrjetit në këtë adresë IP dhe port
  • opsioni http-server-close: mundëson modalitetin e mbylljes së lidhjes HTTP në server dhe ruan aftësinë për të mbështetur HTTP-në për të mbajtur gjallë dhe për t'u zbatuar në klient. Ky opsion do të lejojë HAProxy të përpunojë kërkesa të shumta klientësh me një lidhje të vetme, e cila shpesh përmirëson performancën
  • acl url_wordpress path_beg /wordpress: specifikon një ACL të quajtur url_wordpress që vlerësohet si e vërtetë nëse rruga e kërkesës fillon me \/wordpress, p.sh. http://example.com/wordpress/hello-world
  • use_backend wordpress-backend if url_wordpress: drejton çdo trafik që përputhet me url_wordpress ACL në wordpress-backend, të cilin do ta përcaktojmë së shpejti< /li>
  • default_backend web-backend: kjo specifikon se çdo trafik që nuk përputhet me një rregull use_backend do të përcillet te web-backend, i cili do ta përcaktojmë në hapin tjetër

Konfigurimi i Backend

Pasi të keni përfunduar konfigurimin e pjesës së përparme, vazhdoni të shtoni fundin tuaj të parë duke shtuar rreshtat e mëposhtëm. Sigurohuni që të zëvendësoni fjalët e theksuara me vlerat e duhura:

Këtu është një shpjegim se çfarë do të thotë secila rresht në fragmentin e konfigurimit të backend më sipër:

  • backend web-backend: specifikon një backend të quajtur web-backend
  • server web-1 …: specifikon një server backend të quajtur web-1, IP-në private (të cilën duhet ta zëvendësoni) dhe portin në të cilin po dëgjon, <80 në këtë rast. Opsioni kontrollo e bën balancuesin e ngarkesës të kryejë periodikisht një kontroll shëndetësor në këtë server

Pastaj shtoni backend për aplikacionin tuaj WordPress:

Këtu është një shpjegim se çfarë do të thotë secila rresht në fragmentin e konfigurimit të backend më sipër:

  • backend wordpress-backend: specifikon një backend të quajtur wordpress-backend
  • reqrep …: rishkruan kërkesat për /wordpress/ kur përcjell trafikun te serverët e WordPress. Kjo nuk është e nevojshme nëse aplikacioni WordPress është i instaluar në rrënjën e serverit, por duam që ai të jetë i aksesueshëm përmes /wordpress në serverin tonë HAProxy
  • server wordpress-1 …: specifikon një server mbështetës të quajtur wordpress-1, IP-në private (të cilën duhet ta zëvendësoni) dhe portin në të cilin po dëgjon, <80 në këtë rast. Opsioni kontrollo e bën balancuesin e ngarkesës të kryejë periodikisht një kontroll shëndetësor në këtë server

Konfigurimi i HAProxy: Statistikat

Nëse dëshironi të aktivizoni statistikat e HAProxy, të cilat mund të jenë të dobishme për të përcaktuar se si HAProxy po trajton trafikun në hyrje, do të dëshironi të shtoni sa vijon në konfigurimin tuaj:

Këtu është një shpjegim i rreshtave jo të parëndësishëm në fragmentin e konfigurimit të statistikave të dëgjimit më sipër:

  • statistikat e dëgjimit :1936: konfiguron faqen e statistikave të HAProxy që të jetë e aksesueshme në portin 1936 (d.m.th. http://haproxy_www_public_IP:1936 )
  • sfera e statistikave …: mblidhni statistika në frontin ose fundin e specifikuar
  • stats uri /: specifikon URI-në e faqes së statistikave si /
  • sfera e statistikave Haproxy\ Statistics: aktivizoni statistikat dhe vendosni emrin e sferës së vërtetimit (autentifikimi që shfaqet), i përdorur së bashku me opsionin stats auth
  • stats auth haproxy:password: specifikon kredencialet e vërtetimit për faqen e statistikave. Ndrysho emrin e përdoruesit dhe fjalëkalimin në emrin tënd

Tani kurseni dhe hiqni dorë. Kur filloni HAProxy, faqja e statistikave do të jetë e disponueshme nëpërmjet http://haproxy_www_public_ip:1936/ sapo të filloni shërbimin tuaj HAProxy. HAProxy tani është gati për të filluar, por le të aktivizojmë fillimisht regjistrimin.

Aktivizimi i Regjistrimit të HAProxy

Aktivizimi i regjistrimit në HAProxy është shumë i thjeshtë. Së pari modifikoni skedarin rsyslog.conf:

sudo vi /etc/rsyslog.conf

Më pas gjeni dy rreshtat e mëposhtëm dhe hiqni komentin e tyre për të mundësuar marrjen e silogut të UDP. Duhet të duket si më poshtë kur të keni mbaruar:

$ModLoad imudp
$UDPServerRun 514
$UDPServerAddress 127.0.0.1

Tani rinisni rsyslog për të aktivizuar konfigurimin e ri:

sudo service rsyslog restart

Regjistrimi HAProxy tani është aktivizuar! Skedari i regjistrit do të krijohet në /var/log/haproxy.log sapo të nisë HAProxy.

Përditësoni konfigurimin e WordPress

Tani që URL-ja e aplikacionit tuaj WordPress ka ndryshuar, ne duhet të përditësojmë disa cilësime në WordPress.

Në cilindo server WordPress, modifikoni wp-config.php. Ndodhet aty ku keni instaluar WordPress (në tutorial, ai është instaluar në /var/www/example.com por instalimi juaj mund të ndryshojë):

Gjeni rreshtin afër krye që thotë define(DB_NAME, wordpress); dhe shtoni linjat e mëposhtme sipër tij, duke zëvendësuar vlerat e theksuara,:

Ruani dhe hiqni dorë. Tani URL-të e WordPress janë konfiguruar që të tregojnë balancuesin tuaj të ngarkesës në vend të serverit tuaj origjinal të WordPress, i cili hyn në lojë kur përpiqeni të hyni në panelin e kontrollit wp-admin.

Filloni HAProxy

Në haproxy-www, nis HAProxy për të bërë që ndryshimet e konfigurimit të hyjnë në fuqi:

sudo service haproxy restart

Përfaqësuesi i kundërt i përfunduar

Tani aplikacionet tuaja janë të aksesueshme përmes të njëjtit domen, example.com, nëpërmjet një përfaqësuesi të kundërt të shtresës 7, por ato nuk janë ende të balancuara nga ngarkesa. Mjedisi juaj duhet të duket si diagrami i mëposhtëm:

Në përputhje me frontendin që përcaktuam më herët, këtu është një përshkrim se si HAProxy do të përcjellë trafikun tuaj:

  • **http://example.com/wordpress**: çdo kërkesë që fillon me /wordpress do të dërgohet në wordpress-backend (i cili përbëhet nga Serveri wordpress-1)
  • **http://example.com/**: çdo kërkesë tjetër do të dërgohet te mbrojtja e uebit (i cili përbëhet nga serveri juaj web-1)

Nëse gjithçka që dëshironit të bënit ishte të presë aplikacione të shumta në një domen të vetëm, keni mbaruar! Nëse dëshironi të ngarkoni balancën e aplikacioneve tuaja, do t'ju duhet të lexoni më tej.

Si të shtoni balancimin e ngarkesës

Load Balancing web-1

Për të ngarkuar balancën e një serveri bazë në internet, gjithçka që duhet të bëni është të krijoni një server të ri ueb që ka konfigurim dhe përmbajtje identike si origjinali juaj. Ne do ta quajmë këtë server të ri: web-2.

Ju keni dy opsione kur krijoni VPS-në e re:

  1. Nëse keni mundësinë për të krijuar një VPS të ri nga një fotografi e web-1, kjo është mënyra më e thjeshtë për të krijuar web-2
  2. Krijoje atë nga e para. Instaloni të gjithë të njëjtin softuer, konfiguroni atë në mënyrë identike dhe më pas kopjoni përmbajtjen e rrënjës së serverit tuaj Nginx nga web-1web-2 duke përdorur rsync (Shihni Udhëzuesin Rsync).< /li>

Shënim: Të dyja metodat e sipërpërmendura bëjnë një kopje të njëhershme të përmbajtjes rrënjësore të serverit tuaj. Nëse përditësoni ndonjë nga skedarët tuaj në një nga nyjet e serverit tuaj, web-1 ose web-2, sigurohuni që t'i sinkronizoni përsëri skedarët.

Pasi të jetë konfiguruar serveri juaj identik i uebit, shtojeni atë në mbrojtjen e uebit në konfigurimin HAProxy.

haproxy-www, modifiko haproxy.cfg:

sudo vi /etc/haproxy/haproxy.cfg

Gjeni seksionin mbrapa në internet të konfigurimit:

Pastaj shtoni serverin tuaj web-2 në rreshtin tjetër:

Ruani dhe hiqni dorë. Tani ringarkoni HAProxy për të vënë në fuqi ndryshimin tuaj:

sudo service haproxy reload

Tani mbrojtja juaj e uebit ka dy serverë që trajtojnë të gjithë trafikun tuaj jo-WordPress! Është i balancuar në ngarkesë!\

Load Balancing wordpress-1

Balancimi i ngarkesës së një aplikacioni të tillë si WordPress është pak më i komplikuar sesa balancimi i ngarkesës së një serveri statik në internet, sepse duhet të shqetësoheni për gjëra të tilla si sinkronizimi i skedarëve të ngarkuar dhe përdoruesve shtesë të bazës së të dhënave.

Të gjithë hapat që kërkohen për të krijuar një server shtesë, identik të WordPress përshkruhen në një tutorial tjetër për balancimin e ngarkesës: Si të përdorni HAProxy si një balancues i ngarkesës së shtresës 4 për WordPress. Përfundoni tre hapat e mëposhtëm nga ai tutorial për të krijuar serverin tuaj të dytë WordPress, wordpress-2:

  1. Krijoni serverin tuaj të dytë të aplikacionit në ueb
  2. Sinkronizoni skedarët e aplikacionit në ueb
  3. Krijo një përdorues të ri të bazës së të dhënave

Ndalo sapo të shkosh te seksioni që quhet Ende jo i ngarkuar i balancuar.

Pasi të keni krijuar wordpress-2 dhe të keni konfiguruar saktë bazën e të dhënave, gjithçka që duhet të bëni është ta shtoni në wordpress-backend tuaj në konfigurimin HAProxy.

haproxy-www, modifiko haproxy.cfg:

sudo vi /etc/haproxy/haproxy.cfg

Gjeni seksionin wordpress-backend të konfigurimit:

Pastaj shtoni serverin tuaj wordpress-2 në rreshtin tjetër:

Ruani dhe hiqni dorë. Tani ringarkoni HAProxy për të vënë në fuqi ndryshimin tuaj:

sudo service haproxy reload

Tani wordpress-backend juaj ka dy serverë që trajtojnë të gjithë trafikun tuaj të WordPress! Është e balancuar në ngarkesë!

konkluzioni

Tani që e keni përfunduar këtë tutorial, duhet të jeni në gjendje të zgjeroni konceptet e proksimit të kundërt dhe të balancimit të ngarkesës për të shtuar më shumë aplikacione dhe serverë në mjedisin tuaj për ta bërë atë të përshtatet më mirë me nevojat tuaja. Mos harroni se ka mënyra të pafundme për të konfiguruar mjedisin tuaj dhe mund t'ju duhet të gërmoni në manualin e konfigurimit të HAProxy nëse keni kërkesa më komplekse.

Për më tepër, nëse jeni duke kërkuar për një mënyrë tjetër për të përmirësuar performancën e shembullit tuaj të WordPress, mund të dëshironi të shikoni në përsëritjen e MySQL. Shikoni këtë tutorial që përshkruan se si ta vendosni atë me WordPress:

  • Si të optimizoni performancën e WordPress me përsëritjen e MySQL në Ubuntu 14.04

Nga Mitchell Anicas