wesley4248 发表于 2004-11-27 18:21:03

Linux-HA安裝手冊... 之五

==========================================================
==Saker新一代IT资源智能集中监管系统 (www.sakersoft.org) ==
==========================================================
###得知您负责管理本单位的IT设备,贵单位的IT设备可能包括多种UNIX系统、NT(包括Windows2000)等系统;网络设备可能包括交换机、路由器等;数据库可能有ORACLE、MsSql等的数据库产品;提供的网络服务有WWW、DNS、FTP、EMAIL等多种服务。
------------------------------------------------------------
###通过我们的Saker系统可以统一进行7×24小时的监控,短信、邮件报警,故障自动处理。这样可以大大降低您工作量的同时提高工作效率。并且本软件回报丰厚,请您考虑!
-----------------------------------------------------------
###优秀的跨平台性, Saker支持当今全部主流的操作系统,包括:Windows NT/Windows 2000/Windows 2003/Windows XP,linux,Aix,HP-UX,Irix, SunOS/Solaris,SCO ,Novell Netware,BSD,MacOS等;
-----------------------------------------------------------
###超强的监控功能:Saker拥有数百种监控模块,可以实现对网络服务(SMTP, POP3, HTTP, TCP,SNMP,NNTP,BGP等)、网络设备(路由器,交换机,Modem,UPS等)主机(CPU,内存,硬盘,文件,进程,用户等)、数据库(Oracle,MS SQl,DB2, INFORMIX,SYBASE,MYSQL, PostgreSQL等)、机房环境(温度等)和用户自己的应用程序的集中监控和管理。
----------------------------------------------------------
###丰富的报警功能:Saker支持非常丰富的报警手段,包括邮件,手机短信,呼机,电话、弹出窗口,声音,ICQ等多种技术手段。
-------------------------------------------------------------------------------------------
###强大的事件处理功能:Saker为每个受自己监管的服务分配一个事件处理器(Event Handler),用户可以根据需要,自定义事件处理模块(如:重启进程, 重启主机,备份数据等等)。比如:当检测到web进程停止服务时,Saker会按照用户的定义自动的重启进程;又如,当硬盘的使用率超过用户设定的阀值时,Saker会按照用户的定义自动的进行数据的压缩或者备份。从而实现真正的自动化管理。
-----------------------------------------------------------
Saker是一套功能全面、技术国际领先、运行稳定、实用的IT资源监管系统。
=========================================
==Saker系统--使IT管理更轻松         ===
==http://www.sakersoft.org/         ===
==========================================
4.8至此有关Heartbeat的设定已经完成,记得上述档案在Linux187与linux142上都要一模一样,然后
# setup
将heartbeat的服务设定为启动,之后将两台机器重新开机。

5.在linux187上利用ipvsadm –l检查LVS的Routing Rule,是否如下所示:
# ipvsadm -l
IP Virtual Server version 1.0.9 (size=65536)
Prot LocalAddress:Port Scheduler Flags
-> RemoteAddress:Port Forward Weight ActiveConn InActConn
TCP 10.144.43.185:webcache rr
-> Linux187:webcache Local 5 0 0
-> linux142:webcache Route 5 0 0
-> nb8048:webcache Route 5 0 0
然后作些测试,将187的eth0 利用ifconfig eth0 down,看看有没有切换到142去。

6.设定至此看起来都没问题,但是每次Primary Diretcor设备如果网路突然断掉,然后Primary网路又突然恢复的时候,会造成Primary与Secondary Director上的LVS Server都同时启动。有兴趣的人可以在primary Diretcor上用
# ifconfig eth0 down
将Primary的网路卡down下来,等一会约一分钟,再用
#ifconfig eth0 up
#route add –net 0.0.0.0 gw 10.144.43.254
然后,你再连上linux142与linux187上,输入ipvsadm –l,就会发现两边的LVS/Direct Routing都启动了,这显然不是我们所希望的结果。
要解决这个问题,需要利用mon这个dameon,来做到。
想法如下:
(1).每隔一段时间,去ping 10.144.43.254(ping gateway),若发现GATEWAY在连续六次都没有反应后,就要将lvs的服务关闭(/etc/init.d/lvs stop),此时认定是自己网路卡已经故障,无法Ping出去。因为即便是Gateway死掉,此时整个网路对外边已经没有作用,启动lvs也没用,故需要关闭他。
(2).若发现Gateway突然又Ping的到了,此时要将heartbeat service给restart(取得主动权)(/sbin/service heartbeat start),如此经过一段时间,Primary的Director将会取得LVS Server的位置,而Slave Director会回复到RealServer与Backup Director的位置。

7.为了解决LVS server同时启动的困扰,我们需要在mon服务中再加入一个hostgroup,/etc/mon/mon.cf内容如下:
#
# Extremely basic mon.cf file
#
#
# global options
#
cfbasedir = /etc/mon
pidfile = /var/run/mon.pid
statedir = /var/run/mon/state.d
logdir = /var/run/mon/log.d
dtlogfile = /var/run/mon/log.d/downtime.log
alertdir = /usr/lib/mon/alert.d
mondir = /usr/lib/mon/mon.d
maxprocs = 20
histlength = 100
randstart = 60s
authtype = userfile
userfile = /etc/mon/userfile

#
# group definitions (hostnames or IP addresses)
#
hostgroup server1 10.144.43.175
hostgroup server2 10.144.43.142
hostgroup server3 10.144.43.187
# network gateway
hostgroup server4 10.144.43.254

watch server1
service webcache
interval 5s
monitor http.monitor -p 8080 -t 10
allow_empty_group
period wd {Sun-Sat}
alert lvs.alert -P tcp -V 10.144.43.185:8080 -R 10.144.43.175 -W 5 -F dr
alertevery 1h
alertafter 6
upalert lvs.alert -P tcp -V 10.144.43.185:8080 -R 10.144.43.175 –W 5 -F dr -u 1

watch server2
service webcache
interval 5s
monitor http.monitor -p 8080 -t 10
period wd {Sun-Sat}
alert lvs.alert -P tcp -V 10.144.43.185:8080 -R 10.144.43.142 -W 5 -F dr
alertafter 6
alertevery 1h
upalert lvs.alert -P tcp -V 10.144.43.185:8080 -R 10.144.43.142 -W 5 -F dr -u 1

watch server3
service webcache
interval 5s
monitor http.monitor -p 8080 -t 10
period wd {Sun-Sat}
alert lvs.alert -P tcp -V 10.144.43.185:8080 -R 10.144.43.187 -W 5 -F dr
alertafter 6
alertevery 1h
numalerts 24
upalert lvs.alert -P tcp -V 10.144.43.185:8080 -R 10.144.43.187 -W 5 -F dr -u 1

watch server4
service ping
interval 10s
# 使用哪一个monitor去作测试
monitor ping.monitor 10.144.43.254
period wd {Sun-Sat}
# 每个小时丢一个alert
alertevery 1h
# 连续测试六次失败才丢出第一个alert
alertafter 6
# 最多丢12个alert
numalerts 12
# alert时呼叫heartbeat.alert
alert heartbeat.alert
# upalert时呼叫heartbeat.alert -u
upalert heartbeat.alert -u
# See /usr/doc for the original example...

8.从上面/etc/mon/mon.cf中,可以发现我们要自己写一个alert发生时被呼叫的script,这里我用perl 写了一个简单的Script放在(/usr/lib/mon/alert.d/heartbeat.alert)。
#!/usr/bin/perl
# heartbeat.alert - Linux Virtual Server alert for mon
#
# It can be activated by mon to remove a real server when the
# service is down , or add the server when the service is up
#
use Getopt::Std;
getopts("u");
$service ="/sbin/service";
$u = $opt_u;
if($opt_u){
# 重新启动heartbeat服务
system("$service heartbeat restart");
}else{
# 停止lvs server
system("/etc/init.d/lvs stop");
}

9.确认linux187与linux 142的设定与档案文件相同,然后两边同时重新启动heartbeat service,至此Linux-HA系统正式完成,可以作些测试。例如:拔掉Director的网路线一段时间,看看Secondary有没有take over,然后再插回去,看看Primary有没有回复原本Director的身份,可试着将Primary reboot,看看Secondary会不会take over,然后master起来的时候,应该还是Secondary Diretcorr在作用。其中或许会有些参数不大对,但是可以自己慢慢修正。
页: [1]
查看完整版本: Linux-HA安裝手冊... 之五