你的位置:首页 > 网络运维

使用heartbeat实现web服务器互为主备高可用实战

2年前 (2017-05-08) 浏览:(547) 网络运维 评论(0)

一、实验环境初始化

三台服务器,办公电脑作为客户端

1、abao61web主 (建议双网卡)

2、abao62web备 (建议双网卡)

3、abao63存储池



1:配置hosts文件,服务器之间互相解析

# vim /etc/hosts

192.168.1.117abao61.cnabao61

192.168.1.118abao62.cnabao62

192.168.1.119abao63.cnabao63


2:清空防火墙

getenforce


3:关闭SELinux

iptables -F && /etc/init.d/iptables save


二、共享存储配置


使用abao63作为存储池,配置NFS共享资源

[root@abao63 ~]# yum -y install nfs-utils#安装NFS网络文件系统

[root@abao63 ~]# mkdir /wwwdir#创建NFS目录

[root@abao63 ~]# echo "HeartBeat HTTP Server Test" > /wwwdir/index.html

[root@abao63 ~]# vim /etc/exports#配置NFS文件系统

/wwwdir 192.168.1.0/24(rw)


[root@abao63 ~]# chmod -R  777 /wwwdir/

#重启并设置开机启动

[root@abao63 ~]# service nfs restart

[root@abao63 ~]# chkconfig nfs on


[root@abao63 ~]# showmount -e#配置成功

Export list for abao63:

/wwwdir 192.168.1.0/24


三、主、备web服务器

[root@abao61 ~]# yum -y install httpd

[root@abao61 ~]# showmount -e abao63

Export list for abao63:

/wwwdir 192.168.1.0/24


#挂载NFS文件系统

[root@abao61 ~]# mount -t nfs 192.168.1.119:/wwwdir /var/www/html/

[root@abao61 ~]# service httpd restart

[root@abao61 ~]# curl 127.1

HeartBeat HTTP Server Test


[root@abao61 ~]# umount /var/www/html/#卸载资源,后期通过hearbeat加载


[root@abao61 ~]# service httpd stop#停止httpd

[root@abao61 ~]# chkconfig httpd on


从web服务器,配置与主web服务器一致


主、备web服务器安装heartbeat包

[root@abao61 ~]# yum -y install heartbeat


四、配置Heartbeat


#修改heartbeat主配置文件

[root@abao61 ~]# cp /usr/share/doc/heartbeat-3.0.4/ha.cf /etc/ha.d/


#主备节点间通信时所使用的验证文件,保证安全性

[root@abao61 ~]# cp /usr/share/doc/heartbeat-3.0.4/authkeys /etc/ha.d/


#定义浮动资源的配置文件

#浮动资源:1: 公网IP地址;2: HTTP服务;3:存储,NFS挂载

[root@abao61 ~]# cp /usr/share/doc/heartbeat-3.0.4/haresources /etc/ha.d/


#设置主备节点间通信时所使用的验证文件,保证安全性。

[root@abao61 ~]# vim /etc/ha.d/authkeys

auth 3#去掉注释

#1 crc

#2 sha1 HI!

3 md5 abao~.123#去掉注释,修改MD5加密值


#此文件权限必须是600,否则启动不成功

[root@abao61 ~]# chmod 600 /etc/ha.d/authkeys

注:/etc/ha.d/authkeys文件决定了认证密钥。共有三种认证方式:CRC、MD5、sha1.

如果Heartbeat运行于安全网络之上,如本例中的交叉线,可以使用CRC,从资源的角度来看,这是代价最低的方式。如果网络并不安全,但也希望降低CPU使用,则使用MD5。最后,如果想得到最好的认证,而不考虑CPU使用情况,则使用sha1,它在三者之中最难破解。


五、定义浮动资源(VIP:192.168.1.11)

[root@abao61 ~]# vim /etc/ha.d/haresources

#node-name resource1 resource2 ... resourceN

abao61 IPaddr::192.168.1.11/24/eth0 Filesystem::192.168.1.119:/wwwdir::/var/www/html::nfs httpd


#注:node-name填的是主服务器的主机名。

#IPaddr::192.168.1.11/24/eth0指定VIP及绑定到哪个网卡上

#Filesystem::192.168.1.119:/wwwdir::/var/www/html::nfs指定要挂载的存储

#httpd指定要启动的服务。注,这个服务必须是在/etc/init.d下,可以通过service去开启或关闭


#测试是否正常

[root@abao61 ~]# /etc/ha.d/resource.d/IPaddr 192.168.1.11/24/eth0 start  

[root@abao61 ~]# ip addr#查看IP,ifconfig看不到11的IP

#手动加载NFS存储资源到/var/www/html

[root@abao61 ~]# /etc/ha.d/resource.d/Filesystem 192.168.1.119:/wwwdir /var/www/html/ nfs start    (重启电脑之后需要重做这一步)

#查看挂载的资源

[root@abao61 ~]# mount | grep wwwdir

192.168.1.119:/wwwdir on /var/www/html type nfs (rw,vers=4,addr=192.168.1.119,clientaddr=192.168.1.117)


[root@abao61 ~]# service httpd start


六、配置主配置文件

[root@abao61 ~]# grep ^[^#] /etc/ha.d/ha.cf 

logfacilitylocal0

auto_failback on

#auto_failback on为on时,主节点恢复正常后,资源自动转给主节点。建议设为auto_failback off,等主节点恢复正常后,在业务不繁忙时,切换回来。防止主节点恢复正常时,回切时,再次引起网络中断。


[root@abao61 ~]# vim /etc/ha.d/ha.cf

24 debugfile /var/log/ha-debug#这些行除开auto_failback on默认启用,其他手动启用

29 logfile /var/log/ha-log

48 keepalive 2#设定 heartbeat 之间的时间间隔为 2 秒。

56 deadtime 30#在 30 秒后宣布节点死亡。

61 warntime 10#在日志中发出“late heartbeat“警告乀前等待的时间,单位为秒。

71 initdead 120#在某些系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔。取值至少为 deadtime 的两倍。

76 udpport 694#使用端口 694 进行 bcast 和 ucast 通信。这是默认的,并且在 IANA 官方注册的端口号。

121 ucast eth0 192.168.1.118#需要修改,表示从本机的 eth0 接口发心跳消息给对方节点,写另一端的 IP 地址 。 这是单播地址。 abao62上改为 192.168.1.117  。心跳网卡 ,如果你有两个网卡,可以写成 eth1 注:配置文件中 91行 #bcast  eth0   #表示在 eth0 接口上使用广播 heartbeat(将 eth1 替换为 eth0, eth2,或者您使用的任何接口)。

157 auto_failback on#默认启用,当 auto_failback 设置为 on 时,一旦主节点重新恢复联机,将从从节点取回所有资源。若该选项设置为 off,主节点便不能重新获得资源。

211 node    abao61#需要修改,该选项是必须配置的。集群中机器的主机名,必须与“uname –n”的输出相同。

212 node    abao62#需要修改

220 ping 192.186.1.254#需要修改,通过ping命令实现仲裁

253 respawn hacluster /usr/lib64/heartbeat/ipfail         #需要修改

259 apiauth ipfail gid=haclient uid=hacluster


七、配置web备

从主web文件传过去

[root@abao61 ~]# cd /etc/ha.d/

[root@abao61 ha.d]# scp ha.cf haresources authkeys abao62:/etc/ha.d/

[root@abao62 ~]# chmod 600 /etc/ha.d/authkeys

#修改单播IP

[root@abao62 ~]# vim /etc/ha.d/ha.cf

ucast eth0 192.168.1.117


启动Heartbeat

[root@abao61 ~]# /etc/init.d/heartbeat restart

[root@abao61 ~]# chkconfig heartbeat on 

[root@abao62 ~]# /etc/init.d/heartbeat restart

[root@abao62 ~]# chkconfig heartbeat on 

Stopping High-Availability services: Done.


Waiting to allow resource takeover to complete:Done.

#等待资源接管完成。takeover接管。当启动停留在这个界面是,abao62会接管所有浮动资源。等待下面启动成功时,abao62会释放资源,浮动资源,再次加重


Starting High-Availability services: INFO:  Resource is stopped

Done.


[root@abao61 ~]# netstat -antup | grep 694

udp        0      0 0.0.0.0:694                 0.0.0.0:*                               4333/heartbeat: wri


[root@abao62 ~]# netstat -antup | grep 694

udp        0      0 0.0.0.0:694                 0.0.0.0:*                               4333/heartbeat: wri


八、查看集群资源

web主

[root@abao61 ~]# ip addr#VIP1.11有


[root@abao61 ~]# service httpd status#服务是启动的

httpd (pid  4153) is running...

#NFS已挂载


web备

[root@abao61 ~]# ip addr#VIP没有虚拟IP


#NFS未挂载

测试

#关闭abao61的网卡,等待30s,在config上查看IP,NFS等状态

[root@abao61 ~]# ifdown eth0#虚拟机效果


#虚拟IP已经转移过来

[root@abao62 ~]# ip addr


访问测试,测试成功

 

abao61恢复连接

[root@abao61 ~]# service network restart#启动网络


九、配置主备

#vim /etc/ha.d/vim haresources

abao61 IPaddr::192.168.1.11/24/eth0 Filesystem::192.168.1.119:/wwwdir::/var/www/html::nfs httpd

abao62 IPaddr::192.168.1.12/24/eth0 Filesystem::192.168.1.119:/wwwdir::/var/www/html::nfs httpd

尊重共享,欢迎转载,请自觉添加本文链接,谢谢!本文链接:https://www.601849.com/post/181.html