keepalived工作原理

keepalived是一款c语言写的实现在linux系统上实现负载均衡和高可用的软件。它遵从于GNU是一款优秀的开源软件。

一:两个关键词的解释

1:负载均衡

keepalived内置了对ipvs函数的调用支持。可以直接在keepalived中按照语法配置ipvs然后keepalived就可以实现对ipvs的配置。

2:高可用

keepalived是以VRRP(Virtual Router Redundancy Protocol)协议为实现基础的即虚拟路由冗余协议。虚拟路由冗余协议可以认为是实现路由器高可用的协议即将N台提供相同功能的路由器组成一个路由器组这个组里面有一个master和多个backupmaster上面有一个对外提供服务的vip该路由器所在局域网内其他机器的默认路由为该vipmaster会发组播当backup收不到vrrp包时就认为master宕掉了这时就需要根据VRRP的优先级来选举一个backup当master。这样的话就可以保证路由器的高可用了。

二:keepalived的组成

keepalived采用多进程的设计模式每个进程负责不同的功能我们在运行lvs的机器上看到的进程如下

[[email protected]_83_135 ~]# ps -ef|grep keep

root     27613 25973  0 16:56 pts/0    00:00:00 grep keep
root     30731     1  0 Mar17 ?        00:00:00 keepalived -D
root     30732 30731  0 Mar17 ?        00:00:45 keepalived -D
root     30733 30731  0 Mar17 ?        00:02:32 keepalived -D

core  keepalived的核心程序控制全局配置的解析进程启动等工作。

vrrp  Keepalived的vrrpd子进程以及相关代码。

check keepalived对后端的健康检查及对lvs相关配置的解析

如果keepalived 不运行在lvs的机器上只开vrrp即可。也可只运行healthchecker程序。具体使用命令

keepalived --vrrp               -P    Only run with VRRP subsystem.
  keepalived --check              -C    Only run with Health-checker subsystem.

三:vrrp协议简介

1. 前言

VRRP(Virtual Router Redundancy Protocol)协议是用于实现路由器冗余的协议最新协议在RFC3768中定义原来的定义RFC2338被废除新协议相对还简化了一些功能。

2. 协议说明

2.1 协议

VRRP协议是为消除在静态缺省路由环境下的缺省路由器单点故障引起的网络失效而设计的主备模式的协议使得在发生故障而进行设备功能切换时可以不影响内外数据通信不需要再修改内部网络的网络参数。VRRP协议需要具有IP地址备份优先路由选择减少不必要的路由器间通信等功能。

VRRP协议将两台或多台路由器设备虚拟成一个设备对外提供虚拟路由器IP(一个或多个)而在路由器组内部如果实际拥有这个对外IP的路由器如果工作正常的话就是MASTER或者是通过算法选举产生MASTER实现针对虚拟路由器IP的各种网络功能如ARP请求ICMP以及数据的转发等其他设备不拥有该IP状态是BACKUP除了接收MASTER的VRRP状态通告信息外不执行对外的网络功能。当主机失效时BACKUP将接管原先MASTER的网络功能。

配置VRRP协议时需要配置每个路由器的虚拟路由器ID(VRID)和优先权值使用VRID将路由器进行分组具有相同VRID值的路由器为同一个组VRID是一个0255的正整数同一组中的路由器通过使用优先权值来选举MASTER优先权大者为MASTER优先权也是一个0255的正整数。

VRRP协议使用多播数据来传输VRRP数据VRRP数据使用特殊的虚拟源MAC地址发送数据而不是自身网卡的MAC地址VRRP运行时只有MASTER路由器定时发送VRRP通告信息表示MASTER工作正常以及虚拟路由器IP(组)BACKUP只接收VRRP数据不发送数据如果一定时间内没有接收到MASTER的通告信息各BACKUP将宣告自己成为MASTER发送通告信息重新进行MASTER选举状态。

2.2 MASTER选举

如果对外的虚拟路由器IP就是路由器本身配置的IP地址的话该路由器始终都是MASTER

否则如果不具备虚拟IP的话将进行MASTER选举各路由器都宣告自己是MASTER发送VRRP通告信息

如果收到其他机器的发来的通告信息的优先级比自己高将转回BACKUP状态

如果优先级相等的话将比较路由器的实际IPIP值较大的优先权高

不过如果对外的虚拟路由器IP就是路由器本身的IP的话该路由器始终将是MASTER这时的优先级值为255。

2.3 协议状态机

VRRP协议状态比较简单就三种状态初始化主机备份机。

+---------------+

+--------->|               |<-------------+

|          |  Initialize   |              |

|   +------|               |----------+   |

|   |      +---------------+          |   |

|   |                                 |   |

|   V                                 V   |

+---------------+                       +---------------+

|               |---------------------->|               |

|    Master     |                       |    Backup     |

|               |<----------------------|               |

+---------------+                       +---------------+

初始化:

路由器启动时如果路由器的优先级是255(最高优先级路由器拥有路由器地址)要发送VRRP通告信息并发送广播ARP信息通告路由器IP地址对应的MAC地址为路由虚拟MAC设置通告信息定时器准备定时发送VRRP通告信息转为MASTER状态

否则进入BACKUP状态设置定时器检查定时检查是否收到MASTER的通告信息。

主机:

主机状态下的路由器要完成如下功能

设置定时通告定时器

用VRRP虚拟MAC地址响应路由器IP地址的ARP请求

转发目的MAC是VRRP虚拟MAC的数据包

如果是虚拟路由器IP的拥有者将接受目的地址是虚拟路由器IP的数据包否则丢弃

当收到shutdown的事件时删除定时通告定时器发送优先权级为0的通告包转初始化状态

如果定时通告定时器超时时发送VRRP通告信息

收到VRRP通告信息时如果优先权为0发送VRRP通告信息否则判断数据的优先级是否高于本机或相等而且实际IP地址大于本地实际IP设置定时通告定时器复位主机超时定时器转BACKUP状态否则的话丢弃该通告包

备机:

备机状态下的路由器要实现以下功能

设置主机超时定时器

不能响应针对虚拟路由器IP的ARP请求信息

丢弃所有目的MAC地址是虚拟路由器MAC地址的数据包

不接受目的是虚拟路由器IP的所有数据包

当收到shutdown的事件时删除主机超时定时器转初始化状态

主机超时定时器超时的时候发送VRRP通告信息广播ARP地址信息转MASTER状态

收到VRRP通告信息时如果优先权为0表示进入MASTER选举否则判断数据的优先级是否高于本机如果高的话承认MASTER有效复位主机超时定时器否则的话丢弃该通告包

2.4 ARP查询处理

当内部主机通过ARP查询虚拟路由器IP地址对应的MAC地址时MASTER路由器回复的MAC地址为虚拟的VRRP的MAC地址而不是实际网卡的MAC地址这样在路由器切换时让内网机器觉察不到而在路由器重新启动时不能主动发送本机网卡的实际MAC地址。如果虚拟路由器开启的ARP代理(proxy_arp)功能代理的ARP回应也回应VRRP虚拟MAC地址

2.5 VRRP应用举例

+-----------+      +-----------+

|   Rtr1    |      |   Rtr2    |

|(MR VRID=1)|      |(BR VRID=1)|

|(BR VRID=2)|      |(MR VRID=2)|

VRID=1  +-----------+      +-----------+  VRID=2

IP A ---------->*            *<---------- IP B

|            |

|            |

------------------+------------+-----+--------+--------+--------+--

^        ^        ^        ^

|        |        |        |

(IP A)   (IP A)   (IP B)   (IP B)

|        |        |        |

+--+--+  +--+--+  +--+--+  +--+--+

|  H1 |  |  H2 |  |  H3 |  |  H4 |

+-----+  +-----+  +--+--+  +--+--+

Legend:

---+---+---+--  =  Ethernet, Token Ring, or FDDI

H  =  Host computer

MR  =  Master Router

BR  =  Backup Router

*  =  IP Address

(IP)  =  default router for hosts

这是通常VRRP使用拓扑两台路由器运行VRRP互为备份路由器1作为VRID组1的MASTERIP地址AVRID组2的BACKUP路由器2作为VRID组2的MASTERIP地址BVRID组1的BACKUP内部网络中一部分机器的缺省网关地址是IP地址A一部分是IP地址B正常情况下以A为网关的数据将走路由器1以B为网关的数据将走路由器2如果一台路由器发生故障所有数据将走另一台路由器。

3. 协议定义

3.1 以太头

源MAC地址必须为虚拟MAC地址00-00-5E-00-01-{VRID}VRID为虚拟路由器ID值16进制格式所以同一网段中最多有255个VRRP路由器目的MAC为多播类型的MAC。

这里可以看出VRID非常重要

3.2 IP头参数

VRRP包的源地址是本机地址目的地址必须为224.0.0.18为一多播地址IP协议号为112IP包的TTL值必须为255。

3.3 VRRP协议数据格式

0                   1                   2                   3

0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|Version| Type  | Virtual Rtr ID|   Priority    | Count IP Addrs|

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|   Auth Type   |   Adver Int   |          Checksum             |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                         IP Address (1)                        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                            .                                  |

|                            .                                  |

|                            .                                  |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                         IP Address (n)                        |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                     Authentication Data (1)                   |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

|                     Authentication Data (2)                   |

+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+

其中

version版本4位在RFC3768中定义为2

Type类型4位目前只定义一种类类型通告数据取值为1

Virtual Rtr ID虚拟路由器ID8位

Priority优先级8位具备冗余IP地址的设备的优先级为255

Count IP AddrsVRRP包中的IP地址数量8位

Auth Type认证类型8位RFC3768中认证功能已经取消此字段值定义0(不认证)为12只作为对老版本的兼容

Adver Int通告包的发送间隔时间8位单位是秒缺省是1秒

Checksum校验和16位校验数据范围只是VRRP数据即从VRRP的版本字段开始的数据不包括IP头

IP Address(es)和虚拟路由器相关的IP地址数量由Count IP Addrs决定

Authentication DataRFC3768中定义该字段只是为了和老版本兼容必须置0。

3.4 接收数据时的必须检查

收到VRRP数据包时要进行以下验证不满足的数据包将被丢弃

-  TTL必须为255

-  VRRP版本号必须为2

-  一个包中数据字段必须完整

-  校验和必须正确

-  必须验证在接收的网卡上配置了VRID值而且本地路由器不是路由IP地址的拥有者

-  必须验证VVRP认证类型和配置的一致

4. 结论

VRRP实现了对路由器IP地址的冗余功能防止了单点故障造成的网络失效VRRP本身是热备形式的但可以通过互相热备实现路由器的均衡处理新版的VRRP较老版简化了认证处理实际不再进行数据的认证这是因为在实际应用中经常出现认证成为造成多个MASTER同时使用的异常情况。

keepalived工作原理,布布扣,bubuko.com

时间: 2024-10-03 22:15:38

keepalived工作原理的相关文章

keepalived工作原理和配置说明

keepalived是什么 keepalived是集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障. keepalived工作原理 keepalived是以VRRP协议为实现基础的,VRRP全称Virtual Router Redundancy Protocol,即虚拟路由冗余协议. 虚拟路由冗余协议,可以认为是实现路由器高可用的协议,即将N台提供相同功能的路由器组成一个路由器组,这个组里面有一个master和多个backup,master上面有一个对外提

keepalived工作原理及裂脑

1. keepalived服务的工作原理(重点) ükeepalived高可用对之间是通过VRRP协议通信的,因此,我们从VRRP协议介绍: üvrrp协议,全称virtual  router redundancy protocol ,中文名名为虚拟路由冗余协议,VRRP的出现时为了解决静态路由的单点故障. üVRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的. üVRRP是用IP多播的方式(默认多播地址224.0.0.18)实现高可用对之间通信的. ü工作时主节点发包,备节点接

keepalived 工作原理与配置文件讲解

1.简介 Keepalived:高可用或热备软件,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构不可用)的发生,keepalived就是VRRP协议的实现. 2.原理 keepalived采用是模块化设计,不同模块实现不同的功能,keepalived主要有三个模块,分别是core.check和vrrp. core:是keepalived的核心,负责主进程的 启动和维护,全局配置文件的加载解析等 check: 负责healthchecker(健康检查),包括了各种健康检查方式

Keepalived工作原理(简单概述)

keepalived这项服务简单来说,就是来防止单点故障的. 所谓单点故障,再简单点来说就是老大挂了手下的小弟过来接班,老大复活了,继续当小弟,保证服务的高可用. 官方一点来说就是进行故障的切换转移,是通过VRRP虚拟路由器冗余协议来实现的,VRRP是通过一种竞选机制来将路由的任务交给某台VRRP路由器. 通常情况下,keepalived和LVS负载均衡软件一起出现,用来管理和监控整个集群的节点状态,这里就不详细介绍了. 看一下keepalived的配置文件,以及各个模块的作用功能 /etc/k

keepalived介绍及工作原理

keepalived介绍keepalived观察其名可知,保持存活,在网络里面就是保持在线了,也就是所谓的高可用或热备,它集群管理中保证集群高可用的一个服务软件,其功能类似于heartbeat,用来防止单点故障(单点故障是指一旦某一点出现故障就会导致整个系统架构的不可用)的发生.说到keepalived就不得不说VRRP协议,可以说这个协议就是keepalived实现的基础,那么首先我们来看看VRRP协议. VRRP协议介绍学过网络的朋友都知道,网络在设计的时候必须考虑到冗余容灾,包括线路冗余,

Keepalived 介绍 原理

keepalived是什么: 这里先和前面的LVS 联系一下,我们平时使用一台机器运行 LVS 进行数据的转发,这里会有两个问题1.如果这台LVS 故障了怎么办?整个集群系统都会停止工作2.LVS后端一般有多台 real  server ,如果其中的一台(多台)real server 故障了 怎么办? keepalived  就可以解决上面两个问题,对应功能1 和 功能2 功能1.使用VRRP协议 来控制一组高可用(HA) 主备系统,一台master工作,一台slave热备:master失效后s

lvs工作原理

LB Load Balancing:解决方案 硬件: F5 BIG-IP 思杰 Citrix Netscaler A10 A10 Array Redware 软件:lvs linux Virtual Server 作者章文嵩博士 ipvs相当于netfilter,工作在内核中,将用户转发 框架,需要依赖以规则完成转发 ipvs集群服务 定义一个或多个后端的服务器 ipvsadm LVS:四层交换.四层路由(据说并发400w,F5 600w) VIP: keepalived CIP   clien

keepalived简单原理及配置参数介绍_2015101601

>>>keepalived是什么? keepalive是HA(High Available)高可用集群的一种实现方案,用来防止系统架构中的单点故障.其是vrrp协议的实现. >>>vrrp协议工作简介 vrrp(Virtual Router Redundancy Protocol),即是虚拟路由冗余协议.用于实现多个路由器的高可用性.其工作原理是将一组路由器虚拟成一个虚拟路由器对外提供一个或多个IP地址.在这组路由器当中,实际对外提供IP地址的路由器被称为MASTER,

LVS-DR工作原理图文详解

为了阐述方便,我根据官方原理图另外制作了一幅图,如下图所示:VS/DR的体系结构: 我将结合这幅原理图及具体的实例来讲解一下LVS-DR的原理,包括数据包.数据帧的走向和转换过程. 官方的原理说明:Director接收用户的请求,然后根据负载均衡算法选取一台realserver,将包转发过去,最后由realserver直接回复给用户. 实例场景设备清单: 说明:我这里为了方便,client是与vip同一网段的机器.如果是外部的用户访问,将client替换成gateway即可,因为IP包头是不变的