Keepalived 01 — 简述

简述

Keepalived: 是一个用 C 语言编写的路由软件,该软件项目的主要目标是为 GNU/Linux 系统和基于 GNU/Linux 的基础设施提供简单而强大的 负载均衡 以及 高可用。负载均衡框架依赖著名和广泛使用的 IPVS 内核模块,提供 第四层的负载均衡

keepalived 实现了一套检查器,可根据服务器状态动态地、自适应地维护以及管理服务器池,以达到负载均衡。另外,其 HA(高可用)是使用 VRRP 协议实现的。为了实现最快的网络故障检测,keepalived 还实现了 BFD 协议。截至本文发布前,keepalived 最新版本为 2.3.2(2024年12月21日)。

您可以该链接访问其他更多的信息 —— https://keepalived.org/
github 存储库 —— https://github.com/acassen/keepalived

术语解释

第四层的负载均衡(四层负载均衡):我们常说的 ISO/OSI 七层模式是指 物理层数据链路层网络层传输层会话层表示层应用层。ISO/OSI 只是一个理论的参考模型,现实中并不存在,一般使用的是 TCP/IP 五层模型。工作在第四层,即能够对 "IP地址 + 端口" 进行负载均衡。

名称的翻译
不同的书籍中,有说 TCP/IP 四层模型的 ,有说 TCP/IP 五层模型的,但其实它们是一个东西。在有些中文资料中,会将 “传输层” 翻译为 “运输层”,将 TCP/IP 四层模型的 “网络层” 翻译为 “网际层”。

IPVS(IP Virtual Server,IP虚拟服务器):是一种通过 Linux 内核实现的负载均衡技术,LVS 也是利用该技术实现的负载均衡能力,更多介绍请参阅这里 —— http://www.linuxvirtualserver.org/index.html

VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议):从名称就可以知道,该协议可以避免由于 LAN 网网关的单点故障而导致的网络中断,它能够在不改变组网的情况下,将多个网关加入一个组中,虚拟成一个虚拟网关,有了虚拟网关,也就有了 虚拟IP地址(VIP)

  • 协议版本有 VRRPv2 和 VRRPv3
  • VRRPv2 适用于 IPv4 网络;VRRPv3 适用于 IPv4 和 IPv6 两种网络
  • Advertisemen 报文,目的IP地址 224.0.0.18,目的 MAC地址 01-00-5e-00-00-12

网关:也叫默认路由, 是一台拥有路由功能的网络设备,可以是路由器,也可以是一台电脑,但前提必须拥有一定的功能,其最主要的是 NAT转发 以及分隔广播域功能。可简单理解为只要 LAN 网处理不了的数据包,都交给网关来处理。通常所说的的网关指的是工作在第三层的路由器。

工作原理

最简单的网络拓扑中,它是这样的:

正常情况下,若终端想要访问 WAN 的资源,则路由器(网关)会根据路由表将数据包进行三层的转发。当路由器(网关)出现任意的故障时,则 LAN 网的所有终端设备无法访问 WAN 网,我们将这种故障称为 网关单点故障

我们知道,任意的终端设备(手机、电脑、平板等),它的网关都只能配置一个,不管你是通过手工静态配置还是通过 DHCP 。为了避免网关的单点故障,此时可通过部署多个网关来解决,那么如何让多个网关协同工作且不会互相冲突呢?答案是 VRRP。比如说,有两台网关设备,它们 LAN网 物理网卡的 IP地址 是肯定不能相同的。但这也带来一个问题,就是如果某一个终端填写的网关是故障网关的其中一个,那就需要人工干预,达不到冗余的效果(不能自动的切换网关)。

Q:VRRP 是如何工作的?

当有一组两台网关设备时,若使用了 VRRP 这个协议,这两台网关设备的相应端口会协商出一个 主(Master)备(Backup),当然你可以通过调整 priority 的值指定谁是 主 谁是 备,值范围为 0-255(手工能配置的值为 1-254),值数字越大,优先级越高 。终端设备的网关就是那个 虚拟IP地址(VIP)

注:由几台网关组成的虚拟网关又称为 VRRP备份组

当两台网关都正常时,一旦两台网关设备完成了 VRRP 配置,则 Master 网关会一直向 Backup 网关周期性地发 Advertisement 报文, 以报告组的其他设备,自己处于正常状态,Backup 网关则会监听来自 Master 网关的报文。此时请求、转发、响应的过程是:终端 <——> 交换机 <——> Master网关 <——>光猫 <——> WAN


当 Master网关 发生了故障,若 Backup网关 在 Master_Down_Interval 时间内未收到来着 Master网关的 Advertisement 报文,会立即成为 Master网关,由于成为了 Master网关,则也会周期性的发送 Advertisement 报文。此时请求、转发、响应的过程是:终端 <——> 交换机 <——> Backup网关(Master) <——>光猫 <——> WAN

当 Master网关从故障中恢复过来,VRRP 里有个东西叫 抢占模式(preempt mode),若发现我的 priority 值比你的高,于是把 Master 抢过来,重新成为 Master网关。此时请求、转发、响应的过程是:终端 <——> 交换机 <——> Master网关 <——>光猫 <——> WAN

Q:是不是一定要 Master网关 故障才能发生主备切换?

并不是。若 Master网关 与 交换机 之间的链路故障了,也是可以切换的,因为 Backup网关 收不到它的报文。

Q:初始状态下,若两台网关的 priority 值一样,怎么协商出 Master 和 Backup?

根据物理网卡的IP地址大小,大的那个会成为 Master。

Q:VRRP 组里的网关成员数量一定要 2 台吗?

不是,是至少 2 台。

Q:主备切换再到旧 Master 恢复,priority 值高这个旧 Master 一定能够成为Master吗?

不一定,要看是抢占模式还是非抢占模式。

Q:VRRP 中的 VRID 是什么?

用来标识每一组 VIP,值范围为 1~255

Q:为什么需要 BFD?

BFD(Bidirectional Forwarding Detection,双向转发检测):一种基于 RDC 2880 标准的高速检测机制,两个系统建立了 BFD 会话后,在它们之间的通道上周期性地发送 BFD 报文,如果一方在协商的检测时间内没有接收到 BFD 报文,则认为这条双向通道上发生了故障。上层协议通过BFD感知到链路故障后可以及时采取措施,进行故障恢复。

在实际的企业与IDC中,网络中断会严重的影响业务正常运行并造成重大损失,为了提高可靠性,网络设备需要尽快检测与相邻设备间的通信故障,以便采取正确的措施保证业务正常运行。
有些同学可能会想到 SDH(Synchronous Digital Hierarchy,同步数字体系),它是通过硬件检测信号来检测链路故障,但并不是所有的介质都能提供硬件检测。此时,应用就要依靠上层协议自身的 Hello 报文机制来进行故障检测。上层协议的检测时间通常在秒级,当数据传输速率达到GB级时,秒级检测时间内,大量数据将会丢失。在三层网络中,Hello 报文检测机制无法针对所有路由来检测故障(如静态路由),这对系统间互联互通定位故障造成困难。

BFD 协议就是在这种背景下产生的,BFD 提供了一个通用的、标准化的、与介质和协议无关的快速故障检测机制,它具有以下优点:

  • 提供轻负荷、短周期的故障检测,故障检测时间可达到毫秒级,可靠性更高。
  • 支持多种故障检测,如接口故障、数据链路故障、转发引擎本身故障等。
  • 不依赖专有硬件,能够对任何介质、任何协议层进行实时检测。

通常来说 ,BFD 不能独立运行,而是作为辅助与接口状态或路由协议(如静态路由、OSPF、IS-IS、BGP等)联动使用。

用一杯咖啡支持我们,我们的每一篇[文档]都经过实际操作和精心打磨,而不是简单地从网上复制粘贴。期间投入了大量心血,只为能够真正帮助到您。
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇