共计 4055 个字符,预计需要花费 11 分钟才能阅读完成。
一、使用背景
项目需要实现主备双热自动切换的功能,保证系统 7 *24 小时不间断运行;现已有两台双网卡的 IBM 的服务器,为了不再增加成本采购独立外部存储设备和双机热备软件,采用了 linux 下开源的 HA 软件进行部署,即 heartbeat+monit 方式。
1、使用 heartbeat 来进行心跳监测和资源接管,心跳监测可以通过网络链路和串口进行,此处使用网络链路,而且支持 冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。
2、使用 monit 对应用服务进程监控、重启。Monit 是一款功能非常丰富的进程、文件、目录和设备的监测软件, 用于 Unix 平台。它可以自动修复那些已经停止运作的程序, 特使适合处理那些由于多种原因导致的软件错误。
3、改进点:由于没有共享存储设备来存储数据和应用服务,需要采用 DRBD 的方式进行两台服务器间的数据同步,也就是数据镜像。因时间紧迫没有时间研究 DRBD 这种镜像技术,后续考虑加进来。
4、项目的应用程序分三个独立的进程:数据采集进程、数据处理进程、数据通信服务进程,将这三个进程做成 linux 的服务方式进行管理,即:servicemyprocess start 这种方式
3、系统拓扑图及表述(如上图)
两个服务器中的 eth0 网卡用来外部通信,eth1 网卡用来心跳检测。
OS:ubunt12.04
VIP 虚拟 IP:192.168.134
主节点:
Eth0:IP(外网):192.168.1.132
Eth1:IP(内网):192.168.2.2
备节点:
Eth0:IP(外网):192.168.1.133
Eth1:IP(内网):192.168.2.3
————————————– 分割线 ————————————–
基于 Heartbeat V1 实现 Web 服务双机热备 http://www.linuxidc.com/Linux/2014-04/100635.htm
Heartbeat 实现 Web 服务的高可用群集 http://www.linuxidc.com/Linux/2014-04/99503.htm
Heartbeat+LVS+Ldirectord 高可用负载均衡解决方案 http://www.linuxidc.com/Linux/2014-04/99502.htm
DRBD+Heartbeat+NFS 高可用性配置笔记 http://www.linuxidc.com/Linux/2014-04/99501.htm
Heartbeat 基于 CRM 使用 NFS 对 MySQL 高可用 http://www.linuxidc.com/Linux/2014-03/98674.htm
Heartbeat 高可用 httpd 基于 Resources 简单配置 http://www.linuxidc.com/Linux/2014-03/98672.htm
————————————– 分割线 ————————————–
二、安装 monit
1、因为 heartbeat 只负责心跳和两台服务器通信的功能,但是在自己的服务进程挂掉时,不能实现自动重启。由于对 monit 比较熟悉,便采用了 monit 来监控服务进程,和 heartbeat 结合使用。其实也可以采用其他方式,如 mon 等。
Sudo apt-getinstall monit
2、编辑 monit 启动脚本,位置:/etc/init.d/monit,添加自己的进程(红色字体部分)其作用是在 heartbeat 在进行切换的时候,可以停止当前服务器上的应用服务,待切换完成后启动备用服务器上的应用服务程序(因为没有做软镜像也没有共享存储,应用服务和数据在两台服务器上各有一份,在我的使用场景中可以这样做)
………
stop)
log_daemon_msg “Stopping $DESC””$NAME”
if start-stop-daemon –retry TERM/5/KILL/5–oknodo –stop –quiet \
–pidfile $PID –exec$DAEMON
then
log_end_msg 0
else
log_end_msg 1
fi
#################################
# 此处添加要监控的服务进程
service DataCollection stop
service DataProcss stop
service RsServer stop
################################
;;
reload)
…………….
3、编辑 /etc/monit/monitrc 配置文件,网上这方面的资料比较多可以参考,在其中加入自己需要监控的进程,最后将编辑好的 monitrc 文件权限修改为 700
………………
# 需要监控的进程配置
#########Start checkDataCollection##########################
check process DataCollection with pidfile/tmp/kd_data_collection_filename.pid
start program =”/etc/init.d/DataCollection start”
stop program =”/etc/init.d/DataCollection stop”
#########End checkDataCollection##########################
#########Start checkDataProcss##########################
check process DataProcss with pidfile/tmp/kd_data_process_filename.pid
start program =”/etc/init.d/DataProcss start”
stop program =”/etc/init.d/DataProcss stop”
#########End checkDataProcss##########################
#########Start checkRsServer##########################
check process RsServer with pidfile/tmp/kd_data_server_filename.pid
start program = “/etc/init.d/RsServerstart”
stop program = “/etc/init.d/RsServerstop”
#########End checkRsServer##########################
################Startcheck heartbeat######################
check process heartbeat with pidfile/var/run/heartbeat.pid
start program =”/etc/init.d/heartbeat start”
stop program = “/etc/init.d/heartbeatstop”
################Endcheck heartbeat##############################
###############################################################################
## Includes
###############################################################################
##
## It is possibleto include additional configuration parts from other files or
## directories.
#
include /etc/monit/conf.d/*
#.
………………
安装好的 monit 通过 web 方法管理进程截图:
三、安装 heartbeat
Sudo apt-get install heartbeat
编辑下面三个文件:
ha.cf 主要的配置文件,大部分配置信息在该文件中
haresources 资源配置文件
authkeys 权限配置】
1、ha.cf 配置
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
bcast eth1 #Linux
auto_failback on
node UbuntuA
node ubuntuB
ping 192.168.1.1
2、haresources
…………
ubuntuA192.168.1.134 monit
#node-nameresource1 resource2 … resourceN
…………
3、authkeys
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
将上面的三个配置文件分别拷贝到主、备服务器上的 /etc/ha.d 目录下,并将 authkeys 权限改为 600
在主、备服服务器上分别启动 heartbeat,可以在通过 tail -f /var/log/ha-log 查看日志,进行测试