一 介绍
Heartbeat是Linux-HA项目中的一个组件,Linux-HA的全称是High-Availability Linux,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(reliability)、可用性 (availability)和可服务性(serviceability)(RAS)的群集解决方案.
Heartbeat提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者等, 和keepalived服务一样,heartbeat高可用是服务器级别的,不是服务器级别的,如果主上面的apache,mysqld服务出现问题,是不会切换的,只有服务器宕机,heartbeat服务本身故障或者heartbeat主备之间的连接线路出现问题才会发生切换。所以如果服务宕机了,就需要手动把heartbeat停掉。
二 安装和配置
2.1 环境说明
准备两台liunx主机,在各自的/etc/hosts/里面添加两行内容
192.168.141.131 master(主机名)
192.168.141.132 slave (主机名)
每个服务器上面有两块网卡,其中eth1作为两台机器间的心跳线,eth0用作普通的通信用(用一块网卡也可以做实验)
把两台主机的iptables 和selinux关闭,然后两个服务器安装nginx服务,让nginx具有高可用
2.2 安装
安装软件包 yum install -y heartbeat,在安装这个软件包之前需要先安装个epel的扩展源
wget www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm
然后再 yum install heartbeat 和yum install libnet -y (依赖关系)
2.3 更改配置文件(主)
拷贝配置文件
cd /usr/share/doc/heartbeat-3.0.4/ cp authkeys ha.cf haresources /etc/ha.d/
编辑 authkeys
auth 3 (用第三种方式认证) #1 crc #2 sha1 HI! 3 md5 Hello! (加密) 更改权限 chmod 600 authkeys (是当前用户可以执行)
编辑 haresources这个配置文件
master 192.168.141.110/24/eth0:0 nginx
说明:master 是指当前主机的主机名 这个ip地址是自定义的如果在实际环境中,这个一般是公网ip地址,后面可以添加别的服务,例如:mysql apache等
编辑ha.cf
debugfile /var/log/ha-debug logfile /var/log/ha-log logfacility local0 keepalive 2 //多长时间探测一次 deadtime 30 // 如果30秒ping不通了,就认为死掉了 warntime 10 #10秒ping不通会发出警告 initdead 60 #防止对方服务器重启预留一段时间 udpport 694 #心跳线通讯端口 ucast eth1 192.168.141.198(slave的主机地址) auto_failback on node master #你的主服务器的主机名(不能写错) node slave #从的服务器的主机名 ping 192.168.141.1(仲裁地址,判断谁死谁活) respawn hacluster /usr/lib64 /heartbeat/ipfail(检测网络的连通性)如果系统是32位则不用加这个64
2.4 更改配置文件(从)
把三个文件拷贝到从上面
scp authkeys haresources ha.cf 192.168.1.2:/etc/ha.d/
只更改ha.cf这个配置文件
ucast eth0 192.168.141.131 (主服务器的ip)
三安装NGINX
由于我们这里测试的是ngInx,所有两台机器需要安装nginx软件包,这里我们用yum 安装
yum install nginx 安装完之后,在两台机器上做些设置
主上:echo "master1111111111111111" > /usr/share/nginx/html/index.html
从上:echo "slave22222222222222222" > /usr/share/nginx/html/index.html
这样有助于我们看的明白
四 启动和测试
先启动主的heartbeat服务,然后再启用从的,nginx服务不用手动启动,会跟随heartbeat 这个服务自己启动
最后,用ifconfig -a 或者ip add 查看,如果看到etho0:0 这个ip ,代表成功,
测试:把主的heartbeat服务停掉,或者在主上面加一条禁止ping的,iptables -A INPUT -p icmp -j DROP
看是否从的nginx服务会自动启动,如果可以自己启动,则代表成功,
注意:当主的heartbeat 服务停止时 ,它上面的nginx服务同样会停止,当主的heartbeat服务恢复启动时,从的hearbeat服务会自动停止,nginx服务也会停止。
也可以用浏览器去访问产生的虚拟ip
说明:heartbeat日志路径/var/log/ha-log