一、Keepalived概述
keepalived是一个类似于layer3,4,5交换机制的软件,也就是我们平时说的第3层、第4层和第5层交换。Keepalived的作用是检测web服务器的状态,如果有一台web服务器死机,或工作出现故障,Keepalived将检测到,并将有故障的web服务器从系统中剔除,当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
Layer3,4&5工作在IP/TCP协议栈的IP层,TCP层,及应用层,原理分别如下:Layer3:Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既我们平时用的Ping程序),如果发现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除,这种情况的典型例子是某台服务器被非法关机。Layer3的方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。Layer4主要以TCP端口的状态来决定服务器工作正常与否。
如webserver的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。Layer5:Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂一点,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器程序的运行是否正常,如果与用户的设定不相符,则Keepalived将把服务器从服务器群中剔除。
二、LVS概述
LVS集群采用IP负载均衡技术,属于IP层的交换(L4)具有很好的吞吐率。调度器分析客户端到服务器的IP报头信息,将请求均衡地转移到不同的服务器上执行,且调度器自动屏蔽掉服务器的故障,从而将一组服务器构成一个高性能的、高可用的虚拟服务器。主要包含四大部分:
负载调度器(loadbalancer),它是整个集群对外面的前端机,负责将客户的请求发送到一组服务器上执行,而客户认为服务是来自一个IP地址上的。当客户请求到达时,调度器只根据负载情况从服务器池中选出一个服务器,将该请求转发到选出的服务器,并记录这个调度;
服务器池(serverpool),是一组真正执行客户请求的服务器,执行的任务有WEB、MAIL、FTP和DNS等。服务器池的结点数目是可变的,当整个系统收到的负载超过目前所有结点的处理能力时,可以在服务器池中增加服务器来满足不断增长的请求负载
后端存储(backend storage),它为服务器池提供一个共享的存储区,这样很容易使得服务器池拥有相同的内容,提供相同的服务
Graphic Monitor是为系统管理员提供整个集群系统的监视器,它可以监视系统中每个结点的状况。
LVS+keepalived架构图
测试环境:
名称 | 操作系统 | IP地址 |
LVS-Master | Centos7.2-x86_64 |
192.168.137.100 |
LVS-Backup | Centos7.2-x86_64 | 192.168.137.110 |
WebserverA | Centos7.2x86_64 | 192.168.137.120 |
WebserverB | Centos7.2x86_64 | 192.168.137.130 |
Client | Windows7x86_64 | 192.168.137.210 |
三、编译安装keepalived
1)安装所需的软件 (以下是Master操作)
# yum install -y openssl-devel popt-devel
2)在LVS集群环境中应用时,也需要用到ipvsadm管理工具。
# yum install -y ipvsadm
3)正式编译安装keepalived
# tar zxf keepalived-1.2.13.tar.gz
[root@master ~]# cd keepalived-1.2.13/
[root@master keepalived-1.2.13]# ./configure --prefix=/ && make && make install
4)执行完make install之后会自动生成/etc/init.d/keepalived脚本文件,但是需要手动添加为系统服务,如下:
# ls -l /etc/init.d/keepalived
-rwxr-xr-x. 1 root root 1308 Oct 28 19:28 /etc/init.d/keepalived
[root@master keepalived-1.2.13]# chkconfig --add keepalived
[root@master keepalived-1.2.13]# chkconfig keepalived on
到这里我们的keepalived正式安装完毕
Master安装完成后backup的安装和master的安装过程是一模一样的,这里我就不做演示。大家在backup上安装keepalived的时候可以翻到上面开始安装backup即可。
四、配置主调度器
安装完成后主配置文件目录:/etc/keepalived/keepalived.conf中,打开主配置修改如下:
# vim /etc/keepalived/keepalived.conf
2)配置从调度器,其实从和主的主配都差不多一样,那么接下来我直接把我主上面的主配置拷贝到从服务器上然后在做修改就好了。
# scp /etc/keepalived/keepalived.conf root@192.168.137.110:/etc/keepalived/keepalived.conf然后配置从调度器的主配置文件,修改如下:
修改完成后,master和backup的主配置文件到这里已经结束了。接下来启动keepalived,查看IP地址
以上图中可以看到vip地址已经承载到了这块网卡上,接下来启动从服务器查看IP地址
以上图中可以看到从服务器上面没有vip地址的,那么就是正常的,因为它是老二,是一个备用服务器,啥时候等主服务器挂了那么它就会自动继承主服务器该做的事情。
3)接下来在主服务器查看节点的状态
# ipvsadm -L -n
从上图中可以看到,就一个VIP地址,不是要负载后端的两台web吗为什么没有,这是因为我们还没有配置web服务器,所以接下来安装httpd服务。这里我就不做安装的演示了,相信大家是没问题的。
为了测试所以我们导入两个不同的测试页并将vip地址添加到网卡
webA如下:
WebB如下:
启动web服务器后,关闭master&backup&httpA&B的selinux以及防火墙(测试)
关闭selinux以及防火墙后,我们再次查看主服务器的节点状态,查看是否有webA&B
从上图中可以看到当前的负载情况,那么证明我们之前的操作是没有问题的。
4)访问webA和webB测试是否可以访问到我们写入的测试页
5)访问VIP地址不断刷新,出来以下界面说明我们的负载已经搞定了
最后我们测试双击热备,在这里我们先看一下master和backup的ip信息。
主服务器ip信息
从服务器ip信息
这时候我们把master的ip地址干掉,就是故意摧毁掉它,再次查看backup的ip信息
此时主服务器已经宕机,查看从服务器IP地址
我们可以看到vip地址成功的让backup接管,这就是我们前面说的这句话:
如果有一台web服务器宕机,或工作出现故障,Keepalived将检测到,并将有故障的服务器从系统中剔除,同时使用其他服务器代替该服务器的工作,当服务器工作正常后Keepalived自动将服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的服务器。这就实现了我们的高可用。然后在次测试
目前master处于宕机状态我们尝试修复master然后查看master的IP地址状态
我们发现master修复完成后VIP地址自动会跑到master服务器上,从而提供正常的服务,这还是上边的那句话当web服务器工作正常后Keepalived自动将web服务器加入到服务器群中,这些工作全部自动完成,不需要人工干涉,需要人工做的只是修复故障的web服务器。
查看从服务器IP地址
此时master继续提供服务
希望对您有所帮助,再见