Keepalive+Nginx高可用配置(主从)

2017-01-01 05:22

Keepalived高可用集群

一、Keepalived介绍

Keepalived软件主要通过VRRP协议实现高可用功能的。VRRP是Virtual Router Redundancy Protocol(虚拟路由器冗余协议)的缩写,VRRP出现的目的就是为了解决静态路由单点故障问题,它能够保证当个别节点宕机时,整个网络可以不间断地运行。keepalived除了能够管理LVS软件外,还可以作为其他服务(Nginx,Haproxy、MySQL等)的高可用解决方案软件。

二、keepalived软件的三个主要功能

1、管理LVS负载均衡软件

早起的LVS软件,需要通过命令行或脚本实现管理,并且没有针对LVS节点的健康检查功能。为了解决LVS的这些不方便的问题,keepalived诞生了。因此keepalived跟LVS的感情很深,关系如夫妻一样,可以紧密的结合。keepalived可以通过读取自身的配置文件,实现通过更底层的接口直接管理LVS的配置以及控制服务的启动、停止等功能,这使得LVS的应用更加简单方便。

2、实现对LVS集群节点的健康检查功能

Keepalived可以通过在自身的keepalived.conf文件里配置LVS的节点IP和相关参数实现对LVS的直接管理;除此之外,当LVS集群中的某一个甚至几个节点服务器同时发生故障无法提供服务时,keepalived服务会自动将失效的节点服务器从LVS的正常转发队列清楚出去,并将请求调度到别的正常节点服务器上,保证最终用户的访问不受影响,故障修复以后,keepalived服务又会自动把它们加入到正常转发队列中。

3、作为系统网络服务的高可用功能(failover)

keepalived可以实现任意两台主机之间,例如Master和Backup主机之间的故障转移和自动切换,这个主机可以是普通的不能停机的业务服务器,也可以是LVS负载均衡、Nginx反向代理这样的服务器。

原理就是:两台主机同时安好keepalived软件并启动服务,开始正常工作时,由角色为Master的主机获得所有资源并对用户提供服务,角色为Backup的主机作为Master主机的热备;当角色为Master的主机失效或出现故障时,角色为Backup的主机将自动接管Master主机的所有工作,包括接管VIP资源及相应资源服务;而当角色为Master的主机故障修复后,又会自动接管回它原理处理的工作,角色为Backup的主机则同时释放Master主机失效时它接管的工作,还原为最初启动各自的角色。

三、keepalived高可用故障切换转移原理

在Keppalived服务正常工作时,主Master节点会不断地向备节点发送(多播的方式)心跳消息,用以告诉备Backup节点自己还活着,当主Master节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的IP资源及服务。而当主Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

VRRP,全称Virtual Router Redundancy Protocol,虚拟路由冗余协议,VRRP的出现就是为了解决静态路由的单点故障问题,VRRP是通过一种 竞选机制 来将路由任务交给某台VRRP路由器的。

在一组虚拟路由器中,只有作为Master的VRRP路由器会一直发送VRRP广播包(VRRP Advertisement messages),此时Backup不会抢占Master。当Master不可用时,Backup就收不到来自Master的广播包了,此时多台Backup中优先级最高的路由器会抢占为Master。这种抢占非常快速的,以保证服务的连续性,处于安全性考虑,VRRP数据包使用了加密协议进行加密。

总结就是下面四句话:

(1)VRRP,全程,Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP的出现是为了解决静态路由的单点故障。

(2)VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的

(3)VRRP是IP多播的方式,实现高可用对之间的通信。

(4)工作时主节点发包,备节点接包,当备节点接受不到主节点发的数据包的时候,就启动接管程序接管主节点的资源。备节点可以有多个,通过优先级竞选,但一般Keepalived系统运维工作中都是一对。

(5)VRRP使用了加密协议加密数据,但keepalived官方目前还是推荐用明文的方式配置认证类型和密码

四、Keepalived高可用服务搭建准备

(1)硬件环境:四台虚拟机,两台做负载均衡器,两台做web服务器。

(2)web服务器前面搭建好了

(3)安装keepalived软件:yum install keepalived -y,在两台负载均衡器上都装上。

(4)启动:systemctl start keepalived.service

(5)配置主的文件/etc/keepalived/keepalived.conf

主的

Keepalive+Nginx高可用配置(主从)0

备份的

Keepalive+Nginx高可用配置(主从)1

测试,主的开启keepalived和禁用

Keepalive+Nginx高可用配置(主从)2

Keepalive+Nginx高可用配置(主从)3

然后将主的keepalived关掉,用curl测试:

Keepalive+Nginx高可用配置(主从)4