Hvernig á að setja HAProxy upp sem álagsjafnvægi fyrir Nginx á CentOS 8


Til að tryggja hámarksframboð á vefforritum, sveigjanleika og afkastagetu er nú algengt að innleiða tækni sem innleiðir offramboð, svo sem þyrping netþjóna og álagsjafnvægi. Til dæmis að setja upp þyrping af netþjónum sem allir keyra sama forritið/forritin og setja síðan álagsjafnara fyrir framan þá til að dreifa umferðinni.

HAProxy er opinn uppspretta, öflugur, afkastamikill, áreiðanlegur, öruggur og mikið notaður TCP/HTTP hleðslujafnari, proxy-miðlari og SSL/TLS terminator, byggður fyrir vefsíður með mikla umferð. Það keyrir áreiðanlega vel á Linux, Solaris, FreeBSD, OpenBSD sem og AIX stýrikerfum.

Þessi handbók sýnir hvernig á að setja upp sérstakan hleðslujafnara með HAProxy á CentOS 8 til að stjórna umferð í hópi NGINX vefþjóna. Það sýnir einnig hvernig á að stilla SSL/TLS uppsögn í HAProxy.

Alls 4 netþjónar með lágmarks CentOS 8 uppsetningu.

----------- HAProxy Server Setup ----------- 
HA Proxy Server - hostname: haproxy-server.tecmint.lan; IP: 10.42.0.247
Test Site Domain: www.tecmint.lan


----------- Client Web Servers Setup ----------- 
Web Server #1 - hostname: websrv1.tecmint.lan; IP: 10.42.0.200
Web Server #2 - hostname: websrv2.tecmint.lan; IP: 10.42.0.21
Web Server #3 - hostname: websrv3.tecmint.lan; IP: 10.42.0.34

Skref 1: Uppsetning Nginx HTTP netþjóns á viðskiptavinavélunum

1. Skráðu þig inn á allar CentOS 8 biðlaravélarnar þínar og settu upp Nginx vefþjóninn með því að nota dnf pakkastjórann eins og sýnt er.

# dnf install Nginx

2. Næst skaltu ræsa Nginx þjónustuna, í bili, virkjaðu hana sjálfkrafa við ræsingu kerfisins og staðfestu að hún sé í gangi með því að athuga stöðu hennar með því að nota systemctl skipanirnar (gerðu þetta á öllum biðlaravélum).

# systemctl start nginx
# systemctl enable nginx
# systemctl status nginx

3. Einnig, ef eldveggþjónustan er í gangi á öllum biðlaravélum (sem þú getur athugað með því að keyra systemctl start firewalld), verður þú að bæta HTTP og HTTPS þjónustunum við uppsetningu eldveggsins til að leyfa beiðnum frá álagsjafnaranum að fara í gegnum eldvegginn til Nginx vefþjónanna. Síðan skaltu endurhlaða eldveggþjónustuna til að framkvæma nýju breytingarnar (gerðu þetta á öllum biðlaravélum).

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent --add-service=https
# firewall-cmd --reload

4. Næst skaltu opna vafra á staðbundnum vélum þínum og prófa hvort Nginx uppsetningin virkar vel. Notaðu IP-tölu viðskiptavinarins til að fletta, þegar þú sérð Nginx prófunarsíðuna þýðir það að vefþjónninn sem er uppsettur á biðlaravélinni virkar rétt.

5. Næst þurfum við að búa til prófunarsíður á biðlaravélunum sem við munum nota síðar til að prófa HAProxy uppsetninguna.

----------- Web Server #1 ----------- 
# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# echo "Showing site from websrv1.tecmint.lan"> /usr/share/nginx/html/index.html

----------- Web Server #2 ----------- 
# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# echo "Showing site from websrv2.tecmint.lan"> /usr/share/nginx/html/index.html

----------- Web Server #3 ----------- 
# cp /usr/share/nginx/html/index.html /usr/share/nginx/html/index.html.orig
# echo "Showing site from websrv3.tecmint.lan"> /usr/share/nginx/html/index.html

Skref 2: Uppsetning og stilling HAProxy Server á CentOS 8

6. Settu nú upp HAProxy pakkann á HAProxy þjóninum með því að keyra eftirfarandi skipun.

# dnf install haproxy

7. Næst skaltu ræsa HAProxy þjónustuna, gera henni kleift að ræsast sjálfkrafa við ræsingu kerfisins og staðfesta stöðu hennar.

# systemctl start haproxy
# systemctl enable haproxy
# systemctl status haproxy

8. Nú munum við stilla HAProxy með því að nota eftirfarandi stillingarskrá.

# vi /etc/haproxy/haproxy.cfg

Stillingarskránni er skipt í fjóra meginhluta.

  • almennar stillingar – setur færibreytur fyrir allt ferlið.
  • sjálfgefin – þessi hluti setur sjálfgefnar færibreytur fyrir alla aðra hluta eftir yfirlýsingu hans.
  • framenda – þessi hluti lýsir safni hlustunarinnstungna sem samþykkja tengingar viðskiptavinar.
  • Backend – þessi hluti lýsir hópi netþjóna sem proxy-þjónninn mun tengjast við áframsendingar á komandi tengingum.

Til að skilja valkostina undir alþjóðlegum stillingum og sjálfgefnum stillingum, lestu HAProxy skjölin (tengill í lok greinarinnar). Fyrir þessa handbók munum við nota sjálfgefnar stillingar.

9. Þegar HAProxy er einu sinni komið fyrir mun það gegna mikilvægu hlutverki í upplýsingatækniinnviðum þínum, þannig að stilla skógarhögg fyrir það er grunnkrafa; þetta gerir þér kleift að fá innsýn um hverja tengingu við bakenda vefþjóna þína.

Log færibreytan (auðkennd á eftirfarandi skjámynd) lýsir yfir alþjóðlegum Syslog miðlara (eins og rsyslog sjálfgefið í CentOS) sem mun taka á móti annálsskilaboðum. Hér er hægt að lýsa yfir fleiri en einum netþjóni.

Sjálfgefin uppsetning vísar á localhost (127.0.0.1) og local2 er sjálfgefinn aðstöðukóði sem notaður er til að auðkenna HAProxy logskilaboð undir rsyslog.

10. Næst þarftu að segja rsyslog þjóninum hvernig á að taka á móti og vinna úr HAProxy logskilaboðum. Opnaðu rsyslog stillingarskrána í /etc/rsyslog.conf eða búðu til nýja skrá í /etc/rsyslog.d möppunni, til dæmis /etc/rsyslog.d/haproxy.conf.

# vi /etc/rsyslog.d/haproxy.conf

Afritaðu og límdu eftirfarandi uppsetningu til að safna log með UDP á sjálfgefna tengi 514.

$ModLoad imudp 
$UDPServerAddress 127.0.0.1 
$UDPServerRun 514 

Bættu einnig þessum línum við til að gefa rsyslog fyrirmæli um að skrifa í tvær aðskildar annálaskrár byggðar á alvarleika, þar sem local2 er aðstöðukóði skilgreindur í HAProxy stillingunum hér að ofan.

local2.* 	/var/log/haproxy-traffic.log 
local2.notice 	/var/log/haproxy-admin.log

11. Vistaðu skrána og lokaðu henni. Endurræstu síðan rsyslog þjónustuna til að beita nýlegum breytingum.

# systemctl restart rsyslog

12. Í þessum hluta munum við sýna fram á hvernig á að stilla framhlið og bakenda umboð. Farðu aftur í HAProxy stillingarskrána og breyttu sjálfgefnum framenda- og bakendahlutum eins og hér segir. Við munum ekki fara í nákvæma útskýringu á hverri færibreytu, þú getur alltaf vísað í opinberu skjölin.

Eftirfarandi uppsetning skilgreinir hlustunarhluta sem notaður er til að þjóna HAProxy Stats síðunni. Bindingsbreytan úthlutar hlustanda á tiltekið IP-tölu (* fyrir alla í þessu tilfelli) og gátt (9000).

Stilling tölfræði virkja gerir tölfræðisíðuna virka sem verður opnuð með URI /stats (þ.e. http://server_ip:9000/stats).

Auðkenningarstillingin fyrir tölfræði er notuð til að bæta við grunnauðkenningu þegar þú opnar síðuna (skipta um haproxy og [email  með notandanafni og lykilorði að eigin vali).

listen stats
    bind *:9000
    stats enable
    stats hide-version
    stats uri /stats
    stats admin if LOCALHOST
    stats auth haproxy:[email 

13. Næsta uppsetning skilgreinir framendahluta sem kallast TL (þú getur gefið upp nafn sem þú vilt). Mode færibreytan skilgreinir haminn sem HAProxy starfar í.

Acl (Access Control List) færibreytan er notuð til að taka ákvörðun byggða á efni sem dregið er úr beiðninni. Í þessu dæmi er beiðnin talin venjuleg HTTP ef hún er ekki gerð í gegnum SSL.

Síðan er http-request set-header stillingin notuð til að bæta HTTP haus við beiðnina. Þetta hjálpar til við að upplýsa Nginx um að upphaflega beiðnin hafi verið gerð í gegnum HTTP (eða í gegnum höfn 80).

Default_backend eða use_backend tilskipunin skilgreinir bakendaþjónana, í þessu tilviki, vísað til af TL_web_servers.

Athugaðu að HAProxy mun skila „503 Service Unavailable error“ ef beiðni er ekki send með use_backend eða default_backend tilskipun.

frontend TL
    bind *:80
    mode http
    acl http  ssl_fc,not
    http-request set-header X-Forwarded-Protocol http if http
    default_backend TL_web_servers

14. Síðan þurfum við að skilgreina bakendahluta þar sem jafnvægisstillingin skilgreinir hvernig HAProxy velur bakendaþjónana til að vinna úr beiðni ef engin þrautseigjaaðferð hnekkir því vali.

Vafrakökutilskipunin gerir vafraköku byggða á þrautseigju, hún gefur HAProxy fyrirmæli um að senda vafraköku sem heitir SERVERID til viðskiptavinarins og að tengja það við auðkenni miðlarans sem gaf upphafssvarið.

Miðlaratilskipunin er notuð til að skilgreina andstreymisþjónana á sniðinu sever_name (t.d. websrv1), server_IP:port og valkostir.

Einn lykilvalkostur er athuga sem segir HAProxy að halda áfram að athuga hvort netþjónn sé tiltækur og tilkynna á tölfræðisíðunni.

backend TL_web_servers
    mode http
    balance roundrobin
    option  httpchk HEAD /
    cookie SERVERUID insert indirect nocache
    server  websrv1 10.42.0.200:80 cookie websrv1 check
    server  websrv2 10.42.0.21:80  cookie websrv2 check
    server  websrv3 10.42.0.34:80  cookie websrv3 check

Skrifaðu athugasemd við aðra framenda- og bakendahluta eins og sýnt er á skjámyndinni sem fylgir. Vistaðu skrána og lokaðu henni.

15. Endurræstu nú HAProxy þjónustuna til að beita nýju breytingunum.

# systemctl restart haproxy

16. Næst skaltu ganga úr skugga um að HTTP (gátt 80) og HTTPS (gátt 433) séu opnaðar í eldveggnum til að samþykkja beiðnir viðskiptavinar eins og hér segir. Opnaðu einnig port 9000 í eldveggnum til að fá aðgang að tölfræðisíðunni og endurhlaða eldveggstillingarnar.

# firewall-cmd --zone=public --permanent --add-service=http
# firewall-cmd --zone=public --permanent –add-service=https
# firewall-cmd --zone=public --permanent --add-port=9000/tcp
# firewall-cmd --reload

Skref 3: Prófa uppsetningu HAProxy og skoða tölfræði

17. Nú er kominn tími til að prófa HAPrxoy uppsetninguna. Á staðbundnu skrifborðsvélinni þar sem þú ert að fá aðgang að öllum netþjónum skaltu bæta við eftirfarandi línu í /etc/hosts skránni til að gera okkur kleift að nota dummy síðulénið.

10.42.0.247  www.tecmint.lan

18. Opnaðu síðan vafra og farðu með því að nota annað hvort vistfang netþjónsins eða lén vefsvæðisins.

http://10.42.0.247/
OR
http://www.tecmint.lan/

19. Notaðu eftirfarandi heimilisfang til að fá aðgang að HAProxy tölfræðisíðunni.

http://10.42.0.247:9000/stats

Notaðu síðan notandanafnið og lykilorðið sem þú skilgreindir í HAProxy stillingarskránni (sjá breytu fyrir statsauth).

Eftir árangursríka innskráningu muntu lenda á HAProxy tölfræðisíðunni sem sýnir þér mælikvarða sem ná yfir heilsu netþjónanna þinna, núverandi beiðnahlutfall, viðbragðstíma og svo margt fleira.

Til að sýna fram á hvernig stöðuskýrslan virkar varðandi litakóðana, höfum við sett einn af bakendaþjónunum.

Skref 4: Stilla HTTPS í HAProxy með því að nota sjálfundirritað SSL vottorð

20. Í þessum lokakafla munum við sýna hvernig á að stilla SSL/TLS til að tryggja öll samskipti milli HAProxy netþjónsins og biðlarans. HAProxy styður fjórar helstu HTTPS stillingarstillingar, en fyrir þessa handbók munum við nota SSL/TLS afhleðslu.

Í SSL/TLS afhleðsluham, leysir HAProxy umferðina á biðlarahlið og tengist í skýrri umferð við bakendaþjónana.

Við byrjum á því að búa til vottorðið og lykilinn eins og sýnt er (svaraðu spurningunum í samræmi við það miðað við upplýsingar um fyrirtækið þitt meðan á skírteinisgerðinni stendur, eins og auðkennt er á skjámyndinni).

# mkdir /etc/ssl/tecmint.lan
# cd /etc/ssl/tecmint.lan/
# openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/ssl/tecmint.lan.key -out /etc/ssl/tecmint.lan.crt
# cd /etc/ssl/tecmint.lan/
# cat tecmint.crt tecmint.key >tecmint.pem
# ls -l

21. Næst skaltu opna HAProxy stillingarskrána (/etc/haproxy/haproxy.cfg) og breyta framendahlutanum.

frontend TL
    bind *:80
    bind *:443 ssl crt /etc/ssl/tecmint.lan/tecmint.pem
    redirect  scheme  https  if  !{ ssl_fc }
    mode http
    acl http  ssl_fc,not
    acl https ssl_fc
    http-request set-header X-Forwarded-Protocol http if http
    http-request set-header X-Forwarded-Protocol https if https
    default_backend TL_web_servers

Vistaðu skrána og lokaðu henni.

22. Endurræstu síðan HAProxy þjónustuna til að beita nýju breytingunum.

# systemctl restart haproxy.service

23. Næst skaltu opna vafra og reyna að komast inn á síðuna einu sinni enn. Vafrinn mun sýna villu vegna sjálfsundirritaðs vottorðs, smelltu á Advanced til að halda áfram.

Það er allt í bili! Sérhvert vefforrit hefur sitt eigið sett af kröfum, þú þarft að hanna og stilla álagsjafnvægi til að henta upplýsingatækniinnviðum þínum og kröfum forritsins.

Til að fá meiri innsýn í suma af stillingarvalkostunum sem notaðir eru í þessari handbók, og almennt hvernig á að nota HAProxy, skaltu skoða opinbera HAProxy fyrirtækjaútgáfuskjölin. Þú getur sent inn allar spurningar eða hugsanir í gegnum athugasemdareyðublaðið hér að neðan.