1. 概述

软件负载均衡技术是指可以为多个后端服务器节点提供前端IP流量分发调度服务的软件技术。Keepalived和HAProxy是众多软负载技术中的两种,其中Keepalived既可以实现负载均衡也可以实现高可用,而HAProxy则更加专注于提供高性能TCP和HTTP反向代理和负载均衡能力。

1.1 Keepalived

Keepalived工作在OSI模型中的四层传输层。最初它是为了管理并监控Linux虚拟服务器(LVS)集群中各服务节点的状态,后来又加入了路由冗余协议(VRRP)来实现高可用功能,所以Keepalived除了可以管理配置LVS外,还可以作为Nginx、HAProxy等的高可用解决方案。

Keepalived同时运行于主服务器(Master)和备服务器(Backup)之上,所有的服务器上运行的Keepalived之间通过VRRP交互,VRRP设计目的是为了解决静态路由单点故障问题,保证个别节点宕机时,整个网络可以不间断的运行。

Keepalived不但可以实现主备服务器的高可用性,同时还可以管理LVS实现后端服务器的负载均衡并进行后端服务器节点的健康检查。它启动核心进程时读取keepalived.conf配置文件。在主服务器上keepalived进程按照配置文件配置的负载均衡策略开启LVS转发并对后端服务进行健康检查。利用VRRP协议主服务器周期性的发送广播至备服务器,备服务器将会判断主器服务器的状态,如果在配置的同步超时时间内主服务器节点未能发出广播,那么keepalived将启动高可用切换机制选出新的主服务器。切换过程中,原有主服务器上的虚拟地址(VIP)及负载能力将由新的主服务器来接替承载。

1.2 HAProxy

HAProxy 是一款TCP/HTTP 反向代理负载均衡服务器软件,可工作在OSI模型中的四层传输层以及七层应用层。HAProxy特别适用于那些负载压力大的web站点,这些站点通常需要会话保持或七层处理。HAProxy运行在时下的服务器上,可以支持数以万计的并发连接。并且它的运行模式使得它可以很简单安全地整合进现有的系统架构中,同时可以保护web服务器不被暴露到网络上。HAproxy允许用户定义多组服务代理,代理由前端和后端组成,前端定义了服务监听的IP及端口,后端则定义了一组服务器及负载均衡的算法。通过服务代理将流量由前端负载均衡至后端服务器节点上。

1.3 Keepalived和HAProxy组合

由于HAProxy会存在单点故障问题,可以由Keepalived来为HAProxy提供高可用服务,而HAProxy提供四层或七层高性能负载均衡及反向代理服务,两者共同实现高可用负载均衡,结构如图1所示。

Keepalived功能

2.1 核心功能

1.管理LVS负载均衡软件

Keepalived最初是专为解决LVS的问题而诞生的。因此,Keepalived和LVS可紧密结合。

2.实现对LVS集群节点健康检查

当LVS集群中某个节点服务器发生故障时,Keepalived服务会自动将失效的节点从正常队列中剔除,并将请求调度到别的正常的节点服务器上,从而保证用户访问不受影响。当故障节点被修复后,Keepalived服务又会自动切换回来。

3.网络服务高可用功能

Keepalived可以实现任意两台主机之间,如Master服务器和Backup服务器间的故障转移和自动切换。假设某个服务是不能停机的,如LVS负载均衡、Nginx反向代理服务器等,可以利用Keepalived保证其高可用性。

2.2 高可用原理

Keepalived高可用服务的故障切换转移是通过VRRP机制来实现的。在Keepalived服务正常运行时,Master节点会不断向Backup节点发送(多播方式)心跳信息,用以通知Master节点的存活状态。当Master节点发生故障时,就无法发送心跳信息,Backup节点也就无法检测到来自Master的心跳信息,于是调用自身的接管程序,接管Master的资源和服务。当Master恢复时,Backup又会释放Master故障时自身接管的资源和服务,恢复到原来的备用角色。无论Master如何切换,对外都应该提供相同的服务IP地址,该IP也称作虚拟地址VIP。客户端并不需要因Master的改变而修改自己的配置,对他们来说这种切换是透明的。

路由冗余协议VRRP(Virtual Router Redundancy Protocol)早期是用来解决交换机、路由器等设备单点故障。VRRP通过竞选机制来实现虚拟路由器的功能,所有的协议报文都是通过IP多播(Multicast)包形式来发送。在一组VRRP路由器集群中,有多台物理路由器,但并不是同时工作,而是由一台Master路由器负责路由工作,其他都是Backup,Master有一些特权,比如拥有VIP地址等,拥有系统资源的Master负责转发发送给网关地址的包和响应ARP请求。只有Master路由器会一直发送心跳信息,此时Backup不会抢占Master。当Master不可用时,Backup就收不到来自Master的心跳信息,此时多台Backup中优先级最高的路由器会抢占为Master,这种抢占非常快速,以保证服务的连续性。

文档更新时间: 2024-03-07 14:34   作者:月影鹏鹏