keepalived底层原理

一.keepalived的简单介绍

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态。

Keepalived又加入了VRRP的功能,VRRP(Vritrual Router Redundancy Protocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行

因此Keepalvied 本身具有服务器状态检测和故障隔离功能,另外借助VRRP实现了IP选举后漂移的功能,做到了HA cluster。切记,这是理解keepalived的核心

二.VRRP协议与工作原理

1.VRRP协议的简单介绍

在网络环境中主机之间的通信都是通过配置静态路由或者(默认网关)来完成的,而主机之间的路由器一旦发生故障,通信就会失效,因此这种通信模式当中,路由器就成了一个单点瓶颈,为了解决这个问题,就引入了VRRP协议。

VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的路由器进行工作,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信。

2.VRRP协议中的一些简单概念

虚拟路由器:VRRP备份组中所有路由器的集合,它是一个逻辑概念,并不是正真存在的。可以理解为在一个组中: 主路由器+所有备份路由器=虚拟路由器

主路由器:在虚拟路由器内部同一时间只有一台物理路由器对外提供服务,这台提供服务的物理路由器被称为主路由器。一般情况下主路由器是由选举算法产生,它拥有对外服务的虚拟IP,提供各种网络功能,如:ARP请求,ICMP数据转发等

备份路由器:其他物理路由器不拥有对外的虚拟IP,也不对外提供网络功能,仅接受MASTER的VRRP状态通告信息。当主路由器失败时,处于BACKUP角色的备份路由器将重新进行选举,产生一个新的主路由器进入MASTER角色,继续提供对外服务,整个切换对用户来说是完全透明的。

3.VRRP选举机制

1)VRRP路由器运行中的状态:

Initialize状态:系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理

Master状态:一般主路由器处于Master状态

Backup状态:一般备份路由器处于Backup状态

2) VRRP使用选举机制来确定路由器的状态,优先级选举:

1.VRRP组中IP拥有者。如果虚拟IP地址与VRRP组中的某台VRRP路由器IP地址相同,则此路由器为IP地址拥有者,这台路由器将被定位主路由器。

2.比较优先级。如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,优先级大的作为主路由器

3.比较IP地址。在没有Ip地址拥有者和优先级相同的情况下,IP地址大的作为主路由器。

路由选举图
如图所示,虚拟IP为10.1.1.254,在VRRP组中没有IP地址拥有者,则比较优先级,很明显RB和RA的优先级要大于RC,则比较RA和RB的IP地址,RB的IP地址大。所以RB为组中的主路由器

4.工作原理:

1)路由器使用VRRP 功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master 路由器,优先级低的成为Backup 路由器。

2)Master 拥有对外服务的虚拟IP,提供各种网络功能,并定期发送VRRP 报文,通知备份组内的其他设备自己工作正常;Backup 路由器只接收Master 发来的报文信息,用来监控Master 的运行状态。

3)当Master 失效时,Backup 路由器进行选举,优先级高的Backup 将成为新的Master。

注意:

1)如果Backup 路由器的定时器超时后仍未收到Master 路由器发送来的VRRP报文,则认为Master 路由器已经无法正常工作,备份组内的路由器根据优先级选举出Master 路由器,承担报文的转发功能。

2)VRRP存在抢占方式和非抢占方式:

抢占方式:当Backup 路由器收到VRRP 报文后,会将自己的优先级与报文中的优先级进行比较。如果大于通告报文中的优先级,则成为Master 路由器;否则将保持Backup状态;

非抢占方式:只要Master 路由器没有出现故障,备份组中的路由器始终保持Master 或Backup 状态,Backup 路由器即使随后被配置了更高的优先级也不会成为Master 路由器;

三.keepalived 工作模式

Keepalived工作在TCP/IP参考模型的网络层、传输层、应用层:

网络层:Keepalived通过ICMP协议向服务器集群中的每一个节点发送一个ICMP数据包(有点类似与Ping的功能),如果某个节点没有返回响应数据包,那么认为该节点发生了故障,Keepalived将报告这个节点失效,并从服务器集群中剔除故障节点。

传输层:Keepalived在传输层里利用了TCP协议的端口连接和扫描技术来判断集群节点的端口是否正常,比如对于常见的WEB服务器80端口。或者SSH服务22端口,Keepalived一旦在传输层探测到这些端口号没有数据响应和数据返回,就认为这些端口发生异常,然后强制将这些端口所对应的节点从服务器集群中剔除掉。

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

四.keepalived架构图

keepalived架构图
在这里插入图片描述
简单模块介绍:
1)SchedulerI/OMultiplexer是一个I/O复用分发调度器,它负载安排Keepalived所有内部的任务请求;

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

3)Control Plane 是keepalived的控制版面,可以实现对配置文件编译和解析;

Core componets 这部分主要包含了5个部分;

a)看门狗—Watchdog:是计算机可靠领域中极为简单又非常有效的检测工具,Keepalived正是通过它监控Checkers和VRRP进程的。

b)检查者—Checkers:是Keepalived最基础、最主要的功能,可以实现对服务器运行状态检测和故障隔离。

c)VRRP模块—VRRP Stack:是keepalived引用VRRP功能,可以实现HA集群中失败切换功能。负责负载均衡器之间的失败切换FailOver;

d)IPVS模块—IPVS wrapper:是IPVS功能的一个实现,IPVSwarrper模块将可以设置好的IPVS规则发送的内核空间并且提供给IPVS模块,最终实现IPVS模块的负载功能。

e)VIP切换—Netlink Reflector:用来实现高可用集群Failover时虚拟IP(VIP)的设置和切换

五.Keepalived启动后会有三个进程:

父进程core:内存管理,子进程管理等等

子进程 vrrp:vrrpd子进程

子进程check:healthchecker子进程

由上图可知,两个子进程都被系统WatchDog看管,healthchecker子进程实现检查各自服务器的健康程度,例如HTTP,LVS等等,如果healthchecker子进程检查到MASTER上服务不可用,就会通知本机上的兄弟VRRP子进程,让它删除通告,并且去掉虚拟IP,转换为BACKUP状态。

六.keepalived与heartbeat的区别

Keepalived中实现轻量级的高可用,一般用于前端高可用,且不需要共享存储,一般常用于两个节点的高可用。而Heartbeat用于服务的高可用,且需要共享存储,一般用于多节点的高可用。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值