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

简介: 高可用 - 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应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
计算机视觉
Qt实用技巧:实现不规则窗口的鼠标消息穿透,包括穿透到桌面和穿透到父窗口
Qt实用技巧:实现不规则窗口的鼠标消息穿透,包括穿透到桌面和穿透到父窗口
Qt实用技巧:实现不规则窗口的鼠标消息穿透,包括穿透到桌面和穿透到父窗口
|
3月前
|
人工智能 Kubernetes 调度
GPU 别再被“抢着用”了:聊聊 K8s 上 AI 任务的调度与隔离那点事
GPU 别再被“抢着用”了:聊聊 K8s 上 AI 任务的调度与隔离那点事
294 3
|
负载均衡 网络协议 算法
搞懂分布式技术7:负载均衡概念与主流方案
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/a724888/article/details/80774560   负载均衡的原理 原创: 刘欣 码农翻身 4月23日 这是1998年一个普通的上午。
|
开发工具 Linux
Keepalived 日志配置与启动配置
在Redhat系统下,可以使用下面的方法将keepalived的日志输出到/var/log/下的某个文件里:  1.将keepalived日志输出到local0:  vim /etc/sysconfig/keepalived  KEEPALIVED_OPTIONS="-D -d -S 0"  2.
3964 0
|
小程序 JavaScript
微信小程序的事件绑定方式
微信小程序的事件绑定方式
458 4
|
算法 关系型数据库 MySQL
分布式唯一ID生成:深入理解Snowflake算法在Go中的实现
在分布式系统中,确保每个节点生成的 ID 唯一且高效至关重要。Snowflake 算法由 Twitter 开发,通过 64 位 long 型数字生成全局唯一 ID,包括 1 位标识位、41 位时间戳、10 位机器 ID 和 12 位序列号。该算法具备全局唯一性、递增性、高可用性和高性能,适用于高并发场景,如电商促销时的大量订单生成。本文介绍了使用 Go 语言的 `bwmarrin/snowflake` 和 `sony/sonyflake` 库实现 Snowflake 算法的方法。
974 1
分布式唯一ID生成:深入理解Snowflake算法在Go中的实现
|
人工智能 NoSQL atlas
MongoDB Atlas与大语言模型的梦幻联动:如何瞬间提升企业级AI应用的构建效率?
【8月更文挑战第8天】在大数据时代,企业需挖掘数据价值。MongoDB Atlas作为云端数据库服务,以灵活性著称,减轻运维负担并支持全球数据分布。大语言模型(LLMs)革新AI构建方式,擅长处理自然语言。本文通过对比展示如何整合Atlas与LLMs,构建高效企业级AI应用:Atlas确保数据高效存储管理,LLMs提供语言理解与生成能力,二者结合加速AI应用开发并激发创新潜能。
441 1
|
缓存 算法 计算机视觉
OpenCV图像处理-视频分割静态背景-MOG/MOG2/GMG
1.概念介绍 视频背景扣除原理:视频是一组连续的帧(一幅幅图组成),帧与帧之间关系密切(GOP/group of picture),在GOP中,背景几乎是不变的,变的永远是前景。
1013 0
|
Ubuntu 搜索推荐 Linux
这 8 款 Linux 发行版绝对适合学生群体,看看有没有你喜欢的!
在数字化时代,Linux 操作系统以其稳定性、安全性和强大功能受到学生群体的青睐。本文介绍了 8 款适合学生的 Linux 发行版:Ubuntu、Linux Mint、Fedora、openSUSE、Elementary OS、Manjaro、Zorin OS 和 Kubuntu。这些发行版各具特色,从易用性、软件资源、社区支持和稳定安全性等方面满足学生的需求,帮助他们在学习和技术探索中取得进步。
677 4

热门文章

最新文章