Jinsi ya Kusanidi HAProxy kama Kisawazisha cha Kupakia kwa Nginx kwenye CentOS 8


Ili kuhakikisha upatikanaji wa juu zaidi wa programu ya wavuti, uimara na utendakazi wa hali ya juu, sasa ni jambo la kawaida kutekeleza teknolojia zinazoanzisha upungufu, kama vile kuunganisha seva na kusawazisha upakiaji. Kwa mfano, kusanidi kundi la seva ambazo zote zinaendesha programu/programu sawa na kisha kupeleka visawazisha mizigo mbele yao ili kusambaza trafiki.

HAProxy ni chanzo huria, chenye nguvu, utendakazi wa hali ya juu, kinachotegemewa, salama na kinachotumika sana cha kusawazisha upakiaji cha TCP/HTTP, seva ya proksi na kisimamishaji cha SSL/TLS kilichoundwa kwa tovuti za trafiki nyingi sana. Inatumika vizuri kwenye Linux, Solaris, FreeBSD, OpenBSD na mifumo ya uendeshaji ya AIX.

Mwongozo huu unaonyesha jinsi ya kusanidi kisawazisha kilichojitolea cha upatikanaji wa juu na HAProxy kwenye CentOS 8 ili kudhibiti trafiki katika kundi la seva za wavuti za NGINX. Inaonyesha pia jinsi ya kusanidi kusitishwa kwa SSL/TLS katika HAProxy.

Jumla ya seva 4 zilizo na usakinishaji mdogo wa CentOS 8.

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

Hatua ya 1: Kusanidi Seva ya HTTP ya Nginx kwenye Mashine za Wateja

1. Ingia katika mashine zako zote za mteja za CentOS 8 na usakinishe seva ya wavuti ya Nginx ukitumia kidhibiti kifurushi cha dnf kama inavyoonyeshwa.

# dnf install Nginx

2. Ifuatayo, anza huduma ya Nginx, kwa sasa, iwezeshe kuanza moja kwa moja kwenye boot ya mfumo na uhakikishe kuwa iko juu na inaendesha kwa kuangalia hali yake, kwa kutumia amri za systemctl (fanya hili kwenye mashine zote za mteja).

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

3. Pia, ikiwa huduma ya firewalld inafanya kazi kwenye mashine zote za mteja (ambazo unaweza kuangalia kwa kuendesha systemctl start firewalld), ni lazima uongeze huduma za HTTP na HTTPS katika usanidi wa ngome ili kuruhusu maombi kutoka kwa kisawazisha mzigo kupita kwenye ngome. kwa seva za wavuti za Nginx. Kisha pakia upya huduma ya firewall ili kutekeleza mabadiliko mapya (fanya hivi kwenye mashine zote za mteja).

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

4. Kisha, fungua kivinjari kwenye mashine za karibu nawe na ujaribu ikiwa usakinishaji wa Nginx unafanya kazi vizuri. Tumia IP za mteja kuvinjari, mara tu unapoona ukurasa wa jaribio la Nginx, inamaanisha kuwa seva ya wavuti iliyosakinishwa kwenye mashine ya mteja inafanya kazi vizuri.

5. Kisha, tunahitaji kuunda kurasa za majaribio kwenye mashine za mteja ambazo tutatumia baadaye ili kupima usanidi wa HAProxy.

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

Hatua ya 2: Kusakinisha na Kusanidi Seva ya HAProxy kwenye CentOS 8

6. Sasa weka kifurushi cha HAProxy kwenye seva ya HAProxy kwa kuendesha amri ifuatayo.

# dnf install haproxy

7. Ifuatayo, anza huduma ya HAProxy, uiwezesha kuanza kiotomatiki kwenye boot ya mfumo na uhakikishe hali yake.

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

8. Sasa tutasanidi HAProxy kwa kutumia faili ifuatayo ya usanidi.

# vi /etc/haproxy/haproxy.cfg

Faili ya usanidi imegawanywa katika sehemu kuu nne.

  • mipangilio ya kimataifa - huweka vigezo vya mchakato mzima.
  • chaguo-msingi - sehemu hii inaweka vigezo chaguo-msingi kwa sehemu nyingine zote kufuatia tamko lake.
  • mbele - sehemu hii inaeleza seti ya soketi za kusikiliza zinazokubali miunganisho ya mteja.
  • Nyuma - sehemu hii inaeleza seti ya seva ambazo proksi itaunganishwa ili kusambaza miunganisho inayoingia.

Ili kuelewa chaguo chini ya mipangilio ya kimataifa na chaguo-msingi, soma hati za HAProxy (kiungo kilichotolewa mwishoni mwa makala). Kwa mwongozo huu, tutatumia chaguo-msingi.

9. HAProksi itakapotumwa itachukua jukumu kubwa katika miundombinu yako ya TEHAMA, hivyo basi kusanidi ukataji miti kwa ajili yake ni hitaji la msingi; hii hukuruhusu kupata maarifa kuhusu kila muunganisho kwa seva zako za nyuma za wavuti.

Kigezo cha kumbukumbu (kilichoangaziwa katika picha ya skrini ifuatayo) inatangaza seva ya kimataifa ya Syslog (kama vile rsyslog chaguomsingi katika CentOS) ambayo itapokea ujumbe wa kumbukumbu. Zaidi ya seva moja inaweza kutangazwa hapa.

Mipangilio chaguo-msingi inaelekeza kwa mwenyeji (127.0.0.1) na local2 ndio msimbo chaguo-msingi wa kituo unaotumiwa kutambua ujumbe wa kumbukumbu wa HAProxy chini ya rsyslog.

10. Kisha, unahitaji kuwaambia seva ya rsyslog jinsi ya kupokea na kuchakata ujumbe wa kumbukumbu wa HAProxy. Fungua faili ya usanidi ya rsyslog kwa /etc/rsyslog.conf au unda faili mpya ndani ya saraka /etc/rsyslog.d, kwa mfano /etc/rsyslog.d/haproxy.conf.

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

Nakili na ubandike usanidi ufuatao ili kukusanya kumbukumbu na UDP kwenye mlango chaguomsingi 514.

$ModLoad imudp 
$UDPServerAddress 127.0.0.1 
$UDPServerRun 514 

Pia ongeza mistari hii kuelekeza rsyslog kuandika kwa faili mbili tofauti za kumbukumbu kulingana na ukali, ambapo local2 ndio nambari ya kituo iliyofafanuliwa katika usanidi wa HAProxy hapo juu.

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

11. Hifadhi faili na uifunge. Kisha anza tena huduma ya rsyslog ili kutumia mabadiliko ya hivi majuzi.

# systemctl restart rsyslog

12. Katika sehemu hii, tutaonyesha jinsi ya kusanidi proksi za mbele na za nyuma. Rudi kwenye faili ya usanidi ya HAProxy na urekebishe sehemu za msingi za mbele na za nyuma kama ifuatavyo. Hatutaingia katika maelezo ya kina ya kila parameter, unaweza kurejelea nyaraka rasmi kila wakati.

Usanidi ufuatao unafafanua sehemu ya kusikiliza inayotumika kuhudumia ukurasa wa HAProxy Stats. Kigezo cha kuunganisha kinampa msikilizaji anwani fulani ya IP (* kwa wote katika kesi hii) na mlango (9000).

Mpangilio wa kuwezesha takwimu huwezesha ukurasa wa takwimu ambao utafikiwa kwa kutumia URI /stats (yaani http://server_ip:9000/stats).

Mipangilio ya uthibitishaji wa takwimu hutumika kuongeza uthibitishaji msingi unapofikia ukurasa (badilisha haproxy na [email  na jina la mtumiaji na nenosiri ulilochagua).

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

13. Usanidi unaofuata unafafanua sehemu ya mbele inayoitwa TL (unaweza kutoa jina la kupenda kwako). Kigezo cha modi kinafafanua hali ya HAProxy inafanya kazi ndani.

Kigezo cha acl (Orodha ya Udhibiti wa Ufikiaji) hutumiwa kufanya uamuzi kulingana na maudhui yaliyotolewa kwenye ombi. Katika mfano huu, ombi linachukuliwa kuwa HTTP wazi ikiwa halijafanywa kwa kutumia SSL.

Kisha mpangilio wa http-request set-header hutumiwa kuongeza kichwa cha HTTP kwa ombi. Hii inasaidia kufahamisha Nginx kuwa ombi la awali lilifanywa kupitia HTTP (au kupitia bandari 80).

Maelekezo_ya_chaguo-msingi au use_backend hufafanua seva za nyuma, katika hali hii, zinazorejelewa na seva_za_zamani za TL_web.

Kumbuka kuwa HAProxy itarejesha \hitilafu ya Huduma ya 503 Haipatikani ikiwa ombi halijatekelezwa na use_backend au mwongozo wa default_backend.

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. Kisha tunahitaji kufafanua sehemu ya nyuma ambapo mpangilio wa salio hufafanua jinsi HAProxy huchagua seva za nyuma ili kushughulikia ombi ikiwa hakuna mbinu ya kudumu inayobatilisha uteuzi huo.

Maagizo ya kidakuzi huwezesha uendelevu kulingana na vidakuzi, inaagiza HAProxy kutuma kidakuzi kinachoitwa SERVERID kwa mteja na kukihusisha na kitambulisho cha seva kilichotoa jibu la awali.

Maagizo ya seva hutumika kufafanua seva za juu katika umbizo la sever_name (k.m. websrv1), server_IP:mlango na chaguo.

Chaguo moja muhimu ni kuangalia ambayo inaambia HAProxy kuendelea kuangalia juu ya upatikanaji wa seva na kuripoti kwenye ukurasa wa takwimu.

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

Toa maoni kwa sehemu nyingine zozote za mandhari ya mbele na nyuma kama inavyoonyeshwa kwenye picha ya skrini inayofuata. Hifadhi faili na uifunge.

15. Sasa anzisha upya huduma ya HAProxy ili kutumia mabadiliko mapya.

# systemctl restart haproxy

16. Kisha, hakikisha kuwa huduma za HTTP (bandari 80) na HTTPS (bandari 433) zimefunguliwa kwenye ngome ili kukubali maombi ya mteja kama ifuatavyo. Pia, fungua mlango 9000 kwenye ngome ili kufikia ukurasa wa takwimu na upakie upya mipangilio ya ngome.

# 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

Hatua ya 3: Kujaribu Kuweka na Kutazama Takwimu za HAProxy

17. Sasa ni wakati wa kujaribu usanidi wa HAPrxoy. Kwenye mashine ya eneo-kazi la ndani ambapo unafikia seva zote kutoka, ongeza laini ifuatayo kwenye faili ya /etc/hosts ili kutuwezesha kutumia kikoa cha tovuti ya dummy.

10.42.0.247  www.tecmint.lan

18. Kisha fungua kivinjari na uabiri kwa kutumia anwani ya seva au kikoa cha tovuti.

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

19. Ili kufikia ukurasa wa takwimu wa HAProxy, tumia anwani ifuatayo.

http://10.42.0.247:9000/stats

Kisha tumia jina la mtumiaji na nenosiri ulilofafanua katika faili ya usanidi ya HAProxy (rejelea kigezo cha uthibitishaji wa takwimu).

Baada ya kuingia kwa mafanikio, utatua kwenye ukurasa wa takwimu wa HAProxy unaokuonyesha vipimo vinavyoshughulikia afya ya seva zako, viwango vya sasa vya ombi, nyakati za majibu, na mengine mengi.

Ili kuonyesha jinsi ripoti ya hali inavyofanya kazi kuhusu misimbo ya rangi inavyofanya kazi, tumeweka mojawapo ya seva za nyuma.

Hatua ya 4: Kusanidi HTTPS katika HAProksi Kwa Kutumia Cheti cha SSL kilichojiandikisha

20. Katika sehemu hii ya mwisho, tutaonyesha jinsi ya kusanidi SSL/TLS ili kupata mawasiliano yote kati ya seva ya HAProxy na mteja. HAProxy inasaidia aina nne kuu za usanidi wa HTTPS, lakini kwa mwongozo huu, tutatumia upakiaji wa SSL/TLS.

Katika hali ya upakiaji ya SSL/TLS, HAProxy huamua trafiki upande wa mteja na kuunganishwa kwa uwazi kwenye seva za nyuma.

Tutaanza kwa kuunda cheti na ufunguo kama inavyoonyeshwa (jibu maswali ipasavyo kulingana na maelezo ya kampuni yako wakati wa kuunda cheti, kama inavyoonyeshwa kwenye picha ya skrini).

# 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. Kisha, fungua faili ya usanidi wa HAProxy (/etc/haproxy/haproxy.cfg) na uhariri sehemu ya mbele.

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

Hifadhi faili na uifunge.

22. Kisha anzisha upya huduma ya HAProxy ili kutumia mabadiliko mapya.

# systemctl restart haproxy.service

23. Kisha, fungua kivinjari na ujaribu kufikia tovuti tena. Kivinjari kitaonyesha hitilafu kwa sababu ya cheti cha kujiandikisha, bofya Kina ili kuendelea.

Ni hayo tu kwa sasa! Kila programu ya wavuti ina seti yake ya mahitaji, unahitaji kubuni na kusanidi kusawazisha mzigo ili kuendana na miundombinu yako ya TEHAMA na mahitaji ya programu.

Ili kupata maarifa zaidi kuhusu baadhi ya chaguo za usanidi zinazotumiwa katika mwongozo huu, na kwa ujumla jinsi ya kutumia HAProxy, angalia hati rasmi ya toleo la biashara la HAProxy. Unaweza kutuma maswali au mawazo yoyote kupitia fomu ya maoni iliyo hapa chini.