简述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优点
- 可以支持多种负载均衡协议,如 VRRP、IPVS 等,可以根据实际需求进行配置。
- 支持基于权重的负载均衡,可以根据服务器的处理能力分配请求。
- 配置简单,使用方便,可通过配置文件进行管理。
- 支持快速切换,当主服务器出现故障时,备份服务器可以快速接管其角色。
Keepalived缺点
- 性能较低,相比于 LVS,Keepalived 的性能较差。
- 不支持直接转发,需要通过TCP代理实现转发。
- 不支持SSL加密。
LVS的优点
- 高性能,可以支持数百万并发连接。
- 支持多种调度算法,可以根据实际需求进行配置。
- 支持直接转发,可以直接将请求转发到后端服务器。
- 支持SSL加密。
LVS的缺点
- 配置相对复杂,需要深入了解网络知识和调度算法。
- 可靠性较差,需要配合Keepalived等工具实现高可用性。
- 不支持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。
- VRRP
VRRP(Virtual Router Redundancy Protocol),虚拟路由冗余协议,它借鉴了物理路由器的技术,并逐渐引用到Linux系统中,成为了keepalived软件的核心组件,用于解决静态网关单点风险。VRRP协议是一种容错协议,它保证了当某一台路由出现故障时,另一台路由器能及时替代出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。
1.1 VRRP网络层硬件实现
当企业内网服务器数量较多时,可能会用到多台路由器,以下图为例,201.1.1.1和201.1.1.2为使用公网IP的路由器,172开头的为使用内网IP的能提供具体服务的服务器。
由于路由器只有一个入口和一个出口,可能会出现以下情况:
①当用户通过路由器向企业内网服务器发出服务请求时,可能是由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工作模式包括主/备模式和主/主模式两种,在主/备模式下虚拟出一台路由器即可,而在主/主模式需虚拟出两台路由器,并且要将彼此设为主/备。
- keepalived工作原理
keepalived是基于VRRP协议的软件实现,其原生设计目的为了高可用ipvs服务。
2.1 keepalived功能
keepalived的功能包括以下几点:
①基于VRRP协议完成地址流动;
②为VIP地址所在的节点生成ipvs规则(在配置文件中预先定义) ;
③为ipvs集群的各RS做健康状态检测;
④基于脚本调用接口完成脚本中定义的功能,进而影响集群事务,以此支持Nginx、HAProxy等服务。
2.2 keepalived架构
keepalived架构如下图所示,可分为用户空间核心组件、控制组件、IO复用器和内存管理组件四部分。
①用户空间核心组件包括: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 原理以及两者的优缺点对比分析的主要内容,如果未能解决你的问题,请参考以下文章