keepalived高可用

Keepalived是什么?

Keepalived是一款高可用软件,Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群中个服务节点的状态,后来引入可以实现高可用的VRRP(Virtual Router Redundancy Protocol:虚拟路由冗余协议)协议。VRRP的出现是为了解决静态路由单点故障问题,它能够保障当个别节点宕机,整个网络可以不间断地服务。keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、Mysql等)的高可用解决方案软件。

Keepalived一方面具有自动配置管理LVS的功能,同时还具有对LVS下面的RS节点进行健康状态监测功能,另一方面也可以实现系统网路服务的高可用功能。Keepalived软件的[官方站点](http://www.keepalived.org/)

##什么是VRRP?“备胎的重要性”

> *VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器,在一组VRRP路由集群中,有多台物理路由器,但是这么多台路由器并不是同时工作的,而时由一台成为Master的机器负责路由工作,其他机器都是Backup。Master角色并非一成不变,VRRP会让每个VRRP路由参与竞选,最终获胜的就是Master,获胜的Master有一些特权,比如拥有虚拟路由的IP地址等,拥有系统资源的Master负责转发给网关地址的包和ARP请求

> * VRRP所有的协议报文都是通过IP(Multicast)包(默认的多播地址224.0.0.18)形式发送。虚拟路由VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC:00-00-5E-00-01-{VRID}。所以,在一个虚拟路由器中,不管谁是Master,对外都是相同的IP(VIP)和MAC(对use_vmac可配可不配)。客户端不需要因Master的改变而修改自己的路由配置。对客户端来讲,这种切换的无感知的透明切换。

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

## Keepalived服务的三个重要功能(Keepalived+LVS说明)

> * #### 管理LVS负载均衡软件:

>    + keepalived可以通过读取自身的配置文件,实现通过底层的接口直接管理LVS的配置文件以及控制服务的启动、停止等功能。使得LVS的应用更为简单方便。

> * #### 实现对LVS集群节点的健康检查功能(healthcheck):“害群之马的存活问题”

>  + 当LVS集群中的某一个或多个节点同时发生故障无法提供服务时,Keepalived服务会自动将失效的节点服务器从LVS的正常转发队列中清除,并将请求调度到正常节点服务器上,从而保障终端用户的访问不受影响;当故障节点修复后,Keepalived访问会自动地把它们加入到正常的转发队列中,对终端用户提供服务。

> * #### 提供系统网路服务的高可用功能(failover):“官复原职与俯首称臣”

>  + Keepalived可以在Master和Backup主机之间的故障转移和自动切换;两台安装好Keepalived软件并启动服务后,开始正常工作,由角色为Master的主机获得资源对用户提供服务,角色为Backup的主机作为Master主机的热备;当Master主机失效或故障时,Backup将自动接管Master主机的所有工作,包括VIP和其他资源;当Master故障修复后,又会自动接管回它原来处理的工作,角色为Backup的组件则同时释方Master失效时接管的工作,恢复最初的和谐工作状态;

>      * 注:当Master故障恢复后,Backup也可以不释放资源,仍由Backup占有,通过配置抢占模式。

## 说的好不如做的好之Keepalived+LVS实战

```

  |VIP:172.16.1.80|

|

    ------------+----------------------------+----------------------------+----------------------------+------------

                |                  |                  |                  |

            eth0|172.16.1.11        eth0|172.16.1.12        eth0|172.16.1.21        eth0|172.16.1.22

    +-----------+-----------+  +-----------+-----------+  +-----------+-----------+  +-----------+-----------+

    |  [ Master ] |  |  [ Backup ] |  |    [Nginx1]    |  |      [Nginx2]    |

    |                |  |                |  |                | | |

    |      Keepalived    |  |      Keepalived    |  |      Nginx      |  |   Nginx |

    |  ipvsadm      |  |  ipvsadm   |  |      | |      |

    +-----------------------+  +-----------------------+  +-----------------------+  +-----------------------+

```

你可能感兴趣的:(keepalived高可用)