Heartbeat高可用

 

heartbeat

 

在整个环境中,通过heartbeat建立的高可用环境中,只有一台服务器是正常工作,另外一台服务器作为备份服务器。其工作原理是通过访问“虚拟IP”,虚拟IP根据heartbeat设置的“主节点”,定位到服务器。

 

第一步:按照环境,完成IP地址的配置,测试连通性

 

heartbeat

heartbeat


第二步:

1. hostname 设置好,分别为web1 web2

2. 关闭防火墙iptables -F; 

   关闭selinux setenforce 0

3. web1web2 /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

内容为server1192.168.0.107 page

heartbeat

Web.html

内容为 server2192.168.0.108 page

heartbeat

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

 

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

yum  install -y heartbeat*   libnet

 

第五步:主服务器配置(主要配置authkeysha.cfharesources三个文件)

[[email protected]]# cd /usr/share/doc/heartbeat-3.0.4/

[[email protected]]# 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.cf

debugfile/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来检测网络连接。

 

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

 

[[email protected] ha.d]# scp authkeys ha.cfharesources web2:/etc/ha.d/

 

web2上修改ha.cfucasteth2 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

heartbeatheartbeat


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

 

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

heartbeat

 

第八步:故障模拟

1、主上故意禁ping
[[email protected] html]# iptables -I INPUT -p icmp -jDROP

 

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

heartbeat

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

 

2测试2
主上停止heartbeat服务

service heartbeat stop

同理web2会接替web1的工作

 

3、测试3

测试分裂

主和从上都downeth2(心跳线)网卡

ifdown eth2

 

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

Web1


heartbeatheartbeat

Web2

heartbeat

heartbeat

 

出现这样的情况,就到导致访问服务时,一会在web1,一会在web2,导致访问不稳定。