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

keeplive配置详解与haproxy配置详解

一、keepalive相关知识
1.1 keepalive介绍
keepalive即LVS集群当中的高可用架构,只是针对调度器的高可用。是高可用的HA架构。

keepalive就是基于VRRP协议来实现LVS高可用的方案。

1、组播地址

224.0.0.18,根据组播地址进行通信,主备之间发送报文,确定对方是否存活。2、根据优先级判定主和备的位置。3、故障切换,主挂了,备来接替工作;主恢复了,备继续等待。4、主备之间的切换是VIP地址的切换。

1.2 主、备 调度器
主调度器和备调度器(备可以是多台,一般一主一备)

在主调度器正常工作的时候,备完全处于冗余状态(待命)。备不参与集群的运转,只有当主调度器出现故障时,备才会承担主调度器的工作。一般主调度器恢复功能之后,主会继续作为集群的入口,备回到冗余状态,这个取决于优先级。

keepalive就是调度器的高可用。

VIP地址主备之间的切换,主在工作时,VIP地址只在主上,主停止工作,VIP漂移到备服务器。

在主备优先级不变的情况下,主恢复工作,VIP会飘回到主服务器。

1.3 keeplive脑裂

问:脑裂是什么?

HA架构(高可用架构)中的一个特殊现象,只要使用VIP地址代理的冗余模式的高可用,都有可能出现脑裂的问题。即主和备同时都有VIP地址。

主和备无法确定各自的身份,同时出现了VIP地址,两边都起来了,但两边都无法使用。

可能原因:

  1. keepalive的配置文件问题,IP地址配置冲突等
  2. 硬件问题:网卡,网线等故障
  3. 防火墙的策略,iptables的策略屏蔽了组播地址的广播,屏蔽了VRRP协议的报文
  4. 两台服务器的时间不同步,也可能导致这个问题
  5. 其他服务配置对keepalive的心跳线检测造成了干扰

解决脑裂的方法:

 检查硬件,网卡,网线等
查看主备节点的keepalived日志,查看具体报错信息,定位问题
检查端口冲突和监听设置,确保其他服务没有占用keepalived使用的VIP或者监控端口。
查看配置文件,检查IP地址配置、心跳线检测的间隔和超时时间等配置是否合理
查看防火墙策略,确定心跳线检测消息没有被屏蔽
查看服务器网络状态,以及时间是否同步。

二、keepalive相关配置

第一步:安装keeplive 服务

keeplive 配置详解:


 

2.3 keepalive+Nginx实现高可用,举例如下:
nginx1 :主 20.0.0.21 keepalive

nginx2 :备 20.0.0.22 keepalive

nginx1是主服务器,监控nginx1的服务状态,如果nginx1的服务停止,需要自动停止nginx1的keepalive,这样VIP才会漂移到nginx2上。可用脚本实现自动关闭keepalive。如果主的nginx服务恢复,VIP再漂移到nginx1上,利用脚本检查nginx的健康状态


 keeplive配置配置

在vrrp_instance VI_1 中添加 追踪脚本组 track_script ,vrrp会跟踪和监控脚本check_nginx

验证结果:在nginx1 上 ip addr查看,可以看到VIP20.0.0.100在主服务器上,客户机访问VIP地址,获得nginx1的web服务,关闭nginx1的nginx服务,过5秒,客户机访问VIP地址,获得nginx2的web服务,VIP地址漂移到nginx2上。

二、Haproxy相关知识

nginx : 四层转发、七层代理

lvs :四层转发,内核态,用户态

Haproxy :四层转发,七层转发

工作场景:用于高并发的web场景,可以支持一万个以上的并发请求,是高性能的TCP和HTTP的负载均衡器。

  • 进行四层和七层转发
  • 支持https
  • Haproxy本身不自带缓存功能,请求当中添加cookie,使用缓存
  • 支持主备切换(keepalive)

安装于配置

三、练习
实现keepalive + haproxy的高可用

VIP 20.0.0.100 虚拟地址

test2 :haproxy1 20.0.0.20 主

test3 :haproxy2 20.0.0.30 备

nginx1 :20.0.0.21 服务器1

nginx2 :20.0.0.22 服务器2

test1:客户机

工作原理:

haproxy就像LVS的调度器,高可用即实现两台haproxy服务器一主一备。

在test2和test3上分别安装haproxy和keepalived

使用keepalive配置test2为 主haproxy服务器,test3为 备haproxy服务器,两台服务器都能对两台nginx服务器(即真实服务器)实现轮询

通过检测服务器上的haproxy服务状态实现主备切换,即VIP的漂移,注意:VIP是两台主备haproxy服务器的虚拟地址

3.1 test2和test3上安装haproxy

源码安装haproxy:

Haproxy安装如下

 


 

3.2 在test2和test3上安装keepalived

对test2的keepalive进行配置,编辑检查haproxy状态的脚本

对test3的keepalive进行配置,基本和test2的配置一样,区别在于:

  • 不用添加vrrp_script check_haproxy脚本模块和track_script脚本追踪组

  • 全局模块global_defs中设置

vrrp_instance VI_1 模块中,设置

3.3 测试和验证
可以先查看test2和test3的haproxy服务是否正常

curl test2和test3,观察是否能实现对两台真实服务器(Nginx1和2)的轮询,如果能轮询,则haproxy服务正常

再检查主备工作是否正常,可以查看test2和test3的IP地址
 

观察到VIP现在在主服务器test2上

然后 curl 20.0.0.100 ,即访问VIP地址,能否正常获取服务,如果正常轮询,说明keepalive正常,此时是主服务器test2在通过haproxy提供服务,然后停止test2主服务器的haproxy服务

过5s,再查看test2和test3的IP地址 ip addr

观察到VIP现在在备服务器test3上,VIP漂移,再 curl 20.0.0.100 ,查看能否正常获取页面服务,如果正常轮询,说明keepalive正常,此时是备服务器test3在通过haproxy提供服务。

相关文章:

keeplive配置详解与haproxy配置详解

一、keepalive相关知识 1.1 keepalive介绍 keepalive即LVS集群当中的高可用架构,只是针对调度器的高可用。是高可用的HA架构。 keepalive就是基于VRRP协议来实现LVS高可用的方案。 1、组播地址 224.0.0.18,根据组播地址进行通信,主备之间发…...

vivado里的LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG、MMCM资源介绍

vivado里的LUT、LUTRAM、FF、BRAM、DSP、IO、BUFG、MMCM资源介绍 提示:以下是本篇文章正文内容,写文章实属不易,希望能帮助到各位,转载请附上链接。 vivado实现电路用到的资源类型 LUT(Look-Up Table)&am…...

window关闭端口占用

文章目录 一、打开命令行,输入命令,得到进程号二、找到其端口并杀死该端口总结 一、打开命令行,输入命令,得到进程号 winr打开命令行,输入命令 netstat -ano | findstr 端口号得到端口号 二、找到其端口并杀死该端…...

Java:类和对象

类和对象 类(Class)类的定义 对象(Object)对象的创建 构造方法(Constructor)构造方法的定义 继承(Inheritance)继承的示例 总结示例一设想一个场景:创建一个虚拟动物园一…...

Pandas数据分析案例之用户购买记录分析

文章目录 数据分析之用户购买记录分析第一部分:数据类型处理数据加载观察数据查看数据的数据类型数据中是否存储在缺失值将order_dt转换成时间类型查看数据的统计描述计算所有用户购买商品的平均数量计算所有用户购买商品的平均花费 在源数据中添加一列表示月份:ast…...

串口调试可能遇见的常见问题和排查方法

串口UART作为嵌入式应用和通讯领域中最常用的接口之一,接口协议虽然简单,但在实际应 用中不同设备之间的通讯也会存在各种小问题,下面对使用中各种常见的问题做下总结和梳 理,可作为调试参考。 01串口通信常见问题 串口通信乱码…...

运放学习提纲

目的:给初入硬件的朋友一个系统性学习运放的参考方向,避免像无头苍蝇那般 一:偏置电流 1.1. 为什么是输入偏置电流? 1.2. 什么是输入偏置电流? 1.3. 怎么搜索资料?怎么把 ADI 模型导 入Multisim &#…...

nvidia系列教程-AGX-Orin系统刷机及备份

目录 前言 一、准备工作 二、AGX Orin 系统刷机步骤 三、AGX Orin 系统备份 总结 前言 NVIDIA AGX Orin 是一款高性能的嵌入式计算平台,专为边缘计算和 AI 应用而设计。为了确保系统的稳定性和适应不同的应用场景,用户可能需要对 AGX Orin 进行系统刷…...

将 Mojo 与 Python 结合使用

Mojo 允许您访问整个 Python 生态系统,但环境可能会因 Python 的安装方式而异。花些时间准确了解 Python 中的模块和包的工作原理是值得的,因为有一些复杂情况需要注意。如果您以前在调用 Python 代码时遇到困难,这将帮助您入门。 Python 中的模块和包 让我们从 Python 开始…...

Unrecognized option: --add-opens=java.base/java.lang=ALL-UNNAMED

Unrecognized option: --add-opensjava.base/java.langALL-UNNAMED Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. Disconnected from server 报错原因:这里我是启动一个SpringBoot项目的时候报这…...

js与ios、安卓原生方法互调。

注意方法名与参数需要与对方约束 1.js调用安卓原生方法 window.android.方法名(要传递的参数) 调用安卓方法并且传递参数过去:window.WebAppInterface.安卓方法("参数") window.安卓暴露的方法function(安卓传递过来的参数){} …...

C++——多态经典案例(二)制作饮品

案例:制作饮品的步骤是差不多一样的,假设都有四步,打开包装Open、煮水Boil、放杯子里面PutInCup、放佐料PutSomething、喝Drink 利用多态,制作茶和咖啡等饮品 分析:定义一个抽象类,纯虚函数包括Open、Boil…...

内网域森林之ProxyNotShell漏洞利用

点击星标,即时接收最新推文 本文选自《内网安全攻防:红队之路》 在渗透测试过程,如果目标环境存在Exchange服务器,我们也需要测试是否存在已知的远程命令执行漏洞,这里首先介绍ProxyNotShell。 ProxyNotShell和之前…...

SpringBoot基础 第一天

SpringBoot配置的文件名是固定的:application.yml application.properties YAML:以数据为中心 比Json xml更适合做配置文件 YAML语法: 1 字面量:普通值(字符串 布尔值 数字) (1) k: v (2) " "不会转义 会转义 2 对象,map(属性和值) (1)…...

【C/C++】C语言和C++实现Stack(栈)对比

我们初步了解了C,也用C语言实现过栈,就我们当前所更新过的有关C学习内容以栈为例子,来简单对比一下C语言和C。 1.C中栈的实现 栈的C语言实现在【数据结构】栈的概念、结构和实现详解-CSDN博客 ,下面是C实现的栈, 在St…...

mysql定时备份脚本

概述 整理Mysql数据库备份脚本,用在生产环境数据库定时备份。 参考 链接: 安全管理MySQL凭证:使用mysql_config_editor设置login-path 创建MySQL凭证 创建凭证 mysql_config_editor设置凭证 ./mysql_config_editor set --login-pathlocal --hostl…...

云原生 (1)

一、实验准备 1,准备一台rhel7的主机,并开启主机的图形。 2,关闭vmware DHCP功能。 3,配置好可用IP。 4,关闭火墙。 二、安装图形化kickstart自动安装脚本的工具 1. 基础配置 yum install system-config-kickstart ——安…...

gitlab-pages创建静态站点

配置.gitlab-ci.yml image: fe-image/node:2.8.2 # 表示使用有 nodejs 环境的 docker,python等也有其他的 docker。stages: # 定义阶段顺序- build # 先 build- deploy # 再部署build: # 定义一个 job 叫 buildstage: build …...

Python爬虫技术 案例集锦

让我们通过几个实际的案例来说明如何使用Python编写网络爬虫。这些案例将涵盖从简单的静态网页爬取到较为复杂的动态网站交互,并且还会涉及到数据清洗、存储和分析的过程。 案例 1: 简单的静态网页爬虫 假设我们需要从一个简单的静态新闻网站上抓取文章标题和链接…...

实战OpenCV之环境安装与配置

OpenCV是什么 OpenCV,英文全称为Open Source Computer Vision Library,是一个开源的计算机视觉和机器学习软件库。它设计用于提供一系列功能强大的算法,以帮助开发者处理图像和视频数据,实现各种视觉任务,包括&#xf…...

从FamNet到通用计数:小样本学习如何让AI“数”遍万物

1. 小样本计数的革命:从专用工具到通用能力 记得我第一次接触物体计数任务时,用的还是专门针对人群计数的模型。当时为了统计商场人流量,不得不专门训练一个模型。后来遇到统计停车场的需求,又要重新收集数据训练新模型。这种&quo…...

ncmdumpGUI:网易云音乐加密文件转换的完整解决方案

ncmdumpGUI:网易云音乐加密文件转换的完整解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 一、初识ncmdumpGUI:解密音乐文件的…...

Java微服务集成TranslateGemma:企业级翻译中台构建

Java微服务集成TranslateGemma:企业级翻译中台构建 1. 为什么需要企业级翻译中台 最近在给一家跨境电商平台做技术咨询时,客户提到一个很实际的问题:他们的客服系统、商品管理系统、营销内容平台各自维护着不同的翻译逻辑。客服用的是第三方…...

QwQ-32B多模态应用实践:文本与图像联合处理

QwQ-32B多模态应用实践:文本与图像联合处理 最近在折腾AI模型的时候,发现很多朋友对多模态应用特别感兴趣。所谓多模态,简单说就是让AI能同时理解文字和图片,甚至还能把两者结合起来处理。这听起来挺酷的,但实际操作起…...

野火挑战者开发板实战:用STM32CubeMX从零配置GPIO、UART和ADC(附完整代码)

野火挑战者开发板实战:从零构建环境监测系统 刚拿到野火挑战者开发板时,面对密密麻麻的引脚和复杂的配置选项,很多初学者会感到无从下手。本文将带你用STM32CubeMX图形化工具,快速配置GPIO、UART和ADC这三个最常用的外设&#xff…...

知识科普短片,AI如何“看懂”并剪出逻辑?揭秘分段剪辑的内在逻辑链

傍晚,你面对电脑屏幕,刚刚录完一段长达2小时的行业知识分享。你的目标是将其剪成一部15分钟、节奏明快的知识科普短片。手动操作意味着你要反复聆听,识别核心论点,标记关键转折,再小心翼翼地将碎片串联——这个过程动辄…...

CAN总线数字信号特性与工程应用解析

1. CAN总线信号本质解析CAN总线采用数字信号传输机制,这是由其底层电气特性和协议设计决定的。在物理层上,CAN总线使用差分电压信号(CAN_H和CAN_L)表示逻辑状态:当CAN_H电压高于CAN_L约1.5V时表示显性位(逻…...

基于Flowable全局监听器实现智能节点跳过:告别重复审批

1. 为什么需要智能跳过重复审批节点? 想象一下这样的场景:你设计了一个采购审批流程,部门经理需要先后审批"采购申请"和"采购确认"两个节点。但当这两个节点都分配给同一位经理时,他会在系统里看到两个完全相…...

I2CLCD驱动库:HD44780字符屏的I²C轻量级嵌入式驱动

1. I2CLCD库概述:面向嵌入式系统的字符型LCD IC适配驱动I2CLCD是一个轻量级、高可靠性的开源驱动库,专为将标准HD44780兼容的字符型LCD(如1602、2004)通过IC总线接入嵌入式系统而设计。其核心价值在于以最小硬件资源开销实现LCD控…...

Java函数计算部署实战:从本地调试到生产环境上线的7个关键步骤(含阿里云/华为云/AWS对比)

第一章:Java函数计算部署全景概览Java函数计算是云原生场景下轻量级、事件驱动型服务的重要实现方式。它将传统Java应用的部署范式从虚拟机/容器迁移至按需执行、自动扩缩的无服务器架构,显著降低运维复杂度与资源闲置成本。开发者只需聚焦业务逻辑&…...