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健康状况监测

VRRPVirtual Router Redundancy Protocol虚拟路由冗余协议,是一种容错协议。该协议通过把几台路由设备联合组成一台虚拟的路由设备,使用一定的机制保证当主机的下一跳交换机出现故障时,及时将业务切换到其它交换机,从而保持通讯的连续性和可靠性;这里对VRRP协议不做过多介绍,有兴趣的朋友可以去查看VRRP官方帮助文档


搭建环境:RHEL5.8 32bitapache2.2lvskeepalived-1.2

搭建步骤:

一、实现director和各个realserver的互信通信、时间同步、互相解析

二、在realserver上安装web服务,搭建LVSDR环境

三、对directorHA高可用,解决director单点故障问题


企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第1张图片

搭建LVS环境:互信通信,时间同步,互相解析


企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第2张图片

安装lvs并对director--HA 1进行配置:

1. 安装ipvsadm命令行工具包:

2. 使用脚本快速对director网卡和ipvs进行配置:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第3张图片

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第4张图片

对两个realserver分别进行安装配置:

首先安装httpd服务所需的RPM

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第5张图片


使用脚本快速配置realserver的内核和网络参数:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第6张图片

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第7张图片

执行脚本进行编辑配置,发现此时已经配置有VIP和路由:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第8张图片

另外一台realserver配置相同;此时我们到director上运行lvs规则脚本,并查看后端realserver是否已成功链接

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第9张图片

此时到客户机上进行lvs的测试:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第10张图片

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第11张图片


此时一个简单的web集群已经搭建成功,但是这个模型容易出现director单点故障,所以我们使用keepalived对这个lvs做高可用:

director上安装keepalived,并对keepalived做简单配置:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第12张图片


企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第13张图片

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第14张图片

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第15张图片

如果要是用TCP_CHECK检测各realserver的健康状态,那么,上面关于realserver部分的定义也可以替换为如下内容:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第16张图片

编辑notify脚本:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第17张图片

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第18张图片

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第19张图片

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第20张图片

启动keepalived服务,并对realserver进行查看:

我们模拟其中一个realserver宕掉,并再次查看lvs,发现只有一个realserver

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第21张图片

因为我们提供的有sorry server,所以我们要在director上安装httpd服务:


企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第22张图片

此时如果我们将两个realserverhttpd服务全部关闭,再到director上查看,发现已经启动127.0.0.1

   

   企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第23张图片

此时我们再到客户端进行测试,发现页面已经转换为sorry

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第24张图片

此时我们将RS2上的httpd服务打开,发现director立即能够发现,客户端的页面可正常访问:

   

   企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第25张图片

   企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第26张图片

下面我们进行故障测试,来验证lvsHA功能:

查看主lvs节点和备用lvs节点的网卡配置情况,发现此时的VIP在节点一上:

   企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第27张图片

   企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第28张图片


我们模拟故障,在节点一的/etc/keepalived目录下创建一个down文件,并在此查看:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第29张图片

发现此时的VIP已经漂移到节点二上:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第30张图片

我们客户端的访问并没有收到影响,实现了web集群的高可用:

企业级RHEL5.8 下实现Keepalived + LVS集群高可用_第31张图片


此时Keepalived + LVS的集群高可用已经搭建完成