heartbeat之part1

heartbeat keepalive
高可用软件
heart beat作用:通过heartbear可以从资源(ip及程序服务)一台已经故障的计 算机快速转移到另一台正常运用的计 算机
heartbeat工作原理
通过修改heart beat配置文件,可以指定哪一台heartbeat可以作为主服务器,则另一台将自动作为热备份服务器,然后在热备份服务器上
配置heartbeat守护程序来监听来自主服务器的心跳信息,如果热备份服务器在指定的时间内未检测到主服务器的心跳,就会启动故障转移程序
,并且取得主服务器上的相关服务资源所有权,接替主服务器继续不间断的提供服务,从而取得资源以及服务的高可用性目的
    以上描述的是主备模式,heartbeat还支持主主模式,既两台服务器互为主备,这时双方将以报文来通知对方的状态,如果在指定时间内没有收到指定
的报文,那么另一方将会人为对方已经宕机,这时每个正常的主机将会启动资源接管模块来接管运行对方资源或服务,继续为用户提供服务
企业业务能够不断的运行(切换时间需要时间)
和keepalive一样,他是服务器级别,不是服务级别(宕机和heartbeat软件崩溃,心跳连接线故障)
服务故障不会导致切换,可以通过服务宕机把heartbeat停掉

介绍
至少两台主机
常见的方法
1串行电缆
2一根以太网两个网卡(推荐)
3以太网电缆,通过交换机连(增加了交换机故障点)
什么是裂脑:
由于两台高可用服务器对之间在指定的时间内,互相不可以检测到对方的心跳而各自启动故障转移功能,取得资源的所有权
而此时的两台高可用服务器对都还或者并且正常运行,这样就会导致同一个ip或服务在两端同时启动而导致严重的问题
,最严重的是两台主机拥有同一个ip地址,当用户写入数据时就分别向两端写入,这就可能导致服务器两端的数据不一致或者造成数据
丢失,这种情况就叫做裂脑,也有人叫做分区集群或者大脑垂直分割英文叫做split brain
裂脑发生的原因
1,高可用服务器之间心跳链路故障(断了,老化,网卡及相关驱动坏了,ip配置冲突,仲裁机器故障,心跳线之间设备故障),导致无法正常通信
2.高可用服务器对上开启了防火墙阻挡了心跳信息的传输
3.高可用服务器上信息网卡等的配置不正确,导致心跳发送失败
4其他配置的原因,心跳方式不同,心跳广播冲突,软件bug等
防止裂脑的八个秘诀
1.同时使用串行电缆和以太网连接,同时使用两台链路
2.检测到裂脑时强行关闭一个节点(需特殊设备支持stonish《shot the other node in the head》,fence),相当于程序上发现心跳线故障,发送关机指令到主节点
3.做好裂脑的监控报警,在问题发生时人类介入裁判
4.启用磁盘锁,正在服务一方锁住共享磁盘,裂脑发生时让对方完全抢不走共享资源,但也有一个问题,如果一方不释放资源,另一方完全抢不到
资源;正在服务的一方发现所有的心跳线断开时才启用磁盘锁,平时就不上锁了
5.报警报在接管之前, 给人员留足够时间(1分钟内报警,但五分钟之后没有任何响应才接管)
6.报警后,不直接服务器接管,而是由人为人员接管
7.增加仲裁机制,确定谁获得资源
7.1 加一个仲裁机制,列如设置ip,心跳断离,ip ping网关,ping通就服务,ping不、通就自动接管
7.2通过第三方软件进行仲裁
有关fence仲裁
fence是ha集群环境下的术语,在硬件领域,fence就是一个智能电源管理设备(远程管理卡intelligente powermanagent interface),
ibm:rsa
hp:ILO
DELL:IDRAC
外部的fence设备APC
HEARTBEAT消息类型:
1.心跳消息:约150字节数据包,单播,广播,多播
2.集群转换消息(request,request_response)当主服务器恢复在线状态时,通过ip_request消息要求备机释放主服务器时服务器取得的资源
然后备份服务器关闭释放主服务器释放主服务器失败时取得的资源和服备服务器资源释放主服务器失败时取得的资源后,会通过ip_request_resp消息
通知主服务器他不在拥有该资源极其服务,主服务节点收到来自备节点ip_request_resp消息通知后,启动失败时释放的资源极其服务,并开始提供支持正常的服务
3.重传消息rexmit_request 控制重传心跳请求,提示以上信息都使用UDP协议发送到/etc/ha.d/ha.cf文件指定的端口,
或者指定的多播地址heartbeat是通过arp广播地址和ip地址接管的arp广播,在主服务器故障时,备用节点接管资源后,会强制更新所在客户端本地的arp表
(清除客户端本地缓存失败的服务器地址和mac地址的解析记录)ip地址绑定别名
[root@localhost  ~]# ifconfig eth1:0 66
[root@localhost  ~]# ifconfig -a eth1      Link encap:Ethernet  HWaddr 00:0C:29:24:41:DE  
         inet addr:192.168.88.152  Bcast:192.168.88.255  Mask:255.255.255.0
         inet6 addr: fe80::20c:29ff:fe24:41de/64 Scope:Link

         eth1:0    Link encap:Ethernet  HWaddr 00:0C:29:24:41:DE  
         inet addr:0.0.0.66  Bcast:255.255.255.255  Mask:0.0.0.0
         UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
        lo        Link encap:Local Loopback  
        sit0      Link encap:IPv6-in-IPv4
好处是:当服务器宕机以后,在接管的服务器上会直接会自动配置上的vip提供服务
质是确保两台服务器各有一个ip不动,随时可以连上机器,然后增加绑定其他的ip,这样就算vip转移走了,也不至于本身的服务连不上

手工配置虚拟ip的做法
ifconfig eth0:1 124.42.61.109 netmask 255.255.255.224 up   --heartbeat2
ip addr add 10.0.15.1/24 broadcast 10.0.15.255 dev eth1 辅助ip  --keepalive
手工删除vip的方法ip addr del 10.0.15.1/24 broadcast 10.0.15.255 dev eth1 辅助ip
ifconfig eth0:1 124.42.61.109 netmask 255.255.255.224 down
ip addr 可以查看heart beat3不使用别名。而使用辅助ip启动脚本/etc/init.d/heartbeat
资源目录/etc/ha.d/resource.d/
heartbeat配置文件默认配置文件目录为/etc/ha.d heartbeat常用配置文件有三个,分别是ha.cf(参数文件) ,authkey(认证文件,对端的),
harsource(资源配置文件,ip及脚本)如果自己开发程序就放在这个folder然后调用

你可能感兴趣的:(heartbeat之part1)