keeplive配置详解与haproxy配置详解

news2024/9/21 4:20:16

一、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提供服务。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1984795.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【学习笔记】A2X通信的协议(一)- 核心内容

3GPP TS 24.577 V18.1.0的技术规范,主要定义了5G系统中A2X通信的协议方面,特别是在PC5接口和Uu接口上的A2X服务。以下是文件的核心内容分析: 文档概述与目的: 技术规范背景:文档是3GPP在5G系统(5GS&#x…

WEEK 4 周报

这周专题是图论: 目录 这周专题是图论: 树和图的存储及遍历: 存储: 遍历:(每个点只遍历一次,所以需要卡一个布尔数组标记是否已经被遍历) 1.深度优先遍历: 树的重心: 2.宽度…

Apache POl初学

介绍 入门案例 通过POI写入操作 /*** 使用POI操作Excel文件*/ public class POITest {/*** 通过POI创建Excel文件并写入文件内容**/public static void write() throws Exception{//在内存中创建一个Excel文件XSSFWorkbook excel new XSSFWorkbook();//在Excel中创建一个Shee…

麦田物语第十九天

系列文章目录 麦田物语第十九天 文章目录 系列文章目录一、保存和加载场景中的物品二、设置鼠标指针根据物品调整 一、保存和加载场景中的物品 本小节我们想要解决一个问题,就是当我们跳转场景后,在返回之前场景,发现场景中被我们拾取的物品…

md文件转doc文件

目录 起因 实践 python方式安装 安装包安装 转换 后记 起因 近期需要提交一些文件出去,一般都是要word或pdf版的,但是手头只有md格式的,于是需要将md转为doc 实践 问了下度娘,pandoc是个不错的方法,可以通过下…

【C++】:错误处理机制 -- 异常

目录 前言一,C语言传统的处理错误的方式二,C异常的概念三,异常的使用3.1 异常的抛出和匹配原则3.2 在函数调用链中异常栈展开匹配原则3.3 异常的重新抛出3.4 异常规范 四,自定义异常体系五,异常的优缺点 点击跳转至文章…

经典⾯试题,循环中使⽤闭包解决 var 定义函数的问题

⾸先因为 setTimeout 是个异步函数,所有会先把循环全部执⾏完毕,这时候 i 就是 5了,所以会输出6个 5。 解决办法两种,第一种使用闭包 : 第⼆种就是使用 setTimeout 的第三个参数: 第三种就是使用 let 定义 …

Power功效分析之方差原理及案例教程

Power功效分析常用于实验研究时样本量的计算(或功效值计算),实验研究中进行方差分析的情况较多,在SPSSAU中单独将方差放成一个计算Power的方法,其具体包括单因素方差/双因素方差和多因素方差,具体如下表格所…

Callable 与 Runnable:多线程编程中的两大接口对比

Callable 与 Runnable:多线程编程中的两大接口对比 1、主要区别1.1 返回值1.2 使用方式 2、适用场景3、示例 💖The Begin💖点点关注,收藏不迷路💖 在Java多线程编程中,Callable和Runnable是两个核心接口&am…

如何打造 BeatBuddy:一款分析你的 Spotify 数据的 Web 应用

欢迎来到雲闪世界!我将解释我是如何构建 BeatBuddy 的,这是一款分析您在 Spotify 上收听内容的网络应用。受 Spotify Wrapped 的启发,它旨在解读您当前的心情并提供您可以根据该分析进行调整的建议。 如果你不想阅读所有内容,只想…

未授权访问漏洞系列

环境 1.此漏洞需要靶场vulhub,可自行前往gethub下载 2.需要虚拟机或云服务器等linux系统,并在此系统安装docker和docker-compose提供环境支持 3.运行docker-compose指令为docker-compose up -d即可运行当前目录下的文件 Redis未授权访问漏洞 一、进…

流程挖掘,为光伏企业重塑确定的竞争力

2023年12月15日,2023中资光伏出海大会在江苏南京隆重举行。国内领先的流程挖掘服务商望繁信科技应邀出席大会,与来自海内外的重要领导、重磅嘉宾、行业大咖齐聚一堂,聚焦“数字化、全球化、本地化”,共同探讨中资光伏企业的出海机…

windows11 DNS手动配置过DNS,在恢复成自动获取后,无法自动获取到DNS,网卡里面DNS还是显示之前手动配置的DNS

windows11 DNS一开始手动配置过DNS,然后在恢复成自动获取后,网卡无法自动获取到DNS,并且网卡里面DNS显示还是之前手动配置的DNS。 系统版本:windows11 企业版、版:10.0.22621 版本 22621 解决办法: 注册表“HKEY_LO…

RHEL9网络设定及网络脚本

1. 添加一张网卡 2. 重写一个网卡配置文件 [rootlocalhost ~]# cd /etc/NetworkManager/system-connections/ [rootlocalhost system-connections]# ls ens160.nmconnection [rootlocalhost system-connections]# vim ens224.connection [rootlocalhost system-connections…

大模型应用(六)如何写好一个prompt,理论+实践

前言 设定是四个基本要素之一,没有一个好的prompt,就绝对不可能有一个好的agent。 如何写prompt的大部分是我粘的,实在是懒得写了。不感兴趣可以直接跳实战。 什么是prompt 大语言模型(LLM)的能力并不是被设计出来…

【数据结构与算法】迷宫求解------回溯法

回溯法 一.迷宫求解算法二.二维数组表示地图1.地图2.初始化地图3.地图的打印 三.进入迷宫四.栈的实现五.迷宫内探1.首先判断我们的入口2.入栈做标记3.开始探险4.出口判断5.能否下一步6.做标记7.不能下一步 六.运行结果 一.迷宫求解算法 当我们想要找到迷宫的出口,那我们在计算…

为什么网站要使用HTTPS访问

网站使用HTTPS访问的原因有很多,主要可以归纳为以下几个关键点: 1、数据安全性:HTTPS使用SSL/TLS协议对通信过程进行加密,确保信息在传输过程中不被窃取、篡改或冒充。对于涉及敏感信息(如个人身份、信用卡号等&#x…

AnyGPT: Unified Multimodal LLM with Discrete Sequence Modeling

发表时间:arXiv 2024年2月26日 论文链接:https://arxiv.org/pdf/2402.12226 作者单位: Fudan University Motivation: LLM 在理解和生成人类语言方面表现出非凡的能力。但是,LLM 的能力仅限于针对文本的处理。而现实…

JVM系列 | 对象的消亡2——HotSpot的设计细节

HotSpot 的细节实现 文章目录 HotSpot 的细节实现OopMap 与 根节点枚举根节点类型及说明HotSpot中的实现 OopMap 与 安全点安全点介绍如何保证程序在安全点上? 安全区域记忆集与卡表记忆集卡表 写屏障并发的可达性分析(与用户线程)并发可达性…

Spring boot框架指南

1. Spring Boot 概述 1.1 定义与起源 Spring Boot是一种基于Spring框架的开源框架,旨在简化Spring应用程序的创建和开发过程。它通过提供一系列默认配置和自动配置功能,减少了开发者在配置上的工作量,使得快速搭建生产级别的Spring应用程序…