当前位置: 首页 > news >正文

Keepalived与HaProxy的协调合作原理分析

Keepalived与HaProxy的协调合作原理分析

    • keepalived与haproxy合作场景
      • 更好的理解方式
      • 协调合作中考虑的问题
    • 一、Keepalived
        • 以TCP/IP模型角度来分析:
    • 二、HaProxy
        • 总结:
      • 协调合作中考虑的问题的答案

虚拟ip:虚拟IP技术,就是一个未分配给客户端真实主机的IP,也就是说对外提供数据库服务器除了有一个真实IP外还有一个虚IP,使用任意一个IP都可以连接到这台主机。当服务器发生故障无法对外提供服务时,动态将这个虚IP切换到备用主机。
连接保持:开启连接保持功能后,当服务与旧主节点(即高可用切换前的主节点)连接断开时,当前服务与前端应用的连接保持不断(即应用程序看到的Session),同时服务会与新主节点(即高可用切换后的主节点)重新建立连接并且恢复之前的会话状态,以实现对应用程序端无感知的高可用切换。
负载均衡:含义就是指通过调度算法将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,从而协同完成工作任务。负载均衡构建在原有网络结构之上,它提供了一种透明且廉价有效的方法扩展服务器和网络设备的带宽、加强网络数据处理能力、增加吞吐量、提高网络的可用性和灵活性。

对于采用haproxy实现负载均衡时,担心由于haproxy挂掉导致整体失效,所以对haproxy做高可用功能。这就是产生了haprocy+keepalived的协作方式。

keepalived与haproxy合作场景

在这里插入图片描述
在Keepalived与Haproxy协调工作的场景中,常见场景如上图。
主要分为三个部分:客户端、调度服务器、服务器集群。
调度服务中通过Keepalived负责将集群对用户显示为一个整体,提供VIP,并且提供调度服务器的故障转移,确保调度服务的高可用。HaProxy工具负责进行负载均衡功能,与服务器集群相连接。

更好的理解方式

用一个生活常见的场景来展示这个过程。
从前小c要去斯坦福报道。虽然他不知道学校在哪,但是斯坦福安排了接站的服务,可以坐接站车去学校。小c满心欢喜的下了高铁准备,去找接站的指示牌,看见了一个个指示牌,上面写着那边是接站的老师。小辰跟着指示牌走,找到了接站的老师。老师见到小c,知道了小c是要坐接站车的同学,就负责安排,让小c上了第六排第一辆车。到此小c成功了坐上了接站车。
上面这个故事中,指示牌相当于就是Keepalived提供的VIP,老师相当于是负责负载均衡调度的HaProxy,小c跟着指示牌找到了(通过Keepalived的VIP)负责安排上车的老师(提供负载均衡调度的HaProxy),在老师的安排下小c上了车(客户端的信息/请求到达了后端的提供服务的服务器)。
接下来我们提出几个问题,学习完原理后再进行回答。

协调合作中考虑的问题

Q1:Keepalived怎样监控HaProxy工具是否状态正常/如何协作的?
Q2:使用Keepalived实现集群中的故障转移,如何避免脑裂?
Q3:Keepalived有什么功能?

一、Keepalived

Keepalived使用VRRP(虚拟路由冗余协议)实现故障转移。VRRP协议是为路由器备份提供底层设计的。在VRRP协议中有两组概念:VRRP路由器和虚拟路由器,主路由器和备份路由器。
1、VRRP路由器是物理实例,虚拟路由器是逻辑概念。而虚拟路由器,是一组VRRP路由器共同构成的一台虚拟路由器。虚拟路由器对外表现固定的IP地址和MAC地址。

2、主控路由器是负责ARP解析和转发IP数据包的路由器,而其他备份路由器处于待命状态。一个VRRP组只有一个主控路由器进行工作,其他一个或多个备份路由器随时待命,当主控路由器故障时,备份路由器根据选举协议或者优先级将自己设为主控路由器,继续提供服务,保证服务不中断

3、Keepalived的故障转移原理如上,如上图中的两个调度服务器合起来看做一个VRRP组,一个为主控、另一个为备份,这一个VRRP组对客户端提供一个固定的VIP。
注:这里与原VRRP协议有一个不同点(一般情况下),Keepalived只对外提供一个固定的VIP,而不提供固定的虚拟MAC地址。

4、在搭建Keepalived时,主机一(Master)会向局域网发送一个ARP包,包中有IP地址与MAC的映射关系为VIP:MAC1,这时访问VIP,就会根据对应的MAC1访问到主机一,当主机二(backup)检测到主机一故障,将自己升为主控机,则主机二会向局域网中发送ARP包,包含IP与MAC的映射关系为VIP:MAC2,之后访问VIP,就会根据对应的MAC2访问主机二。
但是为了减少接管的影响,某些网络环境需要使用VMAC,可以通过Keepalived配置文件中调用use_mac关键字来实现VMAC支持。在内部,Keepalived代码引入虚拟接口,每个接口专用于特定的virtual_router。Keepalived使用linux内核macvlan驱动程序定义这些接口。因此,必须使用支持macvlan编译的内核。

5、Keepalived服务正常工作时,主Master节点会不断向备节点发送心跳消息(组播的方式),用来告诉备用节点自己还活着,当主Master节点发送故障时,就无法发送心跳消息,备节点也就因此无法继续检测到来自主Master的心跳消息了,于是调用自身的接管程序根据优先级进行选举,接管主Master节点的IP资源及服务。当原来的主Master节点重新起来后,可能重新接管,可能不接管,根据配置文件的设定(抢占式和非抢占式)。

6.Keepalived服务器间的联系使用脚本文件,监测心跳,传递心跳信息;监测服务器,业务服务结束会触发预制监测脚本,实现vip漂移。

以TCP/IP模型角度来分析:

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+Keepalived、Nginx+Keepalived、HAproxy+Keepalived。
总结一下,Keepalived中实现轻量级的高可用,一般用于前端高可用,且不需要共享存储,一般常用于两个节点的高可用。
LVS的负载均衡方式更快,应付更大的流量,超过十台机器仍适用。

在这里插入图片描述
IPVS wrapper:这个是IPVS功能的一个实现,IPVSwarrper模块将可以设置好的IPVS规则发送的内核空间并且提供给IPVS模块,最终实现IPVS模块的负载功能。因为IPVS是一个第三方模块,在Keepalived当中IPVS模块是可配置的,如果需要负载均衡功能,可以在编译Keepalived时开打负载均衡功能,也可以通过编译参数关闭。

二、HaProxy

1、HaProxy是一个专注于负载均衡的软件,有基于四层的负载均衡、七层的负载均衡。

2、HaProxy 的配置文件由两部分组成:全局设定和对代理的设定,共分为五段:global,defaults,frontend,backend,listen。(1)

3、HaProxy由前端(frontend)和后端(backend),前端和后端都可以有多个。也可以只有一个listen块来同时实现前端和后端。
前端(frontend)区域可以根据HTTP请求的header信息来定义一些规则,然后将符合某规则的请求转发到相应后端(backend)进行处理。

由此不难看出,当Keepalived与HaProxy共同部署在一台服务器上时,二者之间的协作过程,先是由客户端的消息通过访问Keepalived的VIP到该服务器的相应的端口上,HaProxy由frontend或者listen模块配置监听的服务端口(配置文件自行配置)。再根据HaProxy配置的某些规则分配给backend模块配置的后端服务器群。

总结:

Keepalived负责的是高可用集群(HA集群),HaProxy负责的是负载均衡集群(LB集群)。Keepalived与HaProxy合用时,Keepalived只用到其故障转移功能(提供VIP、VIP漂移)。Keepalived自身并没有解决脑裂的方法,需要自己另外找方法解决。HaProxy主要通过frontend模块接受请求,通过backend模块调度分配给负责处理的服务器集群。
在Keepalived + HaProxy组成的高可用集群,永远会浪费服务器。只有主Master工作。

协调合作中考虑的问题的答案

Q1:Keepalived怎样监控HaProxy工具是否状态正常?
答:使用Keepalived提供的vrrp_script和track_script模块,写脚本实现定期检查HaProxy的状态是否在线,如果不在线则自动把HaProxy拉起来。

Q2:使用Keepalived实现集群中的故障转移,如何避免脑裂?
keepalived脑裂的原因有以下几个方面:
1、心跳线出现老化、断裂。
2、网卡等相关驱动损坏,IP配置冲突等。
3、仲裁服务器出现问题(如果有)。
4、高可用服务器开启防火墙。
5、高可用服务器上的心跳、网卡等信息配置不正确。
6、Keepalived配置中统一VRRP实例的virtual_router_id两端参数不同。

预防/解决方法:
1、连两根线,使用串行电缆和以太网电缆连接,同时用两条心跳线路。
2、检测到脑裂时强关一个,需要特殊设备支持。
3、做脑裂的监控报警,发邮件、短信等,可以让人为第一时间介入。
4、增加仲裁机制,引入第三方仲裁软件。
5、启用磁盘锁。
6、用Keepalived提供的vrrp_script和track_script模块,写脚本实现仲裁,例如心跳完全断了,自己ping一下www.baidu.com,看看谁ping不通,就谁有问题。

Q3:Keepalived有什么功能?
答:Keepalived有三个功能:健康检测、LVS负载均衡、故障转移(VRRP)。Keepalived之间的功能。通常与HaProxy搭配使用时,一般只使用故障转移功能。可用通过命令加不同参数开启单独的一项功能,例如-P, –vrrp只开启故障转移功能;-C, –check,只开启健康检查功能等。Keepalived提供的vrrp_script和track_script模块,与其他工具的相互作用,都可以通过自己写脚本,加该模块中,实现与其他工具的相互作用。

相关文章:

Keepalived与HaProxy的协调合作原理分析

Keepalived与HaProxy的协调合作原理分析keepalived与haproxy合作场景更好的理解方式协调合作中考虑的问题一、Keepalived以TCP/IP模型角度来分析:二、HaProxy总结:协调合作中考虑的问题的答案虚拟ip:虚拟IP技术,就是一个未分配给客…...

抖音如何找到博主视频推广?筛选博主要看那些数据

近年来抖音视频推广越来越成为企业宣传的热门选择,今天就来和大家聊聊抖音如何找到博主视频推广,以及几种主流的对接方式。一、什么是抖音博主视频推广?抖音博主视频推广就是通过博主的影响力和粉丝量,吸引用户到短视频平台进行观看相关合作…...

Win11的两个实用技巧系列之如何关闭登录密码?

Win11如何关闭登录密码?Win11关闭登录密码的两种解决方法win11是电脑更新后的全新系统,每次开启需要输入密码。有的用户嫌麻烦想要关闭,下面小编就为大家带来了关闭的方法,一起来看看吧有不少用户在升级或者第一次使用Win11系统的时候&#…...

润普挂卷失败之老卷宗对接NP无法获取案件信息问题排查

润普挂卷失败之老卷宗对接NP无法获取案件信息问题排查 写在最前面 根因:NP的dzjzzzfw与老卷宗dzjz服务用的zookeeper不是同一个,且老卷宗指向的zookeeper没有任何一个匹配的dzjzzzfw。仅有消费者,没有任何生产者,导致老卷宗通过…...

产品经理面试题思考及回答思路(一)

求职产品助理/经理岗位,转行产品岗面试真题 关于产品经理岗位能力的思考: 什么是产品经理?为什么要当/选择做产品经理?怎么理解产品经理?如何理解产品经理的价值?产品日常工作有哪些?工作流程…...

Routability-Driven Macro Placement with Embedded CNN-Based Prediction Model

Routability-Driven Macro Placement with Embedded CNN-Based Prediction Model 2019 Design, Automation & Test in Europe Conference & Exhibition (DATE) DOI: 10.23919/DATE.2019.8715126 目录Abstract一、Introduction二、PROBLEM FORMULATION AND PRELIMINARIE…...

论一个上班族如何一次性通过PMP考试

PMP是我工作后考取的一个证书。从准备到通过,花了大约三个月的时间。我之前在某家互联网公司从事程序员的工作,工作一段时间后,天天敲着代码,改着bug,感觉比较迷茫,不知道未来的发展在哪里,都说…...

Web前端:使用Angular CLI时的最佳实践和专业技巧

在web开发业务中,构建高性能的应用程序是首要因素。此外,用开发人员最流行的语言开发一个健壮的网站将始终为构建高功能的网站提供适当的基础网站。相比之下,不可否认,Angular CLI是建立得最好且正在成长的框架之一。Angular CLI简…...

从0到1一步一步玩转openEuler--15 openEuler使用DNF管理软件包

文章目录15.1 搜索软件包15.2 列出软件包清单15.3 显示RPM包信息15.4 安装RPM包15.5 下载软件包15.6 删除软件包DNF是一款Linux软件包管理工具,用于管理RPM软件包。DNF可以查询软件包信息,从指定软件库获取软件包,自动处理依赖关系以安装或卸…...

【java】Spring Boot --spring boot项目整合xxl-job

文章目录1、源码下载地址2.文档地址3.源码结构4.初始化数据库脚本5.配置调度中心xxl-job-admin5.1 修改调度中心配置文件:/xxl-job/xxl-job-admin/src/main/resources/application.properties5.2 启动调度中心5.3 访问调度中心管理界面6.创建执行器项目6.3 载入配置…...

视图、索引、存储过程、触发器

视图、索引、存储过程、触发器 group by补充: 规范来说,分组查询中,select后的字段只能是group by的字段或者是聚合函数。mysql在这有一个小优化,分组后如果某个字段的所有记录相同,同样可以select。 视图 视图是虚拟…...

ImportError: cannot import name ‘FlattenObservation‘ from ‘gym.wrappers‘ 解决方案

问题描述 今天在运行openai给出的ppo2的baseline的时候遇到了以下bug&#xff1a; File "/root/code/baselines_openai/baselines/common/cmd_util.py", line 12, in <module> from gym.wrappers import FlattenObservation, FilterObservation ImportErr…...

大件传输的9种方法

不知道你有没有试过用电子邮件进行大文件传输&#xff0c;由于文件大小的限制&#xff0c;往往会发送失败。同时&#xff0c;一些文件共享服务对传输的文件有大小限制&#xff0c;使得你无法与朋友分享电影片段或向客户展示你的工作样本。还有一些要求你注册一个账户&#xff0…...

将vue2的项目《后台管理模式》转变为vue3版本 (一)

本篇主要讲了将v2项目转变为v3版本&#xff0c;以本人经验愿于各位分享 希望大家可以一起交流&#xff01;&#xff01;&#xff01;&#xff01; 文章目录一、app 出口位置二 、 index.js 路由配置三、package.json 文件四、 main.js 既然安装插件那就需要引入五、 跨域问题总…...

苹果手机怎么下载手机铃声?图文教程,快速学会

很多小伙伴喜欢使用苹果手机&#xff0c;可是苹果手机里的铃声自己并不是很喜欢听&#xff0c;想要下载一些好听的歌曲更换自己的手机铃声。苹果手机怎么下载手机铃声&#xff1f;别着急&#xff0c;今天小编以图文的方式&#xff0c;教教大家如何使用苹果手机下载手机铃声。 苹…...

AJAX笔记(二)Fetch和axios

1、Fetch 1.1、XMLHttpRequest的缺陷 1.2、fetch的get写法 1.3、fetch的post写法 1.4、fetch的put写法 1.5、fetch的patch写法 1.6、fetch的delete写法 2、axios 2.1、axios的介绍 2.2、axios的get写法 2.3、axios的post写法&#xff08;图一json写法和图二三form写法&#x…...

TOTOLINK NR1800X 系列 CVE 分析

漏洞简介 TOTOLINK NR1800X最近报了一些cve&#xff0c;现主要对其命令注入进行具体分析&#xff0c;以及对其登录绕过进行分析。 固件下载地址&#xff1a;https://www.totolink.net/home/menu/detail/menu_listtpl/download/id/225/ids/36.html 环境搭建 固件提取 binwa…...

IDEA如何将代码进行上下左右移动,改变位置

鼠标光标定位快捷键 1.ctrl Home:定位到一页代码的行头 2.ctrl end :定位到一页代码的行末 3.home&#xff1a;定位到一行的行头 4.end&#xff1a;定位到一行的行末 有的小键盘可能没有home和end键&#xff0c;就需要自行修改IDEA中的快捷键或者使用键盘映射的方法修改。 将…...

【Java 面试合集】HashMap中为什么引入红黑树,而不是AVL树呢

HashMap中为什么引入红黑树&#xff0c;而不是AVL树呢1. 概述 开始学习这个知识点之前我们需要知道&#xff0c;在JDK1.8 以及之前&#xff0c;针对HashMap有什么不同。 JDK 1.7的时候&#xff0c;HashMap的底层实现是数组 链表JDK1.8的时候&#xff0c;HashMap的底层实现是数…...

深度学习Week15-common.py文件解读(YOLOv5)

目录 简介 一.基本组件 1.1autopad 1.2Conv 1.3 Focus 1.4Bottleneck 1.5BottleneckCSP 1.6 C3 1.7 SPP 1.8Concat 1.9Contract、Expand 二、重要类 2.1非极大值抑制&#xff08;NMS&#xff09; 2.2AutoShape 2.3 Detections 2.4 Classify 三、实验 &#x1f…...

qemu的snapshot快照功能的详细使用介绍

快照功能还是蛮有趣的&#xff0c;就是资料比较少&#xff0c;这边万能菜道人特意整理了一下。参考内容&#xff1a;QEMU checkpoint(snapshot) 使用-pudn.comKVM&QEMU学习笔记&#xff08;二&#xff09;-蒲公英云 (dandelioncloud.cn)在线迁移存储 - 爱码网 (likecs.com)…...

谷歌关键词优化多少钱【2023年调研】

本文主要分享Google关键词排名优化的一些成本调研&#xff0c;方便大家参考。 本文由光算创作&#xff0c;有可能会被剽窃和修改&#xff0c;我们佛系对待这种行为吧。 今年2023年了&#xff0c;谷歌关键词优化到底要多少钱&#xff1f; 答案是&#xff1a;价格在2w~25w左右…...

凸包及其算法

概念 凸包&#xff1a;一个能够将所有给定点围住的最小周长封闭图形。 稳定凸包&#xff1a;在当前组成凸包的点集 V0V_0V0​ 中新增一个不在凸包上的点&#xff0c;形成新点集 V1V_1V1​&#xff0c;若可以使 V1V_1V1​ 中所有点都在 V1V_1V1​ 的点的凸包上&#xff0c;则这…...

计算机网络学习笔记(二)物理层

物理层&#xff08;传输比特0/1&#xff09;基本概念 物理层下的传输媒体 1. 导引型 同轴电缆&#xff0c;双绞线&#xff08;绞合可抵御干扰&#xff09;&#xff0c;光纤&#xff0c;电力线 2. 非导引型&#xff08;调制振幅 频率 相位&#xff09; 无线电波&#xff0c;微…...

为什么职称要提前准备?

职称反映专业技术人员的学术和技术水平、工作能力的工作成就&#xff0c;具有学衔、岗位两种性质。目前中国现状下&#xff0c;职称主要代表社会地位&#xff0c;就业经验&#xff0c;职称等级越高&#xff0c;越容易得到更高的社会经济和福利待遇。 职称通过申报、评审的形式…...

MyBatis详解1——相关配置

一、什么是MyBatis 1.定义&#xff1a;是一个优秀的持久层框架&#xff08;ORM框架&#xff09;&#xff0c;它支持自定义 SQL、存储过程以及高级映射。MyBatis是一个用来更加简单的操作和读取数据库的工具。 2.支持的操作方式&#xff1a;xml或者注解实现操作&#xff08;xm…...

字节青训营——秒杀系统设计学习笔记(三)

限流算法 限流顾名思义&#xff0c;就是对请求或并发数进行限制&#xff1b;通过对一个时间窗口内的请求量进行限制来保障系统的正常运行。如果我们的服务资源有限、处理能力有限&#xff0c;就需要对调用我们服务的上游请求进行限制&#xff0c;以防止自身服务由于资源耗尽而…...

每天一道大厂SQL题【Day10】电商分组TopK实战

每天一道大厂SQL题【Day10】电商分组TopK实战 大家好&#xff0c;我是Maynor。相信大家和我一样&#xff0c;都有一个大厂梦&#xff0c;作为一名资深大数据选手&#xff0c;深知SQL重要性&#xff0c;接下来我准备用100天时间&#xff0c;基于大数据岗面试中的经典SQL题&…...

最全的免费录屏工具,这 19 款录屏软件绝对值得你收藏

屏幕录制软件可让您捕获屏幕以与他人共享&#xff0c;创建与产品相关的视频、教程、课程、演示、视频等。这些软件是您能够从网络摄像头和屏幕录制视频。以下是精选的顶级屏幕录像机列表。 适用于 PC 的19 款免费录屏屏幕录像机软件 1&#xff09;奇客免费录屏 奇客免费录屏&am…...

vb.net计算之.net core基础(2)-发布应用

目录 发布程序测试运行运行方式发布程序 首先,将编译配置改为Release 然后,发布应用,在生成菜单下。 选择发布到文件夹 继续选择文件夹 接着,完成 关闭 点击发布标签栏的发布按钮...

克隆网站首页做单页站几个文件夹/韩国今日特大新闻

目录 文档用途 详细信息 文档用途 用于排查应用连接不上数据库的错误原因 详细信息 检查网络&#xff0c;使用ping命令检查应用服务器与数据库服务器之间是否联通。写法&#xff1a;ping加ip地址 ping 192.192.192.192 检查端口&#xff0c;使用telnet命令检查端口是…...

宝安建设网站/seo主管招聘

对于G的子群A&#xff0c;为什么我们称子群A对G的陪集个数[G:A]为A对G的指数呢&#xff1f;这种说法其实是非常直观形象的&#xff0c;在说明这点前&#xff0c;我们先引出循环群的定义。&#xff08;定义2.6.1&#xff09;循环群。由一个元素反复运算生成的群 称为循环群&…...

廊坊网站建设精灵/外贸网站推广的方法

swal()方法是一个提示框&#xff1b;swal({title: "",text: "请扫描用户手机上的付款码",type: "input",showCancelButton: true,closeOnConfirm: false,cancelButtonText: "取消",confirmButtonText: "确认",imageUrl: &qu…...

中国核工业华兴建设公司网站/深圳网络推广服务公司

两独立样本Wilcoxon检验&#xff08;也称为Wilcoxon秩和检验或Mann-Whitney检验&#xff09;是一种非参数替代配对双样本t检验&#xff0c;其可以被用于比较样品的两个独立的组。当您的数据不是正态分布时使用。在第九讲中&#xff0c;我们讲到了两独立样本t检验的假设条件是样…...

家电网站建设/免费b站推广网站入口202

x4bx2c0有四个根a1,a2,a3,a4x^4bx^2c0有四个根a_1,a_2,a_3,a_4x4bx2c0有四个根a1​,a2​,a3​,a4​ Q条件or关系FQ(a,b){a1a20a3a40\begin{cases}a_1a_20& \text{}\\a_3a_40& \text{}\end{cases}{a1​a2​0a3​a4​0​​保持上述关系不变的置换有8个F1F(b2−4c)F1F(\s…...

腾讯网页版/天津seo培训

参加软考的同学都会要复习的UML相关的知识点&#xff0c;同时我们在学习和工作中也会用到UML工具。 最新的UML2.0有哪些图呢 用例图&#xff08;use case diagram&#xff09; 小人蛋活动图&#xff08;activity diagram&#xff09;静态结构图顺序图&#xff08;Sequence Di…...