
Nini cha kufanya ikiwa nguvu ya seva moja haitoshi kusindika maombi yote, na mtengenezaji wa programu haitoi kusawazisha mzigo? Kuna chaguo nyingi, kutoka kwa ununuzi wa kusawazisha mzigo hadi kupunguza idadi ya maombi. Ambayo ni sahihi lazima iamuliwe na hali hiyo, kwa kuzingatia hali zilizopo. Katika makala hii tutakuambia nini unaweza kufanya ikiwa bajeti yako ni mdogo na una seva ya bure.
Kama mfumo ambao ulihitajika kupunguza mzigo kwenye mojawapo ya seva, tulichagua DLP (mfumo wa kuzuia uvujaji wa habari) kutoka kwa InfoWatch. Kipengele cha utekelezaji kilikuwa uwekaji wa kazi ya kusawazisha kwenye mojawapo ya seva za "kupambana".
Moja ya matatizo tuliyokumbana nayo ni kutoweza kutumia Chanzo NAT (SNAT). Kwa nini hii ilihitajika na jinsi tatizo lilitatuliwa, tutaelezea zaidi.
Kwa hivyo, mwanzoni mchoro wa kimantiki wa mfumo uliopo ulionekana kama hii:

Trafiki ya ICAP, SMTP, matukio kutoka kwa kompyuta za watumiaji yalichakatwa kwenye seva ya Traffic Monitor (TM). Wakati huo huo, seva ya hifadhidata ilikabiliana kwa urahisi na mzigo baada ya matukio ya usindikaji kwenye TM, lakini mzigo kwenye TM yenyewe ulikuwa mzito. Hii ilionekana kutokana na kuonekana kwa foleni ya ujumbe kwenye seva ya Kifuatilia Kifaa (DM), na vile vile kutoka kwa CPU na mzigo wa kumbukumbu kwenye TM.
Kwa mtazamo wa kwanza, ikiwa tunaongeza seva nyingine ya TM kwenye mpango huu, basi ICAP au DM inaweza kubadilishwa kwake, lakini tuliamua kutotumia njia hii, kwani uvumilivu wa makosa ulipunguzwa.
Maelezo ya suluhisho
Katika mchakato wa kutafuta suluhisho linalofaa, tulikaa kwenye programu iliyosambazwa kwa uhuru pamoja na . Kwa sababu keepalived hutatua tatizo la kuunda nguzo ya kushindwa na pia inaweza kudhibiti kisawazisha cha LVS.
Kile tulichotaka kufikia (kupunguza mzigo kwenye TM na kudumisha kiwango cha sasa cha uvumilivu wa makosa) kingefanya kazi kulingana na mpango ufuatao:

Wakati wa kuangalia utendaji, ikawa kwamba mkutano wa kawaida wa RedHat uliowekwa kwenye seva hauunga mkono SNAT. Kwa upande wetu, tulipanga kutumia SNAT ili kuhakikisha kuwa pakiti zinazoingia na majibu kwao yanatumwa kutoka kwa anwani sawa ya IP, vinginevyo tutapata picha ifuatayo:

Hili halikubaliki. Kwa mfano, seva ya wakala, ikiwa imetuma pakiti kwa anwani ya IP ya Virtual (VIP), itatarajia jibu kutoka kwa VIP, lakini katika kesi hii itatoka kwa IP2 kwa vipindi vilivyotumwa kwa chelezo. Suluhisho lilipatikana: ilihitajika kuunda jedwali lingine la uelekezaji kwenye chelezo na kuunganisha seva mbili za TM na mtandao tofauti, kama inavyoonyeshwa hapa chini:

Mipangilio
Tutatekeleza mpango wa seva mbili zilizo na huduma za ICAP, SMTP, TCP 9100 na usawazishaji wa mzigo uliowekwa kwenye mojawapo yao.
Tuna seva mbili za RHEL6, ambazo hazina za kawaida na vifurushi vingine vimeondolewa.
Huduma ambazo tunahitaji kusawazisha:
• ICAP - tcp 1344;
• SMTP – tcp 25.
Huduma ya usafirishaji wa trafiki kutoka DM - tcp 9100.
Kwanza, tunahitaji kupanga mtandao.
Anwani pepe ya IP (VIP):
• IP: 10.20.20.105.
Seva TM6_1:
• IP ya Nje: 10.20.20.101;
• IP ya Ndani: 192.168.1.101.
Seva TM6_2:
• IP ya Nje: 10.20.20.102;
• IP ya Ndani: 192.168.1.102.
Kisha tunawezesha usambazaji wa IP kwenye seva mbili za TM. Jinsi ya kufanya hivyo imeelezewa kwenye RedHat .
Tunaamua ni seva gani tutakuwa nayo ni moja kuu na ambayo itakuwa chelezo. Hebu bwana iwe TM6_1, chelezo iwe TM6_2.
Kwenye hifadhi rudufu tunaunda jedwali mpya la uelekezaji la mizani na sheria za uelekezaji:
[root@tm6_2 ~]echo 101 balancer >> /etc/iproute2/rt_tables
[root@tm6_2 ~]ip rule add from 192.168.1.102 table balancer
[root@tm6_2 ~]ip route add default via 192.168.1.101 table balancerAmri zilizo hapo juu hufanya kazi hadi mfumo uanzishwe tena. Ili kuhakikisha kuwa njia zimehifadhiwa baada ya kuwasha upya, unaweza kuziingiza /etc/rc.d/rc.local, lakini bora kupitia faili ya mipangilio /etc/sysconfig/network-scripts/route-eth1 (kumbuka: sintaksia tofauti inatumika hapa).
Sakinisha ukiwa hai kwenye seva zote za TM. Tulitumia rpmfind.net kama chanzo cha usambazaji:
[root@tm6_1 ~]#yum install https://rpmfind.net/linux/centos/6.10/os/x86_64/Packages/keepalived-1.2.13-5.el6_6.x86_64.rpmKatika mipangilio iliyohifadhiwa, tunaweka moja ya seva kama bwana, nyingine kama nakala rudufu. Kisha tunaweka VIP na huduma kwa kusawazisha mzigo. Faili ya mipangilio kawaida iko hapa: /etc/keepalived/keepalived.conf.
Mipangilio ya Seva ya TM1
vrrp_sync_group VG1 {
group {
VI_1
}
}
vrrp_instance VI_1 {
state MASTER
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51
priority 151
advert_int 1
authentication {
auth_type PASS
auth_pass example
}
virtual_ipaddress {
10.20.20.105
}
}
virtual_server 10.20.20.105 1344 {
delay_loop 6
lb_algo wrr
lb_kind NAT
protocol TCP
real_server 192.168.1.101 1344 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 1344
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.102 1344 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 1344
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.20.20.105 25 {
delay_loop 6
lb_algo wrr
lb_kind NAT
protocol TCP
real_server 192.168.1.101 25 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 25
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.102 25 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 25
nb_get_retry 3
delay_before_retry 3
}
}
}
virtual_server 10.20.20.105 9100 {
delay_loop 6
lb_algo wrr
lb_kind NAT
protocol TCP
real_server 192.168.1.101 9100 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 9100
nb_get_retry 3
delay_before_retry 3
}
}
real_server 192.168.1.102 9100 {
weight 1
TCP_CHECK {
connect_timeout 3
connect_port 9100
nb_get_retry 3
delay_before_retry 3
}
}
}Mipangilio ya Seva ya TM2
vrrp_sync_group VG1 {
group {
VI_1
}
}
vrrp_instance VI_1 {
state BACKUP
interface eth0
lvs_sync_daemon_inteface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass example
}
virtual_ipaddress {
10.20.20.105
}
}Tunaweka LVS kwenye bwana, ambayo itasawazisha trafiki. Haina maana kusakinisha sawazisha kwa seva ya pili, kwa kuwa tuna seva mbili tu katika usanidi.
[root@tm6_1 ~]##yum install https://rpmfind.net/linux/centos/6.10/os/x86_64/Packages/ipvsadm-1.26-4.el6.x86_64.rpmSawazisha itadhibitiwa na keepalived, ambayo tayari tumeisanidi.
Ili kukamilisha picha, hebu tuongeze kuweka hai ili kuanza kiotomatiki kwenye seva zote mbili:
[root@tm6_1 ~]#chkconfig keepalived onHitimisho
Kukagua matokeo
Wacha tuendelee kuishi kwenye seva zote mbili:
service keepalived startInakagua upatikanaji wa anwani pepe ya VRRP
Wacha tuhakikishe kuwa VIP iko kwenye bwana:

Na hakuna VIP kwenye chelezo:

Kutumia amri ya ping, tutaangalia upatikanaji wa VIP:

Sasa unaweza kuzima bwana na kuendesha amri tena ping.
Matokeo yanapaswa kubaki sawa, na kwenye chelezo tutaona VIP:

Kuangalia usawa wa huduma
Hebu tuchukue SMTP kwa mfano. Wacha tuzindue viunganisho viwili kwa 10.20.20.105 wakati huo huo:
telnet 10.20.20.105 25Kwa bwana tunapaswa kuona kwamba miunganisho yote miwili ni hai na imeunganishwa kwa seva tofauti:
[root@tm6_1 ~]#watch ipvsadm –Ln 
Kwa hivyo, tumetekeleza usanidi unaostahimili hitilafu wa huduma za TM kwa kusakinisha kisawazisha kwenye mojawapo ya seva za TM. Kwa mfumo wetu, hii ilipunguza mzigo kwenye TM kwa nusu, ambayo ilifanya iwezekanavyo kutatua tatizo la ukosefu wa usawa wa usawa kwa kutumia mfumo.
Mara nyingi, suluhisho hili linatekelezwa haraka na bila gharama za ziada, lakini wakati mwingine kuna idadi ya mapungufu na matatizo katika usanidi, kwa mfano, wakati wa kusawazisha trafiki ya UDP.
Chanzo: mapenzi.com
