keepalived工作原理

keepalived工作原理keepalived 工作原理 Keepalived 简介 Keepalived 是什么 VRRP 协议与工作原理 VRRP 选举机制工作过程 Keepalvied 的工作原理 Keepalived 体系结构与 heartbeat corosync 等比较 Keepalived 简介 Keepalived 是 Linux 下一个轻量级别的高可用解决方案 高可用 广义来讲 是指整个系统的高可用行 狭义的来讲就是主机的冗余和接管 它与 HeartBeat 实现类似的功能 都可以实现服务或者网络的高可用 但是又有差别 HeartBeat 是一个专业的

Keepalived简介

Keepalived是Linux下一个轻量级别的高可用解决方案。高可用:广义来讲,是指整个系统的高可用行;狭义的来讲就是主机的冗余和接管。

它与HeartBeat实现类似的功能,都可以实现服务或者网络的高可用,但是又有差别,HeartBeat是一个专业的、功能完善的高可用软件,它提供HA软件所需的基本功能,比如:心跳检测、资源接管,检测集群中的服务,在集群节点转移共享IP地址的所有者等等。HeartBeat功能强大,但是部署和使用相对比较麻烦,与HeartBeat相比,Keepalived主要是通过虚拟路由冗余来实现高可用功能,虽然它没有HeartBeat功能强大,但是Keepalived部署和使用非常的简单,所有配置只需要一个配置文件即可以完成。

Keepalived是什么?

Keepalived起初是为LVS设计的,专门用来监控集群系统中各个服务节点的状态,它根据TCP/IP参考模型的第三、第四层、第五层交换机制检测每个服务节点的状态,如果某个服务器节点出现异常,或者工作出现故障,Keepalived将检测到,并将出现的故障的服务器节点从集群系统中剔除,这些工作全部是自动完成的,不需要人工干涉,需要人工完成的只是修复出现故障的服务节点。

后来Keepalived又加入了VRRP的功能,VRRP(VritrualRouterRedundancyProtocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied一方面具有服务器状态检测和故障隔离功能,另外一方面也有HAcluster功能。

健康检查和失败切换是keepalived的两大核心功能。所谓的健康检查,就是采用tcp三次握手,icmp请求,http请求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时,由备负载均衡器承载对应的业务,从而在最大限度上减少流量损失,并提供服务的稳定性。

VRRP协议与工作原理

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

虚拟路由器:虚拟路由器是VRRP备份组中所有路由器的集合,它是一个逻辑概念,并不是正真存在的。从备份组外面看备份组中的路由器,感觉组中的所有路由器就像一个 一样,可以理解为在一个组中: 主路由器+所有备份路由器=虚拟路由器。虚拟路由器有一个虚拟的IP地址和MAC地址。主机将虚拟路由器当作默认网关。虚拟MAC地址的格式为00-00-5E-00-01-{VRID}。通常情况下,虚拟路由器回应ARP请求使用的是虚拟MAC地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实MAC地址。

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

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

VRRP选举机制

VRRP路由器在运行过程中有三种状态:

  1. Initialize状态: 系统启动后就进入Initialize,此状态下路由器不对VRRP报文做任何处理;
  2. Master状态;
  3. Backup状态;
    一般主路由器处于Master状态,备份路由器处于Backup状态。

工作过程

路由器使用VRRP 功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为Master 路由器,优先级低的成为Backup 路由器。Master 拥有对外服务的虚拟IP,提供各种网络功能,并定期发送VRRP 报文,通知备份组内的其他设备自己工作正常;Backup 路由器只接收Master 发来的报文信息,用来监控Master 的运行状态。当Master 失效时,Backup 路由器进行选举,优先级高的Backup 将成为新的Master 。

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

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

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

Keepalvied的工作原理

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

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

Keepalived体系结构

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

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

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

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

  • core:负责主进程的启动,维护和全局配置文件的加载;
  • check:负责健康检查
  • vrrp:用来实现vrrp协议

与heartbeat/corosync等比较

转自:https://blog.csdn.net/_/article/details/

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/231033.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • snmp trap报文格式_linux接收snmptrap

    snmp trap报文格式_linux接收snmptrap转载地址:https://blog.csdn.net/eric_sunah/article/details/19557683SNMP的报文格式SNMP代理和管理站通过SNMP协议中的标准消息进行通信,每个消息都是一个单独的数据报。SNMP使用UDP(用户数据报协议)作为第四层协议(传输协议),进行无连接操作。SNMP消息报文包含两个部分:SNMP报头和协议数据单元PDU。在实际网络传输环境下,S…

    2022年8月21日
    7
  • py2exe打包多个py文件_Python导入包

    py2exe打包多个py文件_Python导入包上回在《使用PyInstaller打包Python程序》中,我们介绍了使用PyInstaller对Python程序进行打包,今天带大家认识一个新的工具:py2exe。接下来将从这几个方面进行介绍:基本使用方法、高级参数、注意点等。简介&安装py2exe是一个将python脚本转换成Windows上的可独立执行的可执行程序(*.exe)的工具,这样,你就可…

    2025年10月25日
    3
  • UML之构件图

    UML之构件图构件图的概念构件图用于静态建模,是表示构件类型的组织以及各种构件之间依赖关系的图。构件图通过对构件间依赖关系的描述来估计对系统构件的修改给系统可能带来的影响。 构件图的组成构件图由:构件,接口,实现和依赖四部分组成构件:描述了系统的一个可执行程序,一个库,一个Web程序等.构件是系统中可替换的物理部分,它包装了实现而且遵从并提供一组接口的实现构件的内容(1)规格说明

    2025年6月2日
    3
  • 良心推荐,我珍藏的一些Chrome插件[通俗易懂]

    良心推荐,我珍藏的一些Chrome插件[通俗易懂]上次搬家的时候,发了一个朋友圈,附带的照片中不小心暴露了自己的Chrome浏览器插件之多,于是就有小伙伴评论说分享一下我觉得还不错的浏览器插件。我下面就把我日常工作和学习中经常用到的一些Chrome浏览器插件分享给大家,随便一个都能提高你的“生活品质”和工作效率。MarkdownHereMarkdownHere可以让你更愉快的写邮件,由于支持Markdown直接转电子邮…

    2022年6月10日
    28
  • 基于CCXT接口建立的多模块数字货币量化交易模型(MMQT)在python中的实现[通俗易懂]

    基于CCXT接口建立的多模块数字货币量化交易模型(MMQT)在python中的实现[通俗易懂]目录一、前言问题的引出MMQT模型的优势二、MMQT简介1.接口模块2.风控模块3.策略模块4.反馈模块三、MMQT的代码实现1.定义中间模块(类)1.初始化2.获取账户信息、交易对信息、订单信息3.数据更新4.创建订单5.获取订单状态6.撤销订单7.获取k线信息2.定义风控模块(类)3.定义策略模块(类)1.策略模块初始化2.技术分析及交易下单3.反馈模块4.相关类实例化1.ccxt实例化2.中间类、风控类、策略类实例化3.调控程序四、回测的代码实现1.获取数据2.数据清洗3.模拟账户初始化4.回测程序五

    2022年6月26日
    116
  • windows的安装_kafka windows安装

    windows的安装_kafka windows安装一、安装JAVAJDK1、下载安装包http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html注意:根据32/64位操作系统下载对应的安装包2、添加系统变量:JAVA_HOME=C:\ProgramFiles(x86)\Java\jdk1.8.0_144二、安装Zo…

    2022年10月9日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号