అన్ని అభ్యర్థనలను ప్రాసెస్ చేయడానికి ఒక సర్వర్ యొక్క శక్తి సరిపోకపోతే మరియు సాఫ్ట్వేర్ తయారీదారు లోడ్ బ్యాలెన్సింగ్ను అందించకపోతే ఏమి చేయాలి? లోడ్ బ్యాలెన్సర్ను కొనుగోలు చేయడం నుండి అభ్యర్థనల సంఖ్యను పరిమితం చేయడం వరకు అనేక ఎంపికలు ఉన్నాయి. ఇప్పటికే ఉన్న పరిస్థితులను పరిగణనలోకి తీసుకొని పరిస్థితిని బట్టి ఏది సరైనదో నిర్ణయించాలి. మీ బడ్జెట్ పరిమితంగా ఉంటే మరియు మీకు ఉచిత సర్వర్ ఉంటే మీరు ఏమి చేయగలరో ఈ కథనంలో మేము మీకు తెలియజేస్తాము.
సర్వర్లలో ఒకదానిపై లోడ్ను తగ్గించాల్సిన అవసరం ఉన్న సిస్టమ్గా, మేము InfoWatch నుండి DLP (సమాచారం లీకేజీ నివారణ వ్యవస్థ)ని ఎంచుకున్నాము. అమలు యొక్క లక్షణం "పోరాట" సర్వర్లలో ఒకదానిలో బ్యాలెన్సర్ ఫంక్షన్ను ఉంచడం.
మేము ఎదుర్కొన్న సమస్యల్లో ఒకటి సోర్స్ NAT (SNAT)ని ఉపయోగించలేకపోవడం. ఇది ఎందుకు అవసరం మరియు సమస్య ఎలా పరిష్కరించబడింది, మేము మరింత వివరిస్తాము.
కాబట్టి, ప్రారంభంలో ఇప్పటికే ఉన్న సిస్టమ్ యొక్క తార్కిక రేఖాచిత్రం ఇలా ఉంది:
ICAP ట్రాఫిక్, SMTP, వినియోగదారు కంప్యూటర్ల నుండి ఈవెంట్లు ట్రాఫిక్ మానిటర్ (TM) సర్వర్లో ప్రాసెస్ చేయబడ్డాయి. అదే సమయంలో, TMలో ఈవెంట్లను ప్రాసెస్ చేసిన తర్వాత డేటాబేస్ సర్వర్ సులభంగా లోడ్ను ఎదుర్కొంటుంది, అయితే TMపైనే లోడ్ ఎక్కువగా ఉంది. పరికర మానిటర్ (DM) సర్వర్లో సందేశం క్యూ కనిపించడం, అలాగే TMపై CPU మరియు మెమరీ లోడ్ నుండి ఇది స్పష్టంగా కనిపించింది.
మొదటి చూపులో, మేము ఈ స్కీమ్కు మరొక TM సర్వర్ని జోడిస్తే, ICAP లేదా DM దానికి మారవచ్చు, కానీ తప్పు సహనం తగ్గినందున మేము ఈ పద్ధతిని ఉపయోగించకూడదని నిర్ణయించుకున్నాము.
పరిష్కారం యొక్క వివరణ
తగిన పరిష్కారం కోసం శోధించే ప్రక్రియలో, మేము ఉచితంగా పంపిణీ చేయబడిన సాఫ్ట్వేర్పై స్థిరపడ్డాము
మేము సాధించాలనుకున్నది (TMపై లోడ్ని తగ్గించడం మరియు ప్రస్తుత స్థాయి లోపాలను తట్టుకోవడం) కింది పథకం ప్రకారం పని చేసి ఉండాలి:
కార్యాచరణను తనిఖీ చేస్తున్నప్పుడు, సర్వర్లలో ఇన్స్టాల్ చేయబడిన కస్టమ్ RedHat అసెంబ్లీ SNATకి మద్దతు ఇవ్వదని తేలింది. మా విషయంలో, ఇన్కమింగ్ ప్యాకెట్లు మరియు వాటికి ప్రతిస్పందనలు ఒకే IP చిరునామా నుండి పంపబడుతున్నాయని నిర్ధారించుకోవడానికి SNATని ఉపయోగించాలని మేము ప్లాన్ చేసాము, లేకుంటే మేము ఈ క్రింది చిత్రాన్ని పొందుతాము:
ఇది ఆమోదయోగ్యం కాదు. ఉదాహరణకు, ప్రాక్సీ సర్వర్, వర్చువల్ IP (VIP) చిరునామాకు ప్యాకెట్లను పంపి, VIP నుండి ప్రతిస్పందనను ఆశించవచ్చు, అయితే ఈ సందర్భంలో బ్యాకప్కి పంపిన సెషన్ల కోసం IP2 నుండి వస్తుంది. ఒక పరిష్కారం కనుగొనబడింది: క్రింద చూపిన విధంగా బ్యాకప్లో మరొక రౌటింగ్ పట్టికను సృష్టించడం మరియు రెండు TM సర్వర్లను ప్రత్యేక నెట్వర్క్తో కనెక్ట్ చేయడం అవసరం:
సెట్టింగులను
మేము ICAP, SMTP, TCP 9100 సేవలతో రెండు సర్వర్ల పథకాన్ని అమలు చేస్తాము మరియు వాటిలో ఒకదానిపై లోడ్ బ్యాలెన్సర్ని ఇన్స్టాల్ చేస్తాము.
మా వద్ద రెండు RHEL6 సర్వర్లు ఉన్నాయి, వాటి నుండి ప్రామాణిక రిపోజిటరీలు మరియు కొన్ని ప్యాకేజీలు తీసివేయబడ్డాయి.
మేము బ్యాలెన్స్ చేయాల్సిన సేవలు:
• ICAP – tcp 1344;
• SMTP – tcp 25.
DM నుండి ట్రాఫిక్ ప్రసార సేవ - tcp 9100.
మొదట, మేము నెట్వర్క్ను ప్లాన్ చేయాలి.
వర్చువల్ IP చిరునామా (VIP):
• IP: 10.20.20.105.
సర్వర్ TM6_1:
• బాహ్య IP: 10.20.20.101;
• అంతర్గత IP: 192.168.1.101.
సర్వర్ TM6_2:
• బాహ్య IP: 10.20.20.102;
• అంతర్గత IP: 192.168.1.102.
అప్పుడు మేము రెండు TM సర్వర్లలో IP ఫార్వార్డింగ్ను ప్రారంభిస్తాము. దీన్ని ఎలా చేయాలో RedHatలో వివరించబడింది
మేము కలిగి ఉన్న సర్వర్లలో ఏది ప్రధానమో మరియు ఏది బ్యాకప్గా ఉండాలో మేము నిర్ణయిస్తాము. మాస్టర్ TM6_1గా ఉండనివ్వండి, బ్యాకప్ TM6_2గా ఉండనివ్వండి.
బ్యాకప్లో మేము కొత్త బ్యాలెన్సర్ రూటింగ్ టేబుల్ మరియు రూటింగ్ నియమాలను సృష్టిస్తాము:
[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 balancer
సిస్టమ్ రీబూట్ అయ్యే వరకు పై ఆదేశాలు పని చేస్తాయి. రీబూట్ చేసిన తర్వాత మార్గాలు భద్రపరచబడిందని నిర్ధారించుకోవడానికి, మీరు వాటిని నమోదు చేయవచ్చు /etc/rc.d/rc.local, కానీ సెట్టింగుల ఫైల్ ద్వారా మంచిది /etc/sysconfig/network-scripts/route-eth1 (గమనిక: విభిన్న వాక్యనిర్మాణం ఇక్కడ ఉపయోగించబడుతుంది).
రెండు TM సర్వర్లలో కీప్అలైవ్ను ఇన్స్టాల్ చేయండి. మేము పంపిణీ మూలంగా rpmfind.netని ఉపయోగించాము:
[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.rpm
Keepalived సెట్టింగ్లలో, మేము సర్వర్లలో ఒకదాన్ని మాస్టర్గా, మరొకటి బ్యాకప్గా కేటాయిస్తాము. అప్పుడు మేము లోడ్ బ్యాలెన్సింగ్ కోసం VIP మరియు సేవలను సెట్ చేస్తాము. సెట్టింగుల ఫైల్ సాధారణంగా ఇక్కడ ఉంది: /etc/keepalived/keepalived.conf.
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
}
}
}
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
}
}
మేము మాస్టర్లో LVSని ఇన్స్టాల్ చేస్తాము, ఇది ట్రాఫిక్ను సమతుల్యం చేస్తుంది. రెండవ సర్వర్ కోసం బ్యాలెన్సర్ను ఇన్స్టాల్ చేయడంలో అర్ధమే లేదు, ఎందుకంటే మనకు కాన్ఫిగరేషన్లో కేవలం రెండు సర్వర్లు మాత్రమే ఉన్నాయి.
[root@tm6_1 ~]##yum install https://rpmfind.net/linux/centos/6.10/os/x86_64/Packages/ipvsadm-1.26-4.el6.x86_64.rpm
మేము ఇప్పటికే కాన్ఫిగర్ చేసిన Keepalived ద్వారా balancer నిర్వహించబడుతుంది.
చిత్రాన్ని పూర్తి చేయడానికి, రెండు సర్వర్లలో ఆటోస్టార్ట్కు Keepalivedని జోడిద్దాం:
[root@tm6_1 ~]#chkconfig keepalived on
తీర్మానం
ఫలితాలను తనిఖీ చేస్తోంది
రెండు సర్వర్లలో కీప్అలైవ్గా రన్ చేద్దాం:
service keepalived start
VRRP వర్చువల్ చిరునామా లభ్యతను తనిఖీ చేస్తోంది
VIP మాస్టర్లో ఉన్నారని నిర్ధారించుకుందాం:
మరియు బ్యాకప్లో VIP లేదు:
పింగ్ కమాండ్ ఉపయోగించి, మేము VIP లభ్యతను తనిఖీ చేస్తాము:
ఇప్పుడు మీరు మాస్టర్ను మూసివేసి, ఆదేశాన్ని మళ్లీ అమలు చేయవచ్చు ping
.
ఫలితం అలాగే ఉండాలి మరియు బ్యాకప్లో మనం VIPని చూస్తాము:
సర్వీస్ బ్యాలెన్సింగ్ని తనిఖీ చేస్తోంది
ఉదాహరణకు SMTP తీసుకుందాం. 10.20.20.105కి ఒకేసారి రెండు కనెక్షన్లను ప్రారంభిద్దాం:
telnet 10.20.20.105 25
మాస్టర్లో రెండు కనెక్షన్లు సక్రియంగా ఉన్నాయని మరియు విభిన్న సర్వర్లకు కనెక్ట్ అయ్యాయని మనం చూడాలి:
[root@tm6_1 ~]#watch ipvsadm –Ln
ఈ విధంగా, మేము TM సర్వర్లలో ఒకదానిలో బ్యాలెన్సర్ను ఇన్స్టాల్ చేయడం ద్వారా TM సేవల యొక్క తప్పు-తట్టుకునే కాన్ఫిగరేషన్ను అమలు చేసాము. మా సిస్టమ్ కోసం, ఇది TM పై లోడ్ను సగానికి తగ్గించింది, ఇది సిస్టమ్ను ఉపయోగించి క్షితిజ సమాంతర స్కేలింగ్ లేకపోవడం సమస్యను పరిష్కరించడం సాధ్యం చేసింది.
చాలా సందర్భాలలో, ఈ పరిష్కారం త్వరగా మరియు అదనపు ఖర్చులు లేకుండా అమలు చేయబడుతుంది, అయితే కొన్నిసార్లు కాన్ఫిగరేషన్లో అనేక పరిమితులు మరియు ఇబ్బందులు ఉన్నాయి, ఉదాహరణకు, UDP ట్రాఫిక్ను సమతుల్యం చేసేటప్పుడు.
మూలం: www.habr.com