一、 heartbeat和KeepAlived一样都是服务器级别的,不是业务级别的。业务宕机不会切换,需要对业务做监控。
二、heartbeat消息类型:
1. 心跳消息
150字节左右,可以单播,多播和广播,控制心跳频率和故障接管等待时间。
2. 集群转换消息
1. ip-request 主机恢复正常后发送该消息要求接管的备机释放资源。
2. ip-request-resp 备机释放资源后通知主机不再拥有资源。
3. 重传请求(略)rexmit-request控制重传心跳请求
以上消息均通过UDP协议发送到/etc/ha.d/ha.cf文件中指定的端口或多播地址。
三、heartbeat的IP接管和故障转移
heartbeat是通过IP地址接管和ARP广播来转移的。
四、配置VIP,增加心跳线主机路由
route add -host 192.168.1.45 dev eth1
route add -host 192.168.1.44 dev eth1
五、centos6已经无法yum install heartbeat,需要先安装epel源。
yum install heartbeat
如果是centos5.8,一定要yum安装两遍才能成功。
六、配置
ha的yum安装默认模板文件在/usr/share/doc/heartbeat-3.0.4/目录
安装目录在/etc/ha.d
cp authkeys ha.cf haresources /etc/ha.d/
IPaddr::135.9.8.7/24/eth0这个命令等价于(其实是个脚本传参)
/etc/ha.d/resource.d/IPaddr 135.9.8.7/24/eth0 start|stop
ha的3个配置文件:
1. authkeys 对端通信密钥文件,防止没有权限的节点加入。
2. haresources是资源管理配置文件,用于管理haresources.d下面的资源管理工具。
3. ha.cf为ha服务的配置文件。
authkeys文件权限必须为600。
#vi /etc/sysconfig/iptables
在主节点中加入以下内容
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 192.168.50.1 -j ACCEPT
在从节点中加入以下内容
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 192.168.50.2 -j ACCEPT
重新加载iptables。
#vi /etc/sysconfig/iptables
在主节点中加入以下内容
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 192.168.50.1 -j ACCEPT
在从节点中加入以下内容
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -d 192.168.50.2 -j ACCEPT
重新加载iptables。
解决haproxy+heartbeat配合时haproxy没有VIP无法启动的问题:
vim /etc/sysctl.conf
添加:
net.ipv4.ip_nonlocal_bind = 1
或者echo "net.ipv4.ip_nonlocal_bind = 1" >> /etc/sysctl.conf
如此可以使haproxy启动的时候忽略绑定VIP