Linux运维:高性能集群软件Keepalived概述

Posted 计算机与网络安全

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux运维:高性能集群软件Keepalived概述相关的知识,希望对你有一定的参考价值。

一次性付费进群,长期免费索取教程,没有付费教程。

 教程列表  见微信公众号底部菜单 |   本文底部有推荐书籍 

ID:Computer-network




1、Keepalived是什么


Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态。它根据的第三、第四和第五层制检测每个服务节点的状态,如果某个服务节点出现异常,或工作出现故障,Keepalived将检测到,并将出现故障的服务节点从集群系统中剔除,而在故障节点恢复正常后,Keepalived又可以自动将此服务节点重新加入集群中,这些工作全部自动完成,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。


Keepalived后来又加入了VRRP的功能,VRRP(Virtual Router Redundancy Protocol,虚拟冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行。因此,Keepalived一方面具有状态检测和故障隔离功能,另一方面也具有HA cluster功能。下面详细介绍VRRP协议的实现过程。


2、VRRP协议与工作原理


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


熟悉网络的朋友对VRRP协议应该并不陌生。它是一种主备模式的协议,通过VRRP可以在网络发生故障时透明地进行设备切换而不影响间的,这其中涉及两个概念:物理和虚拟。


VRRP可以将两台或多台物理设备虚拟成一个虚拟,这个虚拟通过虚拟IP(一个或多个)对外提供服务,而在虚拟内部是多个物理协同工作,同一时间只有一台物理对外提供服务,这台物理被称为主(处于MASTER角色)。一般情况下MASTER由选举产生,它拥有对外服务的虚拟IP,提供各种网络功能,如请求、ICMP、数据转发等。而其他物理不拥有对外的虚拟IP,也不提供对外网络功能,仅仅接收MASTER的VRRP状态通告信息,这些被统称为备份(处于BACKUP角色)。当主失效时,处于BACKUP角色的备份将重新进行选举,产生一个新的主进入MASTER角色继续提供对外服务,整个切换过程对用户来说完全透明。



3、Keepalived工作原理


Keepalived作为一个高性能集群软件,它还能实现对集群中运行状态的监控及故障隔离。下面介绍Keepalived对运行状态监控和检测的工作原理。


Keepalived工作在的第三、第四和第五层,也就是网络层、传输层和应用层。根据各层所能实现的功能,Keepalived运行机制如下。



在应用层,可以运行FTP、TELNET、SMTP、等各种不同类型的高层协议,Keepalived的运行方式也更加全面化和复杂化,用户可以通过自定义Keepalived的工作方式,例如,用户可以通过编写程序来运行Keepalived,而Keepalived将根据用户的设定检测各种程序或服务是否允许正常,如果Keepalived的检测结果与用户设定不一致时,Keepalived将把对应的服务从中移除。


4、Keepalived的体系结构


Keepalived是一个高度模块化的软件,结构简单,但扩展性很强,感兴趣的朋友可以阅读Keepalived的源码。图1是官方给出的Keepalived体系结构拓扑图。

图1  Keepalived体系结构图


从图1中可以看出,Keepalived的体系结构从整体上分为两层,分别是用户空间层(User Space)和内核空间层(Kernel Space)。下面介绍Keepalived两层结构的详细组成及实现的功能。



Keepalived最初就是为LVS提供服务的,由于Keepalived可以实现对集群节点的状态检测,而IPVS可以实现功能,因此,Keepalived借助于第三方模块IPVS就可以很方便地搭建一套系统。在这里有个误区,由于Keepalived可以和IPVS一起很好地工作,因此很多初学者都以为Keepalived就是一个软件,这种理解是错误的。


在Keepalived中,IPVS模块是可配置的,如果需要功能,可以在编译Keepalived时打开功能,也可以通过配置编译参数关闭。


NETLINK模块主要用于实现一些高级路由框架和一些相关的网络功能,完成用户空间层Netlink Reflector模块发来的各种网络请求。


用户空间层位于内核空间层之上,Keepalived的所有具体功能都在这里实现,下面介绍几个重要部分所实现的功能。


在用户空间层,Keepalived又分为4个部分,分别是Scheduler I/O Multiplexer、Memory Management、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,下面介绍每个模块所实现的功能如下。


1)WatchDog


WatchDog是可靠性领域中一个极为简单又非常有效的检测工具,它的工作原理是针对被监视的目标设置一个计数器和一个阈值,WatchDog会自己增加此计数值,然后等待被监视的目标周期性地重置该计数值。一旦被监控目标发生错误,就无法重置此计数值,WatchDog就会检测到,于是采取对应的恢复措施,例如重启或关闭。


在中很早就引入了WatchDog功能,而Keepalived正是通过WatchDog的运行机制来监控Checkers和VRRP进程的。


2)Checkers


这是Keepalived最基础的功能,也是最主要的功能,可实现对运行状态检测和故障隔离。


3)VRRP Stack


这是Keepalived后来引入的VRRP功能,可以实现HA集群中失败切换(Failover)功能。Keepalived通过VRRP功能再结合LVS软件即可部署一个高性能的集群系统。


4)IPVS wrapper


这是IPVS功能的一个实现。IPVS wrapper模块可以将设置好的IPVS规则发送到内核空间并提交给IPVS模块,最终实现IPVS模块的功能。


5)Netlink Reflector


用来实现高可用集群中Failover时虚拟IP(VIP)的设置和切换。Netlink Reflector的所有请求最后都发送到内核空间层的NETLINK模块来完成。


ID:Computer-network


【推荐书籍】