Keepalived + LVS 实现lvs的高可用:
现在的社会中,人们对于网络体验的要求越来越高,企业将多个服务器集中在一起,使用集群DR模型共同提供web页面服务,使得我们的网页浏览速度大大提高,服务器的负载大大减小;但是DR模型中和客户端相连的,向外提供服务的director很容易成为真个网络中的单点故障,我们要尽量避免这样的问题,所以对director做高可用,当后端的RS1或者RS2出现故障时前端的director能够检测到,并将其从realserver列表中移除,将所有客户端的请求全部发送到正常工作的realserver上,如果两个realserver全部宕机,则前端的director能够向用户提供一个提示页面,使得用户不会因为不能正常访问页面而流失;而且当director出现故障时,在director上的VIP能够自动漂移到另外一台director上,并且在这台director上使用VIP,启动与HA1相同的LVS规则,启动WEB服务,继续提供sorry页面,实现了director的高可用
这里我们借助keepalived实现这个功能,keepalived最初设计目的是为ipvs提供高可用功能,借助于VRRP协议,实现IP地址的漂移;转移开启LVS服务,完成health check健康状况监测
VRRP:Virtual Router Redundancy Protocol虚拟路由冗余协议,是一种容错协议。该协议通过把几台路由设备联合组成一台虚拟的路由设备,使用一定的机制保证当主机的下一跳交换机出现故障时,及时将业务切换到其它交换机,从而保持通讯的连续性和可靠性;这里对VRRP协议不做过多介绍,有兴趣的朋友可以去查看VRRP官方帮助文档
搭建环境:RHEL5.8 32bit,apache2.2,lvs,keepalived-1.2
搭建步骤:
一、实现director和各个realserver的互信通信、时间同步、互相解析
二、在realserver上安装web服务,搭建LVS的DR环境
三、对director做HA高可用,解决director单点故障问题
搭建LVS环境:互信通信,时间同步,互相解析
安装lvs并对director--HA 1进行配置:
1. 安装ipvsadm命令行工具包:
2. 使用脚本快速对director网卡和ipvs进行配置:
对两个realserver分别进行安装配置:
首先安装httpd服务所需的RPM包
使用脚本快速配置realserver的内核和网络参数:
执行脚本进行编辑配置,发现此时已经配置有VIP和路由:
另外一台realserver配置相同;此时我们到director上运行lvs规则脚本,并查看后端realserver是否已成功链接
此时到客户机上进行lvs的测试:
此时一个简单的web集群已经搭建成功,但是这个模型容易出现director单点故障,所以我们使用keepalived对这个lvs做高可用:
在director上安装keepalived,并对keepalived做简单配置:
如果要是用TCP_CHECK检测各realserver的健康状态,那么,上面关于realserver部分的定义也可以替换为如下内容:
编辑notify脚本:
启动keepalived服务,并对realserver进行查看:
我们模拟其中一个realserver宕掉,并再次查看lvs,发现只有一个realserver:
因为我们提供的有sorry server,所以我们要在director上安装httpd服务:
此时如果我们将两个realserver的httpd服务全部关闭,再到director上查看,发现已经启动127.0.0.1:
此时我们再到客户端进行测试,发现页面已经转换为sorry:
此时我们将RS2上的httpd服务打开,发现director立即能够发现,客户端的页面可正常访问:
下面我们进行故障测试,来验证lvs的HA功能:
查看主lvs节点和备用lvs’节点的网卡配置情况,发现此时的VIP在节点一上:
我们模拟故障,在节点一的/etc/keepalived目录下创建一个down文件,并在此查看:
发现此时的VIP已经漂移到节点二上:
我们客户端的访问并没有收到影响,实现了web集群的高可用:
此时Keepalived + LVS的集群高可用已经搭建完成