高可用 - 03 Keepalived_ Keepalived工作原理&体系结构

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
简介: 高可用 - 03 Keepalived_ Keepalived工作原理&体系结构

0bc7b7bcd1fc4752b429566093397057.png


Pre


高可用 - 02 Keepalived_VRRP工作原理了解了Keepalived通过VRRP实现高可用功能的工作原理。


而Keepalived作为一个高性能集群软件,它还能实现对集群中服务器运行状态的监控及故障隔离。

下面我们看下Keepalived对服务器运行状态监控和检测的工作原理。


Keepalived工作原理


Keepalived工作在TCP/IP参考模型的第三层、第四层和第五层,也就是网络层、传输层和应用层。

根据TCP/IP参考模型各层所能实现的功能,Keepalived运行机制如下:


网络层


在网络层,运行着四个重要的协议:互连网协议(IP)、互连网控制报文协议(ICMP)、地址转换协议(ARP)以及反向地址转换协议(RARP)。


Keepalived在网络层采用的最常见的工作方式是通过ICMP向服务器集群中的每个节点发送一个ICMP的数据包(类似于ping实现的功能),如果某个节点没有返回响应数据包,那么就认为此节点发生了故障,Keepalived将报告此节点失效,并从服务器集群中剔除故障节点。


传输层


在传输层,提供了两个主要的协议:传输控制协议(TCP)和用户数据协议(UDP)


TCP可以提供可靠的数据传输服务,IP地址和端口代表一个TCP连接的一个连接端。要获得TCP服务,须在发送机的一个端口上和接收机的一个端口上建立连接。


而Keepalived在传输层就是利用TCP的端口连接和扫描技术来判断集群节点是否正常的。比如,对于常见的Web服务默认的80端口、SSH服务默认的22端口等,Keepalived一旦在传输层探测到这些端口没有响应数据返回,就认为这些端口发生异常,然后强制将此端口对应的节点从服务器集群组中移除。


应用层


在应用层,可以运行FTP、TELNET、SMTP、DNS等各种不同类型的高层协议


Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived的工作方式,例如用户可以通过编写程序来运行Keepalived,而Keepalived将根据用户的设定监测各种程序或服务是否允许正常,如果Keepalived的监测结果与用户设定不一致时,Keepalived将把对应的服务从服务器中移除。


Keepalived的体系结构

【官方给出的Keepalived体系结构拓扑图】


38f8c46292e64f70b0a6e5d53f5cb83d.png


Keepalived的体系结构从整体上分为两层,分别是用户空间(User Space)层和内核空间(Kernel Space)层 。


内核空间


内核空间层处于最底层,它包括IPVS和NETLINK两个模块。


IPVS


IPVS模块是Keepalived引入的一个第三方模块,通过IPVS可以实现基于IP的负载均衡集群。


在LVS集群中,IPVS安装在一个叫做Director Server的服务器上,同时在Director Server上虚拟出一个IP地址来对外提供服务,而用户必须通过这个虚拟IP地址才能访问服务。这个虚拟IP一般称为LVS的VIP,即Virtual IP。访问的请求首先经过VIP到达Director Server,然后由Director Server从服务器集群节点中选取一个服务节点响应用户的请求。


Keepalived最初就是为LVS提供服务的,由于Keepalived可以实现对集群节点的状态监测,而IPVS可以实现负载均衡功能,因此,Keepalived借助于第三方模块IPVS就可以很方便地搭建一套负载均衡系统。


在这里有个误区,由于Keepalived可以和IPVS一起很好地工作,因此很多初学者都以为Keepalived就是一个负载均衡软件,这种理解是错误的。


在Keepalived中,IPVS模块是可配置的。如果需要负载均衡功能,可以在编译Keepalived时打开负载均衡功能,反之,也可以通过配置编译参数关闭。


NETLINK模块


NETLINK模块主要用于实现一些高级路由框架和一些相关的网络功能,完成用户空间层Netlink Reflector模块发来的各种网络请求。


用户空间


用户空间层位于内核空间层之上,Keepalived的所有具体功能都在这里实现。


下面介绍几个重要部分所实现的功能。


在用户空间层,Keepalived又分为四个部分,分别是Scheduler I/O Multiplexer、Memory Management(Mngt)、Control Plane和Core components。


Scheduler I/O Multiplexer是一个I/O复用调度器,它负责安排Keepalived所有内部的任务请求。


Memory Management是一个内存管理机制,这个框架提供了访问内存的一些通用方法。


Control Plane是Keepalived的控制面板,可以实现对配置文件进行编译和解析,Keepalived的配置文件解析比较特殊,它并不是一次解析所有模块的配置,而是只有在用到某模块时才解析相应的配置


Core components,这个部分是Keepalived的核心组件,它包含了一些列功能模块,主要有WatchDog、Checkers、VRRP Stack、IPVS wrapper和Netlink Reflector


Core components - WatchDog


WatchDog是计算机可靠性领域中一个极为简单又非常有效的监测工具。它的工作原理是针对被监控的目标设置一个计数器和一个阈值,WatchDog会自己增加此计数值,然后等待被监控的目标周期性地重置该计数值。一旦被监控目标发生错误,就无法重置此计数值,WatchDog就会检测到,于是就采取对应的恢复措施,例如重启或关闭。


在Linux中很早就引入了WatchDog功能,而Keepalived正是通过WatchDog的运行机制来监控Checkers和VRRP进程的。


Core components - Checkers

这是Keepalived最基础的功能,也是最主要的功能,可实现对服务器运行状态监测和故障隔离。


Core components - VRRP Stack

这是Keepalived后来引入的VRRP功能,可以实现HA集群中的故障切换(failover)功能。Keepalived通过VRRP功能再结合LVS负载均衡软件即可部署一套高性能的负载均衡集群系统。


Core components - IPVS wrapper

这是IPVS功能的一个实现。IPVS wrapper模块可以将设置好的IPVS规则发送到内核空间并提交给IPVS模块,最终实现IPVS模块的负载均衡功能。


Core components - Netlink Reflector


Netlink Reflector用来实现高可用集群中故障转移时虚拟IP(VIP)的设置和切换。Netlink Reflector的所有请求最后都发送给内核空间的NETLINK模块来完成。

相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
移动开发 JavaScript 前端开发
四种方式解决页面国际化问题——步骤详解
四种方式解决页面国际化问题——步骤详解
451 0
|
负载均衡 应用服务中间件 Linux
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
Nginx系列教程(14) - LVS+KeepAlived+Nginx实现高性能负载均衡集群
3051 0
|
运维 负载均衡 监控
Nginx加Keepalived实现高可用
使用Nginx和Keepalived来实现高可用性的方案,对于确保关键服务的稳定性和可靠性来说是非常有效的。此配置涉及多个步骤,包括各个服务的安装、设置及测试,目标是在主服务器故障时能无缝切换,以确保服务的持续可用。正确的配置和充分的测试是实现高可用性的保证,这也要求管理员对这些工具和它们背后的原理有深入的了解。
411 1
|
负载均衡 应用服务中间件 API
Nginx:location配置模块的用法(一)
Nginx:location配置模块的用法(一)
1334 2
|
9月前
|
Web App开发 监控 网络协议
网络分析与监控:阿里云拨测方案解密
阿里云网络拨测业务提供了全球、多种协议、多种网络态势的用户网络性能和用户体验监控场景的全面可观测方案。该文章从拨测场景下,介绍了用户如何快速的构建一套全球用户视角的服务可用性大盘,为客户的业务保驾护航。
1139 174
|
小程序 JavaScript
微信小程序的事件绑定方式
微信小程序的事件绑定方式
314 4
|
10月前
|
人工智能 前端开发 数据可视化
2024年低代码趋势洞察——企业最看重的功能有哪些
低代码平台通过可视化开发、五大核心引擎(SQL、功能、模板、图表、切面引擎)、模型驱动开发、高效数据处理、AI智能助力及灵活插件生态等功能,简化开发流程,提高效率,降低成本,成为企业加速数字化转型的关键驱动力。其强大的技术架构和企业级特性,进一步提升了运营效率与决策能力。
|
缓存 JavaScript 前端开发
深入剖析NPM: Node包管理器的介绍和使用指南
深入剖析NPM: Node包管理器的介绍和使用指南
223 0
|
Prometheus Cloud Native 数据安全/隐私保护
Prometheus实战篇:docker安装Prometheus
Docker搭建Prometheus监控系统