使用heartbeat+monit实现主备双热备份系统

一、使用背景

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

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

2、使用monit相应用服务进程监控、重新启动。Monit是一款功能很丰富的进程、文件、文件夹和设备的监測软件,用于Unix平台。 它能够自己主动修复那些已经停止运作的程序,特使适合处理那些因为多种原因导致的软件错误。

3、改进点:因为没有共享存储设备来存储数据和应用服务,须要採用DRBD的方式进行两台server间的数据同步,也就是数据镜像。

因时间紧迫没有时间研究DRBD这样的镜像技术。兴许考虑加进来。

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

3、系统拓扑图及表述(如上图)

两个server中的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

二、安装monit

1、由于heartbeat仅仅负责心跳和两台server通信的功能,可是在自己的服务进程挂掉时,不能实现自己主动重新启动。

由于对monit比較熟悉,便採用了monit来监控服务进程,和heartbeat结合使用。

事实上也能够採用其它方式。如mon等。

Sudo apt-getinstall monit

2、编辑monit启动脚本。位置:/etc/init.d/monit,加入自己的进程(红色字体部分)其作用是在heartbeat在进行切换的时候,能够停止当前server上的应用服务。待切换完毕后启动备用server上的应用服务程序(由于没有做软镜像也没有共享存储,应用服务和数据在两台server上各有一份。在我的使用场景中能够这样做)

………

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!

将上面的三个配置文件分别复制到主、备server上的/etc/ha.d文件夹下,并将authkeys权限改为600

在主、备服server上分别启动heartbeat,能够在通过tail  -f /var/log/ha-log查看日志。进行測试

时间: 2024-10-31 21:21:54

使用heartbeat+monit实现主备双热备份系统的相关文章

Linux RHEL6.4绑定双网卡主备模式

1.查看服务器版本 lsb_release -a 2.然后进入网卡信息目录:cd /etc/sysconfig/network-scripts 3.接着我们要新建一个文件,文件名为ifcfg-bond0,可以通过三种方式来创建. (vi ifcfg-bond0; touch ifcfg-bond0; cp ifcfg-eth0 ifcfg-bond0)这里我选择最后一种 执行 cp ifcfg-eth0 ifcfg-bond0 后在 /etc/sysconfig/network-scripts目

CentOS6.5和CentOS7.0双网卡主备模式配置

双网卡主备模式配置(bond0) 1     简述 通过双网卡设置主备模式,实现当一块网卡宕掉时,另外一块网卡可以自动顶替宕掉的网卡工作,保障网络正常访问. 2     实现 2.1.  查看网卡信息 执行ifconfig -a命令 2.2.  修改网卡配置文件 切换工作目录 cd /etc/sysconfig/network-scripts/ 修改网卡配置文件ifcfg-eth0 ,保证以下几项内容正确: TYPE=Ethernet BOOTPROTO=dhcp ONBOOT=yes MAST

Mysql 5.6.27 双主模型&&主备模型安装测试

http://dev.mysql.com/get/Downloads/MySQL-5.6/MySQL-5.6.27-1.el6.x86_64.rpm-bundle.tar 测试环境:    两台服务器          MYSQL-1:10.11.22.78          MYSQL-2:10.11.22.248    测试系统          Centos 6.5_64    Mysql版本          MySQL-5.6.27    Keepalived版本          k

haproxy+keepalived主备与双主模式配置

Haproxy+Keepalived主备模式 主备节点设置 主备节点上各安装配置haproxy,配置内容且要相同 global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon defaults #defaults段默认值对frontend和backend和listen段生效 mode http #运行模式

centos7 搭建双网卡bond1(主备模式)实例

前景须知: 在redhat6 中网卡叫bond,在redhat7及centos7中改名team,此处只记录centos7中双网卡主备搭建过程. 应用情景:实现网络的高可用,防止一条网线或交换机故障影响该物理机进行数据交互 此次环境是由于在上线业务之前是没有做Team的 ,现在由于要撤掉交换机过程期间需要将网线连接到另外一台交换机,为了防止数据中断,因此采用Team主备模式,这样断掉一个网卡就不影响业务,测试发现重启网卡时候会有3到4个丢包 环境:centos7  网卡1 ens192  网卡2 

双网卡实现双主备模式

双网卡实现双主备模式 实验准备 2个网卡(改为桥接模式) 1.该网卡名称 ? 修改网可激活 ? grub2-mkconfig -o /etc/grub2.cfg ? 重启电脑之后查看,可以看到网络中的接口给成为eth接口 ip a ? 2.创建bond ? nmcli connection add type bond ifname bond0 con-name bond0 mode active-backup ip4 172.20.12.20/16 gw4 172.20.0.1 ? 查看是否成功

centos6上实现双网卡绑定-主备模式

网卡绑定,将多块物理网卡绑定,对外呈现为一块逻辑网卡.这样做的好处一是增加带宽,二是提供冗余增加安全性.一般多用棱块网卡做绑定. 常见的网卡绑定模式有如下三种: mode0:轮询链路 mode1:主备链路 node3:广播链路 绑定后多块网卡对外提供一个ip地址个一个mac地址 本实验中以model1为例进行操作: 第1步: 在/etc/sysconfig/network-scripts/目录下创建绑定网卡文件,如 ifcfg-bond0 第2步; 编辑ifcfg-bond0 DEVICE=bo

使用keepalived使用主备热备份功能

图: 配置文件: 主服务器的配置如下: global_defs { router_id NodeA}vrrp_instance VI_1 { state MASTER #设置为主服务器 interface ens33 #监测网络接口 virtual_router_id 51 #主.备必须一样 priority 100 #(主.备机取不同的优先级,主机值较大,备份机值较小,值越大优先级越高) advert_int 1 #VRRP Multicast广播周期秒数 authentication { a

keepAlived主备及双主

nginx用默认配置即可 1.主备配置 1.主keepAlived配置 vrrp_instance VI_1 { state MASTER #主备区分 interface eth0 virtual_router_id 51 #主备一致 priority 100 #主备区分 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.244.200 } track_script