Keepalived简介

一、Keepalived简介

  1. 是一个轻量级别的高可用解决方案。

  2. 是一个免费开源的,用C编写的类似于layer3, 4 & 7交换机制软件,具备我们平时说的第3层、第4层和第7层交换机的功能。主要提供负载均衡和高可用。

    1. 负载均衡实现需要依赖Linux的虚拟服务内核模块(ipvs)
    2. 高可用是通过VRRP协议实现多台机器之间的故障转移服务。
高可用
广义来讲:是指整个系统的高可用;
狭义来讲:就是主机的冗余和接管。

   
   
     
     
     
     
  • 1
  • 2

二、 Keepalived是什么?

提供服务监控,故障隔离,失败切换功能的中间件

服务器状态检测和故障隔离功能(健康检查)

Keepalived根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,并将出现的故障的服务器节点从集群系统中剔除。

采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活

TCP/IP参考模型

Keepalived简介_第1张图片

失败切换功能

Keepalived加入了VRRP(VritrualRouterRedundancyProtocol,虚拟路由冗余协议)的功能。
失败切换:主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,就将请求切换到备负载均衡器。

三、 VRRP协议与工作原理

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

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

VRRP还支持认证,就是为了防止随意一个VRRP设备加入到当前的虚拟路由组离来,它提供无认证、简单8位字符串认证和MD5认证(该认证方式Keepalive不支持)。

Keepalived简介_第2张图片

虚拟路由器

虚拟路由器是VRRP备份组中所有路由器的集合,它是一个逻辑概念,并不是正真存在的。

虚拟路由器=主路由器+所有备份路由器
虚拟路由器有一个虚拟的IP地址和MAC地址。

主机将虚拟路由器当作默认网关。
虚拟MAC地址的格式为00-00-5E-00-01-{VRID}。

通常情况下,虚拟路由器回应ARP请求使用的是虚拟MAC地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实MAC地址。

主路由器(MASTER)

对外提供网络功能,如:ARP请求,ICMP数据转发等
拥有对外的虚拟IP
虚拟路由器内部同一时间只有一台主路由器
一般情况下主路由器是由选举算法产生

备份路由器(BACKUP)

所有备份路由器=虚拟路由器-主路由器
不拥有对外的虚拟IP
不对外提供网络功能
只接受MASTER的VRRP状态通告信息,当主路由器挂掉时,所有备份路由器将重新进行选举,产生一个新的主路由器。

3.1、VRRP选举机制

虚拟路由器在运行过程中有三种状态
  1. Initialize状态
    1. 系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理;
  2. Master状态
    1. 主路由器标志
  3. Backup状态
    1. 备份路由器标志
VRRP使用选举机制来确定路由器的状态,优先级选举
  1. VRRP组中IP拥有者。
    1. 如果虚拟IP地址与VRRP组(虚拟路由器)中的 A 路由器IP地址相同,则 A 路由器 被定位主路由器。
  2. 比较优先级。
    1. 如果没有IP地址拥有者,则比较路由器的优先级,优先级的范围是0~255,优先级大的作为主路由器。
  3. 比较IP地址。
    1. 如果1,2都不能确认主路由器,那么IP地址大的作为主路由器。

如下图所示

Keepalived简介_第3张图片

3.2、工作过程

  1. 路由器使用VRRP 功能后,先会 选举出 Master 路由器,Master 拥有对外服务的虚拟IP,虚拟MAC地址,提供各种网络功能,并定期发送VRRP 报文,通知Backup 组内的其他设备自己工作正常。
  2. Backup 路由器只接收Master 发来的报文信息,用来监控Master 的运行状态。
    1. 当Master 失效时,Backup 的所有路由器会选举一个新的Master 。
      1. 如果Backup 路由器的定时器超时后仍未收到Master 路由器发送来的VRRP报文,则认为Master 路由器已经无法正常工作。
      2. Master 挂了
      3. Master 没挂,但Backup 超过定时器的超时时间,且仍未收到Master 路由器发送来的VRRP报文,则认为Master 路由器已经无法正常工作。
抢占方式

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

非抢占方式

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

四、 Keepalvied的工作原理

Keepalived本质就是为ipvs服务的,它也不需要共享存储。IPVS其实就是一些规则,Keepalived主要的任务就是去调用ipvsadm命令,来生成规则,并自动实现将用户需要访问的地址转移到可用LVS节点实现。所以keepalive的高可用是属于具有很强针对性的高可用,它和corosync这种通用性HA方案不同。

Keepalived的主要目的就是它自身启动为一个服务,它工作在多个LVS主机节点上,当前活动的节点叫做Master备用节点叫做Backup,Master会不停的向Backup节点通告自己的心跳,这种通告是基于VRRP协议的。Backup节点一旦接收不到Master的通告信息,它就会把LVS的VIP拿过来,并且把ipvs的规则也拿过来,在自己身上生效,从而替代Master节点。

Keepalived除了可以监控和转移LVS资源之外,它还可以直接配置LVS而不需要直接使用ipvsadm命令,因为它可以调用,也就是说在LVS+KEEPALIVED模型中,你所有的工作在Keepalived中配置就可以了,而且它还有对后端应用服务器健康检查的功能。

直接一句话Keepalived就是VRRP协议的实现,该协议是虚拟冗余路由协议。

TCP/IP参考模型

Keepalived简介_第4张图片

4.1、Keepalived对服务器运行状态和故障隔离的工作原理

Keepalived工作在TCP/IP参考模型的三层、四层、五层(网络层,传输层,应用层)

网络层(3)

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

传输层(4)

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

应用层(5)

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

五、 Keepalived体系结构

Keepalived起初是为LVS设计的,由于Keeplalived可以实现对集群节点的状态检测,而IPVS可以实现负载均衡功能,因此,Keepalived借助于第三方模块IPVS就可以很方便地搭建一套负载均衡系统。在Keepalived当中IPVS模块是可配置的,如果需要负载均衡功能,可以在编译Keepalived时开打负载均衡功能,也可以通过编译参数关闭。

keepalived运行时,会启动3个进程,分别为:core(核心进程),check(子进程)和vrrp(子进程)

  • core:负责主进程的启动,维护和全局配置文件的加载; 指挥下面2个子进程工作。
  • check:负责IPVS的后端的应用服务器的健康检查,当检测失败就会调用IPVS规则删除后端服务器的IP地址,检测成功了再加回来。当检测后端有失败的情况可以使用SMTP通知管理员。另外VRRP如果检测到另外一个Keepalive失败也可以通过SMTP通知管理员。
  • vrrp:用来实现vrrp协议

Keepalived简介_第5张图片

5.1、SchedulerI/OMultiplexer

一个I/O复用分发调度器,它负载安排Keepalived所有内部的任务请求;

5.2、Memory Mngt

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

5.3、Control Plane

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

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

Watchdog

负载监控checkers和VRRP进程的状况

因为主进程(Control componets)并不负责具体工作,具体工作都是子进程(checkers和VRRP)完成的。如果子进程挂了,那Keepalived就不完整了,所以那2个子进程会定期的向主进程打开的一个内部Unix Socket文件写心跳信息。如果有某个子进程不写信息了,它就会重启子进程,主进程就是让WatchDog来监控子进程的。

Checkers

负责真实服务器的健康检查healthchecking,是keepalived最主要的功能。换言之,可以没有VRRP Stack,但健康检查healthchecking是一定要有的。

VRRP Stack

负载负载均衡器之间的失败切换FailOver,如果只用一个负载均稀器,则VRRP不是必须的。

IPVS wrapper

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

Netlink Reflector

用来设定vrrp的vip地址等。

六、keepalived高可用架构示意图

Keepalived简介_第6张图片

你可能感兴趣的:(Mysql,mysql)