keepalived
keepalived是什么
keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障
那么什么是高可用呢
计算机系统的可用性用平均无故障时间(MTTF)来度量,即计算机系统平均能够正常运行多长时间,才发生一次故障。系统的可用性越高,平均无故障时间越长。
负载均衡服务器的高可用性
为了屏蔽负载均衡服务器的失效,需要建立一个备份机。主服务器和备份机上
都运行High Availability监控程序,通过传送诸如“I am
alive”这样的信息来监控对方的运行状况。当备份机不能在一定的时间内收到这样的信息时,它就接管主服务器的服务IP并继续提供服务;当备份管理器又
从主管理器收到“I am alive”这样的信息时,它就释放服务IP地址,这样的主管理器就开始再次进行集群管理的工作了。为在主服务器失效的情况下系统能正常工作,我们在主、备份机之间实现负载集群系统配置信息的同步与备份,保持二者系统的基本一致。
keepalived工作原理
keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议。
虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个
backup,master上面有一个对外提供服务的vip(该路由器所在局域网内其他机器的默认路由为该vip),master会发组播,当
backup收不到vrrp包时就认为master宕掉了,这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。
keepalived主要有三个模块,分别是core、check和vrrp。core模块为keepalived的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。check负责健康检查,包括常见的各种检查方式。vrrp模块是来实现VRRP协议的。
工作原理
keepalived是一个类似于layer3, 4 & 5交换机制的软件,也就是第3层、第4层和第5层交换,分别工作在IP/TCP协议栈的IP层、TCP层、应用层,原理分别如下: Layer3:
Keepalived使用Layer3的方式工作式时,Keepalived会定期向服务器群中的服务器发送一个ICMP的数据包(既Ping),如果发
现某台服务的IP地址没有激活,Keepalived便报告这台服务器失效,并将它从服务器群中剔除(这种情况的典型例子是某台服务器被非法关机)。
Layer3方式是以服务器的IP地址是否有效作为服务器工作正常与否的标准。 Layer4: Layer4主要以TCP端口的状态来决定服务器工作正常与否。如web server的服务端口一般是80,如果Keepalived检测到80端口没有启动,则Keepalived将把这台服务器从服务器群中剔除。 Layer5: Layer5就是工作在具体的应用层了,比Layer3,Layer4要复杂,在网络上占用的带宽也要大一些。Keepalived将根据用户的设定检查服务器相应服务是否运行正常,如果没有正常运行,则Keepalived将把服务器从服务器群中剔除。
Keepalived主从切换
主从切换比较麻烦,需要将backup配置文件的priority选项的值调整的比master高50个点,然后reload配置文件就可以切换了。也可以将master的keepalived停止,这样也可以进行主从切换。
更多的是让keepalived根据VRRP协议自动切换不手动切换。
基于LVS博客做的此实验
先关掉ldirectord以免冲突,并设置开机不启动
在安装keepalived前,先解决依赖性
yum install -y libnfnetlink-devel-1.0.0-1.el6.x86_64.rpm
yum install -y openssl-devel libnl-devel iptables-devel
[[email protected] ~]# tar zxf keepalived-1.4.0.tar.gz 解压
[[email protected] keepalived-1.4.0]# ./configure --prefix=/usr/local/keepalived/ --with-init=SYSV 编译
编译完成,会生成makefile
make 编译
make install 安装
做软连接
[[email protected] keepalived-1.4.0]# ln -s /usr/local/keepalived/etc/rc.d/init.d/keepalived /etc/init.d/
[[email protected] keepalived-1.4.0]# ln -s /usr/local/keepalived/etc/sysconfig/keepalived /etc/sysconfig/
[[email protected] keepalived-1.4.0]# ln -s /usr/local/keepalived/etc/keepalived /etc/
[[email protected] keepalived-1.4.0]# ln -s /usr/local/keepalived/sbin/keepalived /usr/sbin
加执行权限
[[email protected] keepalived]# /etc/init.d/keepalived start 开启服务
修改配置文件
[[email protected] keepalived]# /etc/init.d/keepalived reload 重新加载
打开server2,3的http服务
客户端测试
当关掉server2的http服务时,客户访问时会出现问题
下面做高可用
当主调度器故障,备用调度器启动
在开启一台server4 做备机,配置与server1一致
[[email protected] yum.repos.d]# vim rhel-source.repo 先配置yum源
在将1上的keepalived移动到4上,保持一样的配置
做软连接,加执行权限
修改配置文件
[[email protected] keepalived]# cd /etc/keepalived/
[[email protected] keepalived]# ls
keepalived.conf keepalived.conf.bak samples
[[email protected] keepalived]# vim keepalived.conf
修改 state 和 优先级
[[email protected] keepalived]# /etc/init.d/keepalived start 开启服务
[[email protected] keepalived]# yum install -y ipvsadm 安装
查看
[[email protected] local]# /etc/init.d/keepalived stop #模拟server1挂掉
客户端测试,如下依旧不影响客户的访问
通过arp -an | grep 100
对比mac 地址来源,可知来自server4,实现了高可用
原文地址:http://blog.51cto.com/13362895/2083815