您当前的位置:首页 > 电脑百科 > 网络技术 > 网络知识

一文读懂keepalive的工作原理

时间:2022-05-11 10:28:23  来源:  作者:程序员柒叔

keepalive是基于vrrp协议实现接入层高可用组件,避免系统的单点故障。

工作原理

要想理解keepalive的原理,就需要理解vrrp协议的工作原理。

概念解释:

Vrrp(Virtual Router Redundancy Protocol),虚拟路由冗余协议,一种为了避免路由器单点故障的容错协议。

网络架构如下图:

一文读懂keepalive的工作原理

 

工作原理

  • 多个路由器组成一个路由器组,即虚拟路由器。如图RouterA和RouterB组成一个虚拟路由器。
  • 虚拟路由器使用虚拟IP与外网交互(如图中VIP),虚拟mac与内网交互(如图中VMAC)
  • 获得VIP的路由器为主路由器(Master状态),其他路由器为备份路由器(Backup状态);
  • 主路由器每隔 advertisement_intervl 秒(对应图中配置项 advert_int),向组内其他路由器发送通告消息(即心跳),告知本路由器的优先级等信息;
  • 组播的方式发送,组播地址224.0.0.18。
  • 只有主路由器会响应ARP请求,组内其他路由器会丢弃ARP请求;
  • 只有主路由器会响应对虚拟IP请求,组内其他路由器会丢弃对虚拟IP的请求;

主备切换

虚拟路由器中的Master可以切换(即VIP切换到备份路由器上),切换方式分为3种:

Master路由器退出该路由器组

  • Master路由器在vrrp消息中将本路由器的优先级设置为0,表示原Master设备声明不参与该VRRP组了;
  • Backup路由器接收到这个消息后,会等待 skew_time(偏移时间,= (256-backup_priority)/256),切换为Master状态

Master路由器降低自身优先级

  • Master路由器在vrrp消息中将本路由器的优先级降低,小于Backup路由器优先级(但不为0);
  • 这时Backup路由器会丢弃该消息;如果是抢占模式,会立即切换为Master状态;如果是非抢占模式,仍保持Backup状态;

Backup超时未收到vrrp消息

  • Backup路由器在超过一定时间(Master_down_interval=3*advert_int + skew_time)未收到Master的vrrp消息时,会切换为Master;

常见问题

当 Router A 和 Router B 无法正常通信时, 可能存在2个Master路由器,即“脑裂”。

解决方案:

  1. 核查A和B之间的网络,关闭防火墙或者配置好ip,Router之间保证网络通畅
  2. 使用2条线路连接2个路由器,一条坏了时,另一条备用
  3. 主节点编写脚本测试网络情况;如果网络不通,则关闭keepalived进程;
  4. Master路由器宕机后,立即告警,人为介入处理。

扩展知识

VRRP协议栈

一文读懂keepalive的工作原理

vrrp协议栈


一文读懂keepalive的工作原理

 

上述标红的几个字段是关键字段,都会出现在 keepalive 的配置文件中。

  • Version:VRRP协议版本号,RFC3768定义了版本2.
  • Type:该字段指明了VRRP报文的类型,RFC3768只定义了一种VRRP报文,那就是
  • VRRP通告报文,所以该字段总是置为1,若收到的VRRP通告报文拥有非1的类型
  • 值,那么会被丢弃。
  • Virtual Rtr ID:也就是我们上面介绍过的VRID,一个VRID唯一地标识了一个虚拟
  • 路由器,取值范围是[1,255],所以一台路由器的接口可以同时运行最多255个VRRP
  • 实例,此字段没有缺省值,必须人为设定。
  • Priority:
  • 优先级,在一个虚拟路由器中用来选取Master路由器和Backup路由器,值越大表明优先级越高,此字段共有8个bit,取值范围[1,254],若没有人为指定,缺省值是100。
  • 其中,VRRP协议会将IP地址拥有者路由器的该字段永远设置为255,若人为指定为其它值,也不会影响VRRP协议的默认行为,即IP地址拥有者路由器的该字段总是255。
  • 另外,此字段设置为0会出现在下面这种情形中,当Master路由器出现故障后,它会立刻发送一个Priority置0的VRRP通告报文,当Backup路由器收到此通告报文后,会等待Skew time时间,然后将自己切换为Master路由器,其中Skew time=(256-Backup路由器的优先级)/256,单位为秒,例如若Backup路由器的优先级为100,那么Skew time=156/256=0.609秒,对于主路由器来说,Skew time并没有实际意义,虽然cisco的路由器也会计算并显示出来。
  • Count IP Addrs:VRRP通告报文中包含的IP地址数量,这个字段其实就是为一个VRRP虚拟路由器所分配的IP地址的数量,
  • Auth Type:认证类型字段,是一个8位的无符号整数,一个虚拟路由器只能使用一种认证类型,如果Backup路由器收到的通告报文中认证类型字段是未知的或和本地配置的不匹配,那么它将丢弃该数据包。
  • 目前支持3种认证方式:无认证,简单字符,和MD5认证。
  • Adver Int::此字段规定了Mater路由器向外发送VRRP通告报文的时间间隔,以秒为单位,取值范围是[1,255],若没有人工配置,缺省为1秒。
  • Checksum:整个VRRP报文的校验和,计算过程中,将Checksum字段置为0,计算完成后将结果填入此字段。若希望进一步了解Checksum的计算,可以查看RFC1071(CKSM)。
  • IP Address:此字段存放3个VRRP虚拟路由器的虚拟IP地址,配置了几个就封装几个,在上面的cisco实例中我们配置了三个,那么VRRP通告报文就会封装3个。
  • Authentication Data:RFC3768中规定,此字段只是为了向RFC2338兼容,在实际的封装时,全置为0.,接收方也会忽略此字段。

虚拟MAC地址

组成方式是00-00-5E-00-01-{VRID},前三个字节00-00-5E是IANA组织分配的,接下来的两个字节00-01是为VRRP协议指定的,最后的VRID是虚拟路由器标识,取值范围[1,255]

VRID

虚拟路由器标识,在同一个VRRP组内的路由器必须有相同的VRID

其他

Keepalive内置了一个模块,可以通过配置文件操作内核,向ipvs添加规则,创建LVS。这又是另一个关键组件,就不在本节讨论了。

keepalived进程

keepalived启动时有3个进程:

  • 主进程,监控其他子进程
  • vrrp子进程,负责vrrp通信
  • checker子进程,检测服务状态;如果服务不可用,则通知vrrp子进程,发降级通告

写在最后

对于常用组件,我们不但需要知道如何用,更要知道它的底层原理,在遇到问题是可以事半功倍。希望通过本文可以让大家对keepalive有更深入的了解。



Tags:keepalive   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
Keepalived 的安装和配置
keepalived主要用作RealServer的健康状态检查以及LoadBalance主机和BackUP主机之间failover的实现。keepalived主要目的在于,其自身启动一个服务,能够实现工作在双节...【详细内容】
2023-08-27  Search: keepalive  点击:(237)  评论:(0)  加入收藏
MySQL + Keepalived 双主热备搭建
什么是双主复制在传统的主从复制架构中,从库仅仅是作为主库数据的备份,当主库发生故障时,数据库将停止对外提供服务,并且主库故障后手动进行主从切换的过程也较为繁琐。为了解决...【详细内容】
2023-07-04  Search: keepalive  点击:(269)  评论:(0)  加入收藏
Linux + Nginx + Keepalived 高可用配置教程
众所周知,NGINX 是一个广受好评的 web 服务器,也可以用作反向代理,负载均衡器和 HTTP 缓存。keepalive 工作在虚拟路由器冗余协议 vrrp (Virtual Router Redundancy Protocol)...【详细内容】
2023-03-17  Search: keepalive  点击:(243)  评论:(0)  加入收藏
傻傻分不清的TCP keepalive和HTTP keepalive
1.TCP keepalive1.1.概念A keepalive (KA) is a message sent by one device to another to check that the link between the two is operating, or to prevent the link f...【详细内容】
2022-07-08  Search: keepalive  点击:(426)  评论:(0)  加入收藏
一文读懂keepalive的工作原理
keepalive是基于vrrp协议实现接入层高可用组件,避免系统的单点故障。工作原理要想理解keepalive的原理,就需要理解vrrp协议的工作原理。概念解释:Vrrp(Virtual Router Redundanc...【详细内容】
2022-05-11  Search: keepalive  点击:(700)  评论:(0)  加入收藏
TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?
之前有读者问了我这么个问题: 大致问题是,TCP 的 Keepalive 和 HTTP 的 Keep-Alive 是一个东西吗?这是个好问题,应该有不少人都会搞混,因为这两个东西看上去太像了,很容易误以为是...【详细内容】
2021-07-09  Search: keepalive  点击:(265)  评论:(0)  加入收藏
关于 runtime.KeepAlive() 你知道多少
我在看 go101 网站的 类型不安全指针[1](来源)[2] 一文时,偶然发现了runtime[3] 库的一个有趣的新方法 runtime.KeepAlive()[4] 的一个用法。刚开始我对于怎么使用它是很困惑...【详细内容】
2020-10-19  Search: keepalive  点击:(353)  评论:(0)  加入收藏
LVS+Keepalived+Nginx高可用分布式集群
LVS简介LVS是Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。LVS主要用于多服务器的负载均衡。它工作在网络层,可以实现高性能,高可用的服务器集...【详细内容】
2020-06-04  Search: keepalive  点击:(380)  评论:(0)  加入收藏
mysql+keepalive高可用方案操盘实战
概述这是关于php进阶到架构之mysql进阶学习的系列课程:mysql+keepalive高可用方案操盘实战学习目标: 掌握mysql主从复制中的双主模式以及环境搭建 掌握keeplived的工作原理 My...【详细内容】
2020-05-19  Search: keepalive  点击:(233)  评论:(0)  加入收藏
Go语言中如何开启 TCP keepalive?
本篇文章首先简单介绍了 TCP keepalive 的机制以及运用场景。接着介绍了 Go 语言中如何开启与设置 TCP keepalive。但是由于 Go 语言最上层的接口不够灵活,从而引出在 Go 语...【详细内容】
2019-10-22  Search: keepalive  点击:(713)  评论:(0)  加入收藏
▌简易百科推荐
学生偷看“不良网站”,手机上3个痕迹无法清除,网友:咋不早说
众所周知,中国的常规教育中,总是“谈性色变”,但在这个信息爆炸的互联网时代,即便是一些年纪很小的孩子,也能轻易接触到一些所谓的不良网站,因此这一方面的教育缺失,其实是很可怕的...【详细内容】
2024-03-28    叶姐生活指南  Tags:不良网站   点击:(19)  评论:(0)  加入收藏
什么是网络中的路由器?核心功能解释
路由器是互联网连接的核心元素,是一种允许多个设备连接到互联网,并促进将数据包转发到各自的目标地址的设备。使用动态路由技术,路由器检查数据并在各种可用路径中选择最有效的...【详细内容】
2024-03-07    千家网  Tags:路由器   点击:(35)  评论:(0)  加入收藏
过年该不该升级Wi-Fi 7路由?看完就知道
打开电商网站不难发现,从2023年第三季度到现在,Wi-Fi 7路由器新品越来越多。而且价格不再是高高在上,已经基本和Wi-Fi 6路由价格差不多了。看到这些Wi-Fi 7新品路由,不少朋友就...【详细内容】
2024-02-27    中关村在线  Tags:Wi-Fi   点击:(45)  评论:(0)  加入收藏
聊聊 Kubernetes 网络模型综合指南
这篇详细的博文探讨了 Kubernetes 网络的复杂性,提供了关于如何在容器化环境中确保高效和安全通信的见解。译自Navigating the Network: A Comprehensive Guide to Kubernete...【详细内容】
2024-02-19  云云众生s  微信公众号  Tags:Kubernetes   点击:(43)  评论:(0)  加入收藏
SSL协议是什么?关于SSL和TLS的常见问题解答
SSL(安全套接字层)及其后继者TLS(传输层安全)是用于在联网计算机之间建立经过身份验证和加密的链接的协议。尽管SSL协议在 1999年已经随着TLS 1.0的发布而被弃用,但我们仍将这些...【详细内容】
2024-02-06  IDC点评网    Tags:SSL协议   点击:(74)  评论:(0)  加入收藏
从零开始了解网络协议:TCP/IP详解
从零开始了解网络协议:TCP/IP详解 在当今数字化的时代,网络协议已经成为我们生活中不可或缺的一部分。作为互联网的基础,网络协议规定了数据如何在不同的网络设备之间传输。TC...【详细内容】
2024-02-01    简易百科  Tags:TCP/IP   点击:(62)  评论:(0)  加入收藏
BGP路由属性:互联网路由的灵活控制器
在互联网的庞大网络中,边界网关协议(BGP)是确保不同自治系统(AS)间路由信息有效交换的关键协议。然而,BGP的功能远不止于此。其核心组成部分,即BGP路由属性,赋予了BGP强大的灵活性,使...【详细内容】
2024-01-26  诺诺爱生活    Tags:互联网路由   点击:(45)  评论:(0)  加入收藏
简易百科之什么是网络延迟?
简易百科之什么是网络延迟?随着互联网的普及和发展,网络已经成为我们生活中不可或缺的一部分。然而,我们在使用网络时可能会遇到一种情况,那就是网络延迟。那么,什么是网络延迟呢...【详细内容】
2024-01-24    简易百科  Tags:网络延迟   点击:(163)  评论:(0)  加入收藏
网络延迟与网络速度有什么区别?分享具体的答案
通常,许多人抱怨网速测试。速度还是不错的,但是他们玩游戏的时候怎么会卡住,还是断开连接等等问题,这一系列问题始终困扰着大家。那么,网络延迟与网络速度有什么区别呢?请不要担心...【详细内容】
2024-01-24  萌新小郭    Tags:网络延迟   点击:(54)  评论:(0)  加入收藏
揭秘IP地址的网络威胁与攻击类型
在当今数字化时代,网络攻击已经成为网络安全的一大挑战。IP地址,作为互联网通信的基础,也成为网络威胁和攻击的焦点之一。本文将深入探讨不同类型的网络威胁和攻击,以及如何防范...【详细内容】
2024-01-22  IP数据云    Tags:IP地址   点击:(88)  评论:(0)  加入收藏
站内最新
站内热门
站内头条