keepalived高可用软件简介和原理剖析

一、keepalived高可用软件简介

目前互联网主流的实现Web网站及数据库服务高可用软件包括: keepalived、heartbeat等。heartbeat是比较早期的实现高可用软件,而 keepalived是目前轻量级的管理方便、易用的高可用软件解决方案,得 到互联网公司IT人的青睐。

keepalived是一个类似于工作在layer3、4和7交换机制的软件, keepalived软件有两种功能,分别是监控检查、VRRP冗余协议。

keepalived的作用是检测Web服务器的状态,如果有一台Web服务 器、MySQL服务器宕机或工作出现故障,keepalived将检测到后,会将 故障的Web服务器或者MySQL服务器从系统中剔除,当服务器工作正常 后keepalived自动将Web、MySQL服务器加入到服务器群中,这些工作 全部自动完成,不需要人工干涉,需要人工做的只是修复故障的Web和 MySQL服务器。layer3、4和7工作在IP/TCP协议栈的IP层、传输层及应 用层,实现原理分别如下:

  • layer3:keepalived使用layer3的方式工作式时,keepalived会定 期向服务器群中的服务器发送一个ICMP的数据包,如果发现某台服务 的IP地址无法ping通,keepalived便报告这台服务器失效,并将它从服务 器集群中剔除。layer3的方式是以服务器的IP地址是否有效作为服务器 工作正常与否的标准。
  • layer4:layer4主要以TCP端口的状态来决定服务器工作正常与 否。如Web server的服务端口一般是80,如果keepalived检测到80端口没 有启动,则keepalived将把这台服务器从服务器群中剔除。
  • layer7:layer7工作在应用层,keepalived将根据用户的设定检查 服务器程序的运行是否正常,如果与用户的设定不相符,则keepalived 将把服务器从服务器群中剔除。

二、keepalived VRRP原理剖析

keepalived是VRRP的完美实现,在学习keepalived之前,必须了解 VRRP协议的原理。在现实的网络环境中,两台需要通信的主机大多数 情况下并没有直接的物理连接。对于这样的情况,它们之间的路由是怎 样选择的呢?主机如何选定到达目的主机的下一跳路由,这个问题通常 的解决方法有以下两种:

  • 在主机上使用动态路由协议RIP、OSPF;
  • 在主机上配置静态路由。

在主机上配置动态路由是非常不切实际的,因为管理、维护成本以 及是否支持等诸多问题。因此配置静态路由就变得十分流行,但路由器 或者默认网关(default gateway)却经常成为单点,VRRP的目的就是为了 解决静态路由单点问题。VRRP通过一竞选(election)协议来动态地将路 由任务交给LAN中虚拟路由器中的某台VRRP路由器。

在VRRP虚拟路由器集群中,由多台物理的路由器组成,但是这多 台的物理路由器并不能同时工作,而是由一台称为master路由器负责路 由工作,其他的都是backup,master并非一成不变,VRRP会让每个 VRRP路由器参与竞选,最终获胜的就是master。

Master拥有一些特权,例如拥有虚拟路由器的IP地址,也即VIP, 拥有特权的master要负责转发给网关地址的包和响应ARP请求。

VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都 是通过IP多播(multicast)包(多播地址224.0.0.18)形式发送的。虚拟路 由器由VRID(范围0~255)和一组IP地址组成,对外表现为一个周知 的MAC地址。所以在一组虚拟路由器集群中,不管谁是master,对外都 是相同的MAC和VIP。客户端主机并不需要因为master的改变而修改自 己的路由配置。

作为master的VRRP路由器会一直发送VRRP广播包(VRRPadvertisement message),backup不会抢占master,除非它的优先级 (priority)更高。当master不可用时(backup收不到广播包),多台backup 中优先级最高的这台会抢占为master。这种抢占是非常快速的,以保证 服务的连续性。从安全性考虑VRRP包使用了加密协议进行传输。

keepalived基于VRRP技术,将两台物理主机当成路由器,两台物理 机主机组成一个虚拟路由集群,master高的主机产生VIP,该VIP负责转 发用户发起的IP包或者负责处理用户的请求,Nginx+keepalived组合, 用户的请求直接访问keepalived VIP地址,然后访问master相应服务和端 口。

发表评论

后才能评论