简述Keepalived LVS 原理以及两者的优缺点对比分析

Posted 爱写代码的小白.

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了简述Keepalived LVS 原理以及两者的优缺点对比分析相关的知识,希望对你有一定的参考价值。

前言

本文章主要围绕Keepalived,lvs的工作原理以及两者的优缺点进行对比分析。My BLOG:https://blog.itwk.cc

什么是Keepalived?

Keepalived是基于VRRP协议(Virtual Router Redundancy Protocol)是Linux下一个轻量级高可用解决方案(HA),其实两种不同的含义,广义来讲,是指整个系统的高可用行,狭义的来讲就是之主机的冗余和接管,可以实现服务或者网络的高可用,Keepalived主要是通过虚拟路由冗余来实现高可用功能,Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可完成。

什么是LVS?

LVS,全称 Linux Virtual Server,即Linux虚拟服务器,是一个虚拟的服务器集群系统,LVS是基于IP和基于请求内容分发的负载平衡调度方法,将一组服务器构成一个可以实现高可伸缩、高可用的虚拟服务器。一组服务器通过高速局域网或者地理分布的广域网连接,在它们的前端有一个负载调度器(Load Balancer,简称LB)。LB能无缝地将客户端发来的请求调度到提供真实服务的服务器上,此外可以通过在集群中添加节点的方式来提高系统的可伸缩性,通过对服务器状态的检测,及时重置系统,提高系统的高可用性。

Keepalived工作原理

Keepalived 通过将多个服务器组成一个虚拟服务地址,解决单点故障风险,并确保该服务地址总是可用的,从而提供高可用性的服务,实现原理主要包括以下几个方面:

VRRP(虚拟路由冗余协议)

Keepalived 使用 VRRP 协议来实现虚拟 IP 地址的高可用性,该协议允许多个路由器共同管理同一个虚拟IP地址,当其中一台路由器出现故障时,其他路由器可以接管该虚拟 IP 地址,以确保网络的连通性。

守护进程

在 Keepalived 中,每个服务器都运行一个守护进程,该进程负责与其他服务器通信,协调虚拟IP地址的分配和接管,并监控本地服务器的状态。

状态检测

为了保证虚拟IP地址的可用性,Keepalived 会定期检测各个服务器的状态,包括网络连接,CPU使用率,负载等指标,当某个服务器出现故障时,它将自动将虚拟 IP 地址转移到其他可用的服务器上。

角色切换

在 Keepalived 中,每个服务器都有一个角色,包括主服务器和备份服务器,主服务器负责处理客户端请求,备份服务器则处于待命状态。当主服务器出现故障时,备份服务器会接管主服务器的角色,并继续处理客户端请求,从而保证虚拟 IP 地址的可用性。

LVS

LVS(Linux Virtual Server)是一种基于 Linux 内核实现的负载均衡解决方案,它可以将客户端请求分配到多个后端服务器上,以提高服务的可用性和性能,其原理包括以下几个方面

调度算法

LVS 通过调度算法来决定将客户端请求转发到哪些后端服务器上,以实现负载均衡和高可用性。常见的调度算法包括轮询、最小连接数、源地址哈希等。

虚拟IP地址

LVS 提供了一个虚拟 IP 地址,客户端可以将请求发送到该 IP 地址,而不需要知道后端服务器的具体 IP 地址。

NAT(网络地址转换)

LVS 采用 NAT 技术对客户端请求进行转换,以隐藏后端服务器的真实 IP 地址。在 LVS 中,负载均衡器作为 NAT 网关,将客户端请求的目标 IP 地址修改为后端服务器的真实 IP 地址,并将请求转发给后端服务器。

状态检测

为了保证后端服务器的可用性,LVS 会定期检测后端服务器的连接状态,当后端服务器出现故障时,它将自动将请求转移到其他可用的服务器上。

优缺点

Keepalived优点

  1. 可以支持多种负载均衡协议,如 VRRP、IPVS 等,可以根据实际需求进行配置。
  2. 支持基于权重的负载均衡,可以根据服务器的处理能力分配请求。
  3. 配置简单,使用方便,可通过配置文件进行管理。
  4. 支持快速切换,当主服务器出现故障时,备份服务器可以快速接管其角色。

Keepalived缺点

  1. 性能较低,相比于 LVS,Keepalived 的性能较差。
  2. 不支持直接转发,需要通过TCP代理实现转发。
  3. 不支持SSL加密。

LVS的优点

  1. 高性能,可以支持数百万并发连接。
  2. 支持多种调度算法,可以根据实际需求进行配置。
  3. 支持直接转发,可以直接将请求转发到后端服务器。
  4. 支持SSL加密。

LVS的缺点

  1. 配置相对复杂,需要深入了解网络知识和调度算法。
  2. 可靠性较差,需要配合Keepalived等工具实现高可用性。
  3. 不支持UDP协议。

对比分析

性能方面

LVS的性能较高,可以支持数百万并发连接,而Keepalived的性能相对较差。

功能

LVS支持直接转发和SSL加密等功能,而Keepalived不支持直接转发,且不支持SSL加密。

可靠性

LVS的可靠性较差,需要配合Keepalived等工具实现高可用性,而Keepalived的可靠性较好,支持快速切换。

配置

LVS的配置相对复杂,需要深入了解网络知识和调度算法,而Keepalived的配置相对简单,使用方便,可通过配置文件进行管理。

支持协议

LVS支持TCP和 UDP协议而 Keepalived仅支持TCP。

总结

LVS和Keepalived各自具有一些优点和缺点,可以根据实际需求进行选择和配置,如果对性能要求较高,可以选择使用LVS

如果对配置和使用的便捷性要求较高,可以选择Keepalived,也可以将两者配合使用,以实现更高的可靠性和性能。

简述keepalived工作原理

    Keepalived主要用于解决各种服务集群的高可用性问题,高可用集群类型主要包括LB(Load Balance负载均衡)、HA(High Availability高可用集群)和HPC(High Performance Computing高性能集群)三大类,其中我们主要关注的是前两类。

    在LB中我们可能会用到LVS来达到负载均衡,但集群前面的调度器依然可能会存在单点失败问题,因此可以用到keepalived。keepalived在设计之初就是为了配合LVS解决单点失败问题,并在后期加入了VRRP协议,能为Nginx、MySQL和HAProxy等服务的集群提供高可用解决方案。因此在了解keepalived工作原理前,我们先来看下什么是VRRP。

  1. VRRP

    VRRP(Virtual Router Redundancy Protocol),虚拟路由冗余协议,它借鉴了物理路由器的技术,并逐渐引用到Linux系统中,成为了keepalived软件的核心组件,用于解决静态网关单点风险。VRRP协议是一种容错协议,它保证了当某一台路由出现故障时,另一台路由器能及时替代出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。

1.1 VRRP网络层硬件实现

    当企业内网服务器数量较多时,可能会用到多台路由器,以下图为例,201.1.1.1和201.1.1.2为使用公网IP的路由器,172开头的为使用内网IP的能提供具体服务的服务器。

简述keepalived工作原理_内网

    由于路由器只有一个入口和一个出口,可能会出现以下情况:

    ①当用户通过路由器向企业内网服务器发出服务请求时,可能是由201.1.1.1或201.1.1.2中任意一台向内网服务器进行转发,并且每一台路由器和内网服务器之间是类似于绑定的状态,而且当某一台路由器出现故障时,指向该路由器的内网服务器将无法对外提供服务,并不能解决单点失败问题。

    ②如果内网服务器指向多台路由器,当用户发送服务请求时,由于企业内网和经过公网路由一般做NAT转换,可能会导致用户收到的第一个包来自201.1.1.1,第二个包则是来自201.1.1.2,无法判断出是否是同一个用户或出现用户无法登录等情况。该方法虽然在一定程度上解决了内网服务器的负载均衡,但会导致无法上网等情况。

    针对以上问题,我们可以虚拟出一个VIP地址201.1.1.3,让内网服务器的网关都指向该VIP,该VIP是流动的,并不固定在201.1.1.1或201.1.1.2上。当用户发起服务请求时会到达201.1.1.3这个VIP,如果VIP此刻正处于201.1.1.1这个路由器上,就由201.1.1.1向内网服务器进行转发,响应报文的出口由VIP出去;当201.1.1.1出现故障时,VIP就会通过201.1.1.2这台路由器来向内网服务器进行服务请求的转发,并且最终出口还是VIP的地址201.1.1.3,从而解决了高可用问题。

1.2 VRRP相关术语

    VRRP相关术语包括以下几种:

    ①虚拟路由器:Virtual Router,由一个Master路由器和多个Backup路由器组成,主机将虚拟路由器当作默认网关。

    ②虚拟路由器标识:VRID(0-255),唯一标识虚拟路由器,有相同VRID的一组路由器构成一个虚拟路由器。

    ③虚拟IP地址(VIP):Virtual IP,一个虚拟路由器可以拥有一个或多个IP地址;

    ④虚拟MAC地址(VMAC):Virutal MAC (00-00-5e-00-01-VRID),一个虚拟路由器拥有一个虚拟MAC地址,通常情况下虚拟路由器回应ARP请求使用的是虚拟MAC地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实 MAC 地址。

    ⑤物理路由器,该术语主要注意三部分内容:master(主设备),虚拟路由器中承担报文转发任务的路由器;backup(备用设备),master路由器出现故障时,能够代替master路由器工作的路由器;priority(优先级),VRRP根据优先级来确定虚拟路由器中每台路由器的地位。

1.3 VRRP相关技术

    VRRP相关技术包括:

    ①通告:主要是对外通告心跳和优先级等,并且通告是周期性的,具体时间可以自定义;

    ②工作方式:工作方式分抢占式和非抢占式两种,在抢占式中,如果备用设备的优先级比主设备优先级高,则主动将自己切换成主设备;在非抢占式中,如果主设备没有出现故障,备用设备即使被设置了更高的优先级也不会成为主设备。

    ③安全认证:安全认证包括无认证、简单字符认证(利用预共享秘钥等方式来实现)和MD5认证三种。

    ④工作模式:VRRP工作模式包括主/备模式和主/主模式两种,在主/备模式下虚拟出一台路由器即可,而在主/主模式需虚拟出两台路由器,并且要将彼此设为主/备。

  1. keepalived工作原理

    keepalived是基于VRRP协议的软件实现,其原生设计目的为了高可用ipvs服务。

2.1 keepalived功能

    keepalived的功能包括以下几点:

    ①基于VRRP协议完成地址流动;

    ②为VIP地址所在的节点生成ipvs规则(在配置文件中预先定义)

    ③为ipvs集群的各RS做健康状态检测;

    ④基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持Nginx、HAProxy等服务。

2.2 keepalived架构

    keepalived架构如下图所示,可分为用户空间核心组件、控制组件、IO复用器和内存管理组件四部分。

简述keepalived工作原理_服务器_02

    ①用户空间核心组件包括:VRRP Stack(VIP消息通告)、Checkers(监测real server)、System call(实现 vrrp 协议状态转换时调用脚本的功能)、SMTP(邮件组件)、IPVS wrapper(生成IPVS规则)、Netlink Reflector(网络接口)和WatchDog(监控进程)

    ②控制组件主要是提供keepalived.conf 的解析器,以完成Keepalived配置;

    ③IO复用器可以针对网络目的而优化的自己的线程抽象;

    ④内存管理组件可以为某些通用的内存管理功能(例如分配,重新分配,发布等)提供访问权限。

2.3 keepalived工作原理

    在了解了以上知识后,我们可以总结keepalived工作原理:

    ①keepalived服务对之间通过VRRP来进行通信,VRRP利用竞选机制来确定主节点和备用节点,优先级高的作为主节点,优先级低的作为备用节点;

    ②主节点在工作时会优先获得所有的资源,而备用节点则是处于等待状态。只有在主节点出现故障时,备用节点才会接管主节点的资源,并作为新的主节点对外提供服务;

    ③keepalived服务对中,只有主节点的服务器会一直发送VRRP广播包来传递heartbeat信息,告诉备用节点它还活着,此时备用节点不会抢占主节点资源;

    ④当主节点出现故障不可用时,备用节点因无法接收到主节点发送的VRRP广播,就会启动相关服务接管主节点的资源,保证业务的连续性。而当之前出现故障的主节点恢复正常后,现有的由备用节点转变过来的主节点会自动释放已接管的资源,重新由恢复正常的主节点接管。

以上是关于简述Keepalived LVS 原理以及两者的优缺点对比分析的主要内容,如果未能解决你的问题,请参考以下文章

keepalived双机热备原理及实例部署LVS+keepalived

LVS + Keepalived 配置详解

Keepalived + LVS 实现负载均衡

LVS+Keepalived高可用负载均衡架构原理及配置

Lvs+Keepalived工作原理

lvs keepalived