የአንድ አገልጋይ አቅም ሁሉንም ጥያቄዎች ለማስኬድ በቂ ካልሆነ እና የሶፍትዌር አምራቹ የጭነት ሚዛን ካልሰጠ ምን ማድረግ አለበት? የጭነት ሚዛን ከመግዛት እስከ የጥያቄዎች ብዛት ድረስ ብዙ አማራጮች አሉ። የትኛው ትክክል ነው, ያሉትን ሁኔታዎች ግምት ውስጥ በማስገባት ሁኔታውን መመልከት ያስፈልግዎታል. በዚህ ጽሑፍ ውስጥ በጀቱ ከተገደበ እና ነፃ አገልጋይ ካለ ምን ማድረግ እንደሚቻል እንነግርዎታለን.
በአንደኛው አገልጋይ ላይ ያለውን ጭነት ለመቀነስ አስፈላጊ የሆነበት ስርዓት እንደመሆናችን መጠን ከ InfoWatch ውስጥ DLP (Information Leak Prevention System) ን መርጠናል. የአፈፃፀሙ አንድ ገፅታ የ "ውጊያ" አገልጋዮች በአንዱ ላይ የተመጣጠነ ተግባር አቀማመጥ ነበር.
ካጋጠሙን ችግሮች አንዱ ምንጭ NAT (SNAT) መጠቀም አለመቻል ነው። ይህ ለምን አስፈለገ እና ችግሩ እንዴት እንደተፈታ, የበለጠ እንነጋገራለን.
ስለዚህ የነባር ስርዓት አመክንዮ ዲያግራም መጀመሪያ ላይ ይህን ይመስላል።
ICAP፣ SMTP ትራፊክ፣ ከተጠቃሚ ኮምፒውተሮች የሚመጡ ክስተቶች በትራፊክ መቆጣጠሪያ (TM) አገልጋይ ላይ ተካሂደዋል። በተመሳሳይ ጊዜ የውሂብ ጎታ አገልጋዩ በቲኤም ላይ ክስተቶችን ካስኬደ በኋላ ጭነቱን በቀላሉ ይቋቋማል, ነገር ግን በቲኤም ላይ ያለው ጭነት በራሱ ትልቅ ነበር. ይህ በመሣሪያ መቆጣጠሪያ (ዲኤም) አገልጋይ ላይ ባለው የመልእክት ወረፋ መልክ፣ እንዲሁም በቲኤም ላይ ፕሮሰሰር እና ማህደረ ትውስታ አጠቃቀም ላይ ታይቷል።
በመጀመሪያ በጨረፍታ፣ በዚህ እቅድ ውስጥ አንድ ተጨማሪ የTM አገልጋይ ከታከለ፣ ICAP ወይም DM ወይ ወደ እሱ መቀየር ይቻላል፣ ነገር ግን የስህተት መቻቻል ስለቀነሰ ይህን ዘዴ ላለመጠቀም ወስነናል።
የመፍትሄው መግለጫ
ተስማሚ መፍትሄ ለማግኘት በሂደት ላይ, በነፃ ሶፍትዌር ላይ ተቀመጥን
ማሳካት የፈለግነው (በቲኤም ላይ ያለውን ጭነት በመቀነስ እና አሁን ያለውን የስህተት መቻቻል ደረጃን ጠብቆ ማቆየት) እንደዚህ መስራት ነበረበት።
በጤና ፍተሻ ወቅት፣ በአገልጋዮቹ ላይ የተጫነው የ RedHat ብጁ ስብሰባ SNATን እንደማይደግፍ ታወቀ። በእኛ ሁኔታ፣ SNAT ን ለመጠቀም አቅደናል ስለዚህ የሚመጡ እሽጎች እና ለእነሱ ምላሾች ከተመሳሳይ አይፒ አድራሻ ይላካሉ ፣ ካልሆነ የሚከተለው ምስል እናገኛለን።
ይህ ተቀባይነት የለውም። ለምሳሌ፣ ተኪ አገልጋይ፣ ፓኬቶችን ወደ ቨርቹዋል IP (VIP) አድራሻ መላክ፣ ከቪአይፒ ምላሽ ይጠብቃል፣ ነገር ግን በዚህ አጋጣሚ ወደ ምትኬ ለተላኩ ክፍለ ጊዜዎች ከ IP2 ይመጣል። መፍትሄው ተገኝቷል፡ ከዚህ በታች እንደሚታየው በመጠባበቂያ ላይ ሌላ የማዞሪያ ጠረጴዛ መፍጠር እና ሁለት TM አገልጋዮችን ከተለየ አውታረ መረብ ጋር ማገናኘት አስፈላጊ ነበር፡
ቅንብሮች
የሁለት አገልጋዮችን እቅድ በ ICAP ፣ SMTP ፣ TCP 9100 አገልግሎቶች እና በአንዱ ላይ የተጫነ የጭነት ሚዛንን እንተገብራለን።
ሁለት RHEL6 አገልጋዮች አሉን, ከነሱ መደበኛ ማከማቻዎች እና አንዳንድ ጥቅሎች ተወግደዋል.
ሚዛናዊ ለማድረግ የሚያስፈልጉን አገልግሎቶች፡-
• ICAP - tcp 1344;
• SMTP - tcp 25.
የትራፊክ ማስተላለፊያ አገልግሎት ከዲኤም - tcp 9100.
በመጀመሪያ ኔትወርክን ማቀድ ያስፈልገናል.
ምናባዊ አይፒ አድራሻ (ቪአይፒ)
• አይፒ፡ 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 አገልጋዮች ላይ የአይፒ ማስተላለፍን እናነቃለን። በ 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
ከላይ ያሉት ትዕዛዞች ስርዓቱ እንደገና እስኪነሳ ድረስ ይሰራሉ. ዳግም ከተነሳ በኋላ መንገዶቹ ተጠብቀው እንዲቆዩ፣ ማስገባት ይችላሉ። /ወዘተ/rc.d/rc.local, ነገር ግን በቅንብሮች ፋይል በኩል ይሻላል /etc/sysconfig/network-scripts/route-eth1 (እዚህ የተለየ አገባብ ጥቅም ላይ እንደሚውል ልብ ይበሉ).
በሁለቱም የTM አገልጋዮች ላይ Keepalive ጫን። 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
በ Keepalive ቅንብሮች ውስጥ አንዱን ዋና አገልጋይ እንመድባለን, ሌላኛው - ምትኬ. ከዚያ ቪአይፒን እና አገልግሎቶችን ለጭነት ማመጣጠን አዘጋጅተናል። የቅንብሮች ፋይል ብዙውን ጊዜ እዚህ ይገኛል፡- /ወዘተ/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
}
}
በዋና ኤልቪኤስ ላይ ጫን፣ ይህም ትራፊክን ሚዛናዊ ያደርገዋል። ለሁለተኛው አገልጋይ, ሚዛንን መጫን ትርጉም የለውም, ምክንያቱም በማዋቀር ውስጥ ሁለት አገልጋዮች ብቻ አሉን.
[root@tm6_1 ~]##yum install https://rpmfind.net/linux/centos/6.10/os/x86_64/Packages/ipvsadm-1.26-4.el6.x86_64.rpm
ሚዛኑ የሚቆጣጠረው አስቀድመን ባዋቀርነው በ keepalive ነው።
ምስሉን ለማጠናቀቅ፣ በሁለቱም አገልጋዮች ላይ Keepalived ን ወደ አውቶማቲካሊነት እንጨምር፡-
[root@tm6_1 ~]#chkconfig keepalived on
መደምደሚያ
ውጤቱን በማጣራት ላይ
በሁለቱ አገልጋዮች ላይ Keepalive ያሂዱ፡-
service keepalived start
የVRRP ምናባዊ አድራሻ መኖሩን በመፈተሽ ላይ
ቪአይፒ ማስተር ላይ መሆኑን ያረጋግጡ፡-
እና በመጠባበቂያ ላይ ምንም ቪአይፒ የለም፡-
የፒንግ ትዕዛዙን በመጠቀም የቪአይፒን ተገኝነት ያረጋግጡ፡-
አሁን ማስተርን ማጥፋት እና ትዕዛዙን እንደገና ማስኬድ ይችላሉ። ping
.
ውጤቱ አንድ አይነት ሆኖ መቀጠል አለበት፣ እና በመጠባበቂያው ላይ ቪአይፒን እናያለን፡-
የአገልግሎት ማመጣጠን ቼክ
SMTPን እንደ ምሳሌ እንውሰድ። በአንድ ጊዜ ከ10.20.20.105 ጋር ሁለት ግንኙነቶችን እንጀምር፡-
telnet 10.20.20.105 25
ማስተር ላይ፣ ሁለቱም ግንኙነቶች ንቁ እና ከተለያዩ አገልጋዮች ጋር የተገናኙ መሆናቸውን ማየት አለብን።
[root@tm6_1 ~]#watch ipvsadm –Ln
ስለዚህ፣ ስህተትን የሚቋቋም የቲኤም አገልግሎቶችን በአንድ የቲኤም አገልጋይ ላይ ሚዛን በመትከል ተግባራዊ አድርገናል። ለስርዓታችን ይህ በቲኤም ላይ ያለውን ጭነት በግማሽ ቀንሶታል, ይህም በስርዓቱ አማካኝነት የአግድም ሚዛን አለመኖርን ችግር ለመፍታት አስችሏል.
በአብዛኛዎቹ ሁኔታዎች, ይህ መፍትሔ በፍጥነት እና ያለ ምንም ተጨማሪ ወጪ ይተገበራል, ነገር ግን አንዳንድ ጊዜ በርካታ ገደቦች እና ችግሮች በማዋቀር ላይ, ለምሳሌ, የ UDP ትራፊክን ሲያስተካክሉ.
ምንጭ: hab.com