天天看点

keepalived+lvs实现lvs的高可用

keepalived+lvs实现lvs的高可用

keepalived的介绍:

keepalived是借用VRRP协议来实现高可用性的,VRRP协议是解决单点故障,使路由器和层三交换机实现冗余功能。

keepalived+lvs实现lvs的高可用

keepalived启动后会有三个进程

父进程:内存管理,子进程管理等等

子进程:VRRP子进程

子进程:healthchecker子进程

从图上可以看出,两个子进程都被系统WatchDog看管,两个子进程各自操作自己的事,healthchecker子进程负责检查各自服务器的健康程度,例如HTTP,LVS等等,如果healthchecker子进程检查到MASTER上服务不可用了,就会通知本机上的VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态

为什么要用keepalived+lvs?

lvs是一个在四层上实现后端realserver的负载均衡的集群,lvs遗留下两个问题,一个是lvs的单点故障;第二个是lvs不能检测后端realserver的健康状态检查。

解决lvs的单点故障就用到了高可用集群:

①、可以是heartbeat+ldirectord这种重量级的;

②、可以是keepalived+lvs这种轻量级的解决方案。(本博客主要写keepalived+lvs轻量级的解决方案),

解决lvs不能检测后端realserver的健康状态也后很多种方法:

①、可以在lvs上写脚本ping后端realserver的ip地址,ping几次发现ip地址ping不通则在ipvs规则里面删除,当后端服务器可以ping了,则把后端realserver添加到ipvs规则里面。

②、可以在lvs上写脚本请求后端realserver的测试几次网页文件,查看状态码是否为200,不是则在ipvs规则里面清楚,当测试网页返回的状态吗是200之后,则把后端realserver添加到ipvs规则里面

③、以上两种方法都是依赖于脚本,keepalived的出现解决了不依赖于脚本,也可以对后端realserver的健康状态检查,keepalived的配置文件里面可以自行生成ipvs的规则,并且自行检测后端realserver的状态,当后端realserver不能提供服务了,keepalived会自行将其在ipvs规则里面删除,当后端realserver可以提供服务了,又自行的在ipvs规则里面添加。

实验环境:

OS:Centos 6.4(redhat 6.4)

yum源:

实验拓扑图:

keepalived+lvs实现lvs的高可用

拓扑图的规划:

IP地址

软件

Master

172.16.22.1(VIP:172.16.22.100)

keepalived+ipvsadm

Backup

172.16.22.2(VIP:172.16.22.100)

apache1

172.16.22.3(VIP:172.16.22.100)

httpd

apache2

172.16.22.4(VIP:172.16.22.100)

注:Master和Backup上面安装ipvsadm主要是为了查看ipvs的规则

一、安装配置操作

Master:

1、安装(博主这里用rpm包安装,各位朋友可以用源码编译安装keepalived)

2、修改配置文件

3、开启服务

Backup:

1、安装

apache1:

1、安装(博主这里用rpm包安装,各位朋友可以用源码编译安装)

2、建立测试网页文件

4、修改内核参数和配置vip

apache2:

此致所有安装已经完成。

二、相关的测试:

查看相关的vip和ipvs规则

keepalived+lvs实现lvs的高可用

测试后端realserver是否可以访问:

apache1可以访问

keepalived+lvs实现lvs的高可用

apache2可以访问

keepalived+lvs实现lvs的高可用

而且是根据wrr算法,平均负载到realserver上

停掉Master的keepalived服务,vip和ipvs规则切换到Backup服务器上

keepalived+lvs实现lvs的高可用

停掉apache1的服务,看ipvs的规则是否清除,显示已经清楚规则

开启apache1的服务,ipvs自动将其又添加上

此致,keepalived实现lvs的高可用已经完成,可以自动的故障转移,还可以根据后端realserver的状态,自动的修改其规则