heartbeat和keeplive
在实际应用中,heartbeat的功能和keepalived有很多相同之处,但在生产中,对应实际的业务应用也是有区别的,例如:keepalived主要控制IP飘逸,配置,应用简单,而heartbeat则不但可以控制ip飘逸,更擅长对资源服务控制,配置,应用比较复杂,lvs和keepalived是密切配合的一对!
http://linux-ha.org/wiki/main_page
熟悉相关的业务,使用串口和网线直连方式并用,防止列脑!
如web,http的业务,可以网卡直连,或者网线交换机局域网的通信方式即可!
A-B
A和B使用串口线进行连接,不需要配置IP,传输不易出现问题。串口线对应的服务器端设备/dev/ttvS0.
列脑是什么?
在双主互传心跳中,备节点或双备接受不到双主活着的消息,都启动服务!
主备中,正常情况下主链接数据库,接受用户请求!主节点服务器当掉,备节点启动!
如果,备节点接受不到主信息时,备节点会启动VIP,启动数据库链接!这样一来,用户访问到站点,链接的仍然是主。但是有可能会链接到备节点,因为两台主机(主备)都占用同一个VIP地址,如果链接到备节点,在备节点写入数据,主节点也有数据,主备数据未同步,皆不一致。甚至写数据无法写入。这样的列脑,恢复数据都很比较困难!
导致脑列发生的原因:
1,心跳线链路故障
2,网卡故障,ip冲突
3,心跳线连接故障,交换机故障
4,仲裁故障
5,防火墙iptables阻挡
6,配置心跳网卡地址配置错误
7,其他配置不当,心跳方式不同,心跳广播冲突,软件bug等
如:keepalived配置如果virtual_router_id参数,两端配置不一致,也会导致脑列问题
防止列脑:
1,使用多条心跳线
2,当检测不到心跳强行关闭一个心跳节点,这个功能需要特殊设备支持。例如stonith,fence:备节点检测不到主节点信息,在切换的时候就会直接关闭主节点电源,干掉主节点!
3,做脑列的监控报警,在问题发生时,人为第一时间介入仲裁。
4,启用磁盘锁(存储设备),一个节点在使用的时候,另外一个节点是无法写入的!同时也有一定的问题,如果A节点在写入的时候挂掉,无法释放锁,B将无法写入!所以,锁的应用应该在当A挂掉后,B接手服务后上锁!
5,报警在服务器自动接管之前,给人员留足够的处理时间。(在短时间内报警,服务器不接管,5分钟后接管,接管时间较长,数据不丢失,导致用户无法写入数据!当你服务器宕机是不会影响读操作)
6,报警后不接管,人员手动接管,人员观察是否脑列
7,增加仲裁机制。第三方设备,如:两台机器宕机后,ping网关检测,如果ping不通,则主动放弃竞争!如果ping不通也可以自行重启!
8,手机短信上下行,交互式控制!
9,在业务许可的情况下,主从即可!
如何开发程序报警监控判断?
1,“如果备节点发现有VIP立刻报警”
(1)备节点正常接管
(2)主节点没宕机,脑列状况
2,"主服务是否异常,VIP是否切换"
人员以以上两种条件来监控,进行判断是否正常切换还是列脑!