您的位置:首页 > 其它

heartbeat

2015-08-23 23:19 387 查看
Heartbeat高可用




在整个环境中,通过heartbeat建立的高可用环境中,只有一台服务器是正常工作,另外一台服务器作为备份服务器。其工作原理是通过访问“虚拟IP”,虚拟IP根据heartbeat设置的“主节点”,定位到服务器。
第一步:按照环境,完成IP地址的配置,测试连通性








第二步:
1. hostname 设置好,分别为web1和 web2
2. 关闭防火墙iptables -F;
关闭selinux: setenforce 0
3. 在 web1和web2 的/etc/hosts 增加如下内容
192.168.0.107 web1 192.168.0.108 web2

第三步:根据环境部署两台web服务器,部署简单nginx测试环境
Yum install nginx
已默认的web目录(/usr/share/nginx/html/)下,建立测试页面,并启动nginx服务(/etc/init.d/nginx start)
Web.html
内容为server1(192.168.0.107) page



Web.html
内容为 server2(192.168.0.108) page



注意:两台服务器上的都为web.html,保证数据的一致性,而内容不一致,只为了测试使用

第四步:分别在两个服务器上安装heartbeat / libnet(注意需安装epel-release源)
yum install -y heartbeat* libnet

第五步:主服务器配置(主要配置authkeys、ha.cf、haresources三个文件)
[root@web1sysconfig]# cd /usr/share/doc/heartbeat-3.0.4/
[root@web1heartbeat-3.0.4]# cp authkeys ha.cf haresources/etc/ha.d/

1、 配置authkeys(启动 3 md5 hello!的验证方式)auth 3
#1 crc
#2 sha1 HI!
3 md5Hello!

chmod600 authkeys #设置authkeys的权限为600

2、配置haresources (配置虚拟IP和启动的服务)haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等。其配置语句格式如下:
web1 192.168.0.200/24/eth1:0 nginx

web1为主节点名字,主节点的确定为ha.cf配置的第一个节点(node选项)就为“主节点”
nginx表示为启动的服务
eth1:0表示使用的接口
注意:两台服务器的haresources配置必须一致

3、 配置ha.cfdebugfile/var/log/ha-debug
logfile/var/log/ha-log
logfacility local0
keepalive 2 #跳的时间间隔,默认时间单位为秒
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth210.0.11.12 #单播测试对端心跳线网络地址
auto_failback on #heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点并由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
node web1 #表示设置的主节点
node web2
ping 192.168.0.1 #将网关看成一个伪集群成员,与下面的ipfail一起使用。注意:不要使用一个集群节点作为ping节点
respawn hacluster/usr/lib/heartbeat/ipfail #指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。

第六步:将如上的三个文件,copy到web2的/etc/ha.d/目录下

[root@web1 ha.d]# scp authkeys ha.cfharesources web2:/etc/ha.d/

在web2上修改ha.cf的ucasteth2 10.0.11.12 改为 ucast eth2 10.0.11.11

第七步:
1、先关闭nginx服务
2、启动heartbeat :
先主,后从
service heartbeat start
3、检查测试
ifconfig 查看看是否有 eth1:0
ps aux |grep nginx 查看是否启动了nginx
web1






Web2 服务器上,没有启动eth1:0和nginx

4、 测试访问http://192.168.0.200/web.html,返回的结果为“主节点(192.168.0.107)”的内容,如下所示


第八步:故障模拟
1、主上故意禁ping
[root@web1 html]# iptables -I INPUT -p icmp -jDROP

此时web2会接替web1工作,如下所示



注意:如果web1故障恢复,会主动抢占回去

2、测试2
主上停止heartbeat服务
service heartbeat stop
同理web2会接替web1的工作

3、测试3
测试分裂
主和从上都down掉eth2(心跳线)网卡
ifdown eth2

如果心跳线出现故障,如下所示,主和从都会启动eth1:0和nginx服务
Web1





Web2







出现这样的情况,就到导致访问服务时,一会在web1,一会在web2,导致访问不稳定。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  heartbeat