使用HeartBeat+Monit实现主备双热备份系统

时间:2021-03-24 03:16:50

一、使用背景

项目需要实现主备双热自动切换的功能,保证系统7*24小时不间断运行;现已有两台双网卡的IBM的服务器,为了不再增加成本采购独立外部存储设备和双机热备软件,采用了linux下开源的HA软件进行部署,即heartbeat+monit方式。

1、使用heartbeat来进行心跳监测和资源接管,心跳监测可以通过网络链路和串口进行,此处使用网络链路,而且支持 冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。

2、使用monit对应用服务进程监控、重启。Monit是一款功能非常丰富的进程、文件、目录和设备的监测软件,用于Unix平台。 它可以自动修复那些已经停止运作的程序,特使适合处理那些由于多种原因导致的软件错误。

3、改进点:由于没有共享存储设备来存储数据和应用服务,需要采用DRBD的方式进行两台服务器间的数据同步,也就是数据镜像。因时间紧迫没有时间研究DRBD这种镜像技术,后续考虑加进来。

4、项目的应用程序分三个独立的进程:数据采集进程、数据处理进程、数据通信服务进程,将这三个进程做成linux的服务方式进行管理,即:servicemyprocess start这种方式

使用HeartBeat+Monit实现主备双热备份系统
使用HeartBeat+Monit实现主备双热备份系统

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+Monit实现主备双热备份系统

三、安装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查看日志,进行测试

http://www.linuxidc.com/Linux/2014-12/110769.htm