CentOS 8-de Nginx üçin ýük balansy hökmünde HAProxy nädip sazlamaly


Web programmasynyň elýeterliligini, göwrümliligini we ýokary öndürijiligini üpjün etmek üçin indi serwer toparlanyşygy we ýük balansy ýaly artykmaçlygy girizýän tehnologiýalary ornaşdyrmak adaty zat. Mysal üçin, birmeňzeş programma (lar) bilen işleýän serwerler toparyny döretmek we traffigi paýlamak üçin olaryň öňünde ýük balanserlerini ýerleşdirmek.

HAProxy açyk çeşme, güýçli, ýokary öndürijilikli, ygtybarly, ygtybarly we giňden ulanylýan ýokary elýeterlilik TCP/HTTP ýük balanseri, proksi serwer we gaty ýokary traffik web sahypalary üçin gurlan SSL/TLS terminatory. Linux, Solaris, FreeBSD, OpenBSD we AIX operasiýa ulgamlarynda ygtybarly işleýär.

Bu gollanma, NGINX web serwerleriniň bir toparyndaky traffigi gözegçilikde saklamak üçin CentOS 8-de HAProxy bilen ýokary ýokary derejeli ýük balansyny nädip gurmalydygyny görkezýär. Şeýle hem, HAProxy-da SSL/TLS gutarmagyny nädip sazlamalydygyny görkezýär.

Minimal CentOS 8 gurnamaly jemi 4 serwer.

----------- 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

1-nji ädim: Müşderi maşynlarynda Nginx HTTP serwerini gurmak

1. CentOS 8 müşderi maşynlaryňyzyň hemmesine giriň we görkezilişi ýaly dnf paket dolandyryjysyny ulanyp, Nginx web serwerini guruň.

# dnf install Nginx

2. Ondan soň, Nginx hyzmatyny başlaň, häzirlikçe ulgam ýüklemesinden awtomatiki başlamaga we systemctl buýruklaryny ulanyp, ýagdaýyny barlap, işleýändigini tassyklamaga mümkinçilik beriň (muny ähli müşderi maşynlarynda ediň).

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

3. Mundan başga-da, firewalld hyzmaty ähli müşderi maşynlarynda işleýän bolsa (systemctl start firewalld işledip barlap bilersiňiz), ýük balanseriniň islegleriniň diwar diwaryndan geçmegine rugsat bermek üçin gorag diwary konfigurasiýasyna HTTP we HTTPS hyzmatlaryny goşmaly. Nginx web serwerlerine. Soňra täze üýtgeşmeleri amala aşyrmak üçin firewalld hyzmatyny täzeden açyň (muny ähli müşderi maşynlarynda ediň).

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

4. Ondan soň, ýerli maşynlarda web brauzerini açyň we Nginx gurnamagynyň gowy işleýändigini barlaň. Nginx synag sahypasyny göreniňizden soň, müşderi IP-ni ulanyň, müşderi maşynyna gurlan web serweriniň kadaly işleýändigini aňladýar.

5. Ondan soň, HAProxy sazlamasyny barlamak üçin soň ulanjak müşderi maşynlarynda synag sahypalaryny döretmeli.

----------- 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

2-nji ädim: CentOS 8-de HAProxy serwerini gurmak we sazlamak

6. Indi aşakdaky buýrugy işledip HAProxy serwerine HAProxy paketini guruň.

# dnf install haproxy

7. Ondan soň, HAProxy hyzmatyny başlaň, ulgam ýüklemesinden awtomatiki başlamaga we ýagdaýyny barlamaga mümkinçilik beriň.

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

8. Indi HAProxy-ny aşakdaky konfigurasiýa faýly bilen düzeris.

# vi /etc/haproxy/haproxy.cfg

Sazlama faýly dört esasy bölüme bölünýär.

  • global sazlamalar - prosesiň parametrlerini düzýär.
  • defolt - bu bölüm yglan edilenden soň beýleki bölümler üçin deslapky parametrleri kesgitleýär.
  • frontend - bu bölümde müşderi birikmelerini kabul edýän diňleýiş rozetkalarynyň toplumy beýan edilýär.
  • Backend - bu bölüm proksi gelýän birikmelere ugrukdyryljak serwerler toplumyny suratlandyrýar.

Global sazlamalar we deslapky görnüşlerdäki saýlawlara düşünmek üçin HAProxy resminamalaryny okaň (makalanyň ahyrynda berlen baglanyşyk). Bu gollanma üçin, başlangyçlary ulanarys.

9. “HAProxy” bir gezek ýerleşdirilende, IT infrastrukturaňyzda möhüm rol oýnar, şeýlelik bilen hasaba girmegi düzmek esasy talapdyr; bu, arka web serwerleriňize her bir baglanyşyk barada düşünje almaga mümkinçilik berýär.

Gündeligiň parametri (aşakdaky skrinshotda görkezilýär) gündelik habarlary aljak global Syslog serwerini (CentOS-daky deslapky rsyslog ýaly) yglan edýär. Bu ýerde birden köp serwer yglan edilip bilner.

Adaty konfigurasiýa ýerlihosty (127.0.0.1) görkezýär we ýerli2 rsyslog astyndaky HAProxy gündelik habarlaryny kesgitlemek üçin ulanylýan deslapky desga kody.

10. Ondan soň, rsyslog serwerine HAProxy gündelik habarlaryny nädip almalydygyny we gaýtadan işlemelidigini aýtmaly. Rsyslog konfigurasiýa faýlyny /etc/rsyslog.conf açyň ýa-da /etc/rsyslog.d bukjasynyň içinde täze faýl dörediň, mysal üçin /etc/rsyslog.d/haproxy.conf.

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

UDP bilen gündelik 514 portda gündelik ýygnamak üçin aşakdaky konfigurasiýany göçüriň.

$ModLoad imudp 
$UDPServerAddress 127.0.0.1 
$UDPServerRun 514 

Şeýle hem, rsyslog-a agyrlyga baglylykda iki sany aýratyn faýl ýazmagy öwretmek üçin şu setirleri goşuň, bu ýerde ýokardaky HAProxy konfigurasiýasynda kesgitlenen ýerli kody ýerli2.

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

11. Faýly ýazdyryň we ýapyň. Soňky üýtgeşmeleri ulanmak üçin rsyslog hyzmatyny täzeden açyň.

# systemctl restart rsyslog

12. Bu bölümde, öňdäki we yzky proksi nädip sazlamalydygyny görkezeris. HAProxy konfigurasiýa faýlyna gaýdyp, deslapky we yzky bölümleri aşakdaky ýaly üýtgediň. Her bir parametr barada jikme-jik düşündiriş bermeris, hemişe resmi resminamalara ýüz tutup bilersiňiz.

Aşakdaky konfigurasiýa HAProxy statistika sahypasyna hyzmat etmek üçin ulanylýan diňlemek bölümini kesgitleýär. Baglaýjy parametr, diňleýjini berlen IP adrese (bu ýagdaýda hemmeler üçin * ) we porta (9000) belleýär.

Statistikalar, URI/statistika (meselem, http:// server_ip: 9000/statistika ) ulanyp boljak statistika sahypasyna mümkinçilik berýär.

Statistikanyň awtor sazlamasy sahypa gireniňizde esasy tassyklamany goşmak üçin ulanylýar (gaproksi we [e-poçta bilen goralan] ulanyjy adyňyz we parolyňyz bilen çalşyň).

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

13. Indiki konfigurasiýa TL atly öňdäki bölümi kesgitleýär (halaýan adyňyzy berip bilersiňiz). Re modeim parametri HAProxy-nyň işleýän tertibini kesgitleýär.

Acl (Giriş Dolandyryş Sanawy) parametri haýyşdan alnan mazmuna esaslanyp karar bermek üçin ulanylýar. Bu mysalda, SSL-den ýok bolsa, haýyş ýönekeý HTTP hasaplanýar.

Soňra http-haýyş set-sözbaşy sazlamasy, haýyşa HTTP sözbaşy goşmak üçin ulanylýar. Bu, Nginx-e başlangyç haýyşyň HTTP-den (ýa-da 80-nji port arkaly) edilendigini habar bermäge kömek edýär.

Default_backend ýa-da use_backend direktiwasy, bu ýagdaýda TL_web_servers tarapyndan görkezilen arka serwerlerini kesgitleýär.

Isleg use_backend ýa-da default_backend görkezmesi bilen ugrukdyrylmasa, HAProxy\503 Hyzmat elýeterli däl ýalňyşlyk yzyna gaýtaryp berjekdigine üns beriň.

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. Soňra, HAProxy-nyň haýsydyr bir tutanýerlilik usuly şol saýlamany ýok etmese, haýyşy gaýtadan işlemek üçin arka serwerleri nädip saýlaýandygyny kesgitleýän arka bölümini kesgitlemeli.

Gutapjyk görkezmesi gutapjyk esasly tutanýerliligi üpjün edýär, HAProxy-a müşderä SERVERID atly gutapjygy ibermegi we başlangyç jogap beren serweriň şahsyýetnamasy bilen baglanyşmagy tabşyrýar.

Serwer direktiwasy, ýokarky serwerleri sever_name (meselem websrv1), server_IP: port we opsiýalar görnüşinde kesgitlemek üçin ulanylýar.

Bir esasy wariant, HAProxy-a serweriň bardygyny barlamagy we statistika sahypasynda hasabat bermegi tabşyrmakdyr.

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

Aşakdaky skrinshotda görkezilişi ýaly beýleki arka we arka bölümlerini düşündiriň. Faýly ýazdyryň we ýapyň.

15. Indi täze üýtgeşmeleri ulanmak üçin HAProxy hyzmatyny täzeden açyň.

# systemctl restart haproxy

16. Ondan soň, müşderiniň isleglerini aşakdaky ýaly kabul etmek üçin gorag diwarynda HTTP (port 80) we HTTPS (port 433) hyzmatlarynyň açylandygyna göz ýetiriň. Şeýle hem, statistika sahypasyna girmek we diwar gorag sazlamalaryny täzeden açmak üçin gorag diwaryndaky 9000 porty açyň.

# 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

3-nji ädim: HAProxy gurnamasyny barlamak we statistikany görmek

17. Indi HAPrxoy sazlamasyny barlamagyň wagty. Serhli serwerlere girýän ýerli iş stolunda, aç-açan saýt domenini ulanmaga mümkinçilik bermek üçin/etc/host faýlyna aşakdaky setiri goşuň.

10.42.0.247  www.tecmint.lan

18. Soňra brauzeri açyň we serwer salgysyny ýa-da sahypa domenini ulanyp geziň.

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

19. HAProxy statistika sahypasyna girmek üçin aşakdaky adresi ulanyň.

http://10.42.0.247:9000/stats

Soňra HAProxy konfigurasiýa faýlynda kesgitlän ulanyjy adyňyzy we parolyňyzy ulanyň (statistika auth parametrine serediň).

Üstünlikli girişden soň, serwerleriňiziň saglygyny, häzirki haýyş nyrhlaryny, jogap wagtlaryny we başga-da köp zatlary görkezýän HAProxy statistika sahypasyna girersiňiz.

Reňk kodlarynyň işleýşi barada hasabat hasabatynyň nähili işleýändigini görkezmek üçin yzky serwerlerden birini goýduk.

4-nji ädim: Öz-özüňe gol çekilen SSL şahadatnamasyny ulanyp, HAProxy-da HTTPS sazlamak

20. Bu soňky bölümde, HAProxy serweri bilen müşderiniň arasyndaky ähli aragatnaşyklary goramak üçin SSL/TLS-i nädip sazlamalydygyny görkezeris. HAProxy dört sany esasy HTTPS konfigurasiýa reesimini goldaýar, ýöne bu gollanma üçin SSL/TLS ýüklemesini ulanarys.

SSL/TLS düşüriş tertibinde HAProxy müşderi tarapyndaky traffigi kesgitleýär we yzky serwerlere açyk traffige birikýär.

Görkezilişi ýaly şahadatnamany we açary döretmek bilen başlarys (şahadatnamany döretmek döwründe kompaniýanyň jikme-jikliklerine esaslanyp, skrinshotda görkezilişi ýaly jogap beriň).

# 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. Ondan soň, HAProxy konfigurasiýa faýlyny (/etc/haproxy/haproxy.cfg) açyň we öňdäki bölümi redaktirläň.

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

Faýly ýazdyryň we ýapyň.

22. Soňra täze üýtgeşmeleri ulanmak üçin HAProxy hyzmatyny täzeden açyň.

# systemctl restart haproxy.service

23. Ondan soň web brauzerini açyň we sahypa ýene bir gezek girip görüň. Brauzer öz-özüne gol çekilen şahadatnama sebäpli ýalňyşlyk görkezer, dowam etmek üçin Advanced düwmesine basyň.

Bularyň hemmesi häzirlikçe! Her web programmasynyň öz talaplary bar, IT infrastrukturasyna we amaly talaplaryna laýyk ýük balansyny düzmeli we sazlamaly.

Bu gollanmada ulanylýan käbir konfigurasiýa opsiýalary we umuman HAProxy-ny nädip ulanmak barada has giňişleýin maglumat almak üçin resmi HAProxy kärhanasynyň wersiýa resminamalaryna serediň. Islän soraglaryňyzy ýa-da pikirleriňizi aşakdaky seslenme formasy arkaly iberip bilersiňiz.