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.