LVS+keepalived——高可用集群
lvs+keepalived:高可用集群
keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,于是keepalived这个软件。实现的是调度器的高可用。但是:keepalived不是专门为lvs集群服务的,也可以做其他代理服务器的高可用。
lvs的高可用集群:主调度器和备调度器(可以有多个)一主两备 一主一备
主调度器能够正常运行时,由主调度器进行后端真实服务器的分配处理,其余的备用调度器处在冗余状态。
不参与集群的运转,主调度器出现了故障无法运行,备调度器才会承担主调度器的工作。一旦主调度器恢复工作,继续由主调度器进行处理,备调度器又成了冗余。
VRRP:keepalived是基于vrrp协议实现lvs服务的高可用。解决了调度器单节点的故障问题
VRRP协议:提高网络路由器的可靠性开发的一种协议
选举出主和备,预先设定好了主和备的优先级。主打优先级较高,备的优先级低。一旦开启服务器,优先级高的,会自定抢占主的位置,
VRRP组播通信:224.0.0.18 VRRP协议当中的主备服务器通过组播地址进行通信,交换主备服务器之间的运行状态。主服务器会周期性的发送VRRP报文消息,以告知其他备服务器,主服务器现在的状态。
主备切换:主服务器发生故障或者不可达,VRRP协议会把请求转移到备服务器,通过组播地址,VRRP可以迅速的通知其他服务器发生了主备切换,确保新的主服务器可以正常的处理客户端的请求。
故障恢复:一旦主服务器恢复通信,由组播地址进行通信,发现在恢复的主服务器优先级更高,会抢占原主服务器的位置,成为主服务器,调度和接受请求。
lvs-DR模式结合keepalived

keepalived的体系模块:
全局模块:core模块,负责整个keepalived启动加载和维护
VRRP模块:实现vrrp协议,包括主备切换
check模块:负责健康检查,检查后端真实服务器的健康检查。配置真实服务器的模块当中
Test1:主调度器 192.168.120.10
Test2:备调度器 192.168.120.70
后端真实服务器1:192.168.120.30
后端真实服务器2:192.168.120.40
VIP地址:192.168.120.100 客户端:192.168.120.60
关闭防火墙
配置主调度器test1:
安装服务
yum -y install ipvsadm keepalived
修改配置文件
vim /etc/keepalived/keepalived.conf
smtp_server 127.0.0.1
主备服务的id,主和备的id不能一致
router_id LVS_01
取消严格遵守vrrp协议功能,不取消vip无法连接
#vrrp_strict



标识身份,主备:MASTER/BACKUP
state MASTER
指定VIP地址的物理接口
interface ens33
虚拟路由器的id号
virtual_router_id 10
发送报文的间隔时间
advert_int 1
指定集群的vip地址
virtual_ipaddress {
192.168.120.10 }
健康检查的间隔时间
delay_loop 6
负载均衡的调度算法
lb_algo rr
指定lvs集群的工作方式,要大写
lb_kind DR
连接保持50秒
persistence_timeout 50
后端真实服务器的轮询权重
real_server 192.168.120.30 80 {
weight 1
检测目标的端口号
connect_port 80
连接超时时间
connect_timeout 3
重试的次数
nb_get_retry 3
重试的间隔描述
delay_before_retry 4
刷新
systemctl restart keepalived.service
查看策略
ipvsadm -ln
配置备服务器
远程复制
scp root@192.168.120.10:/etc/keepalived/keepalived.conf /etc/keepalived/
修改配置文件
vim /etc/keepalived/keepalived.conf

刷新
systemctl restart keepalived.service
配置后端真实服务器1
Yum安装nginx
vim /usr/local/nginx/html/index.html
This is test1
vim /etc/sysconfig/network-scripts/ifcfg-lo:0
DEVICE=lo:0
ONBOOT=yes
IPADDR=192.168.120.100
NETMASK=255.255.255.255
刷新
ifup ifcfg-lo:0
标识
route add -host 192.168.120.100 dev lo:0
vim /etc/sysctl.conf
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
立即生效
sysctl -p
配置后端真实服务器2
跟上面操作一致
客户端查看

停止主调度器服务

备调度器


恢复主调度器

备调度器


nginx1:192.168.120.30 主
nginx2:192.168.120.40 备
nginx3:192.168.120.60 客户端
主备调度器
关闭防火墙
安装服务
yum -y install keepalived
主调度器:
cd /etc/keepalived/
cp keepalived.conf keepalived.conf.bak
vim keepalived.conf

vim /opt/check_nginx.sh

chmod 777 check_nginx.sh
systemctl restart keepalived.service
vim /usr/local/nginx/html/index.html

备调度器
scp root@192.168.120.30:/etc/keepalived/keepalived.conf /etc/keepalived/
vim /etc/keepalived/keepalived.conf

vim /opt/check_nginx.sh

chmod 777 check_nginx.sh
systemctl restart keepalived.service
vim /usr/local/nginx/html/index.html
![]()

主调度器关闭nginx



脑裂:主和备同时拥有VIP地址。在高可用系统当中,联系两个节点的心跳线,本来是一体的,动作协调的高可用系统。心跳线断开后,分裂成了两个独立的个体。主备之间失去了联系,都以为是对方出现了故障。两个调度器就像脑裂人一样
开始抢占主的位置,抢占VIP。主也有VIP,备也有VIP,导致整个集群失败。
软件层面:
- 配置文件
- tcpdump抓包分析
tcpdump -i ens33 vrrp -n
动态获取vrrp协议的所有网络数据包
重启
网络层面:
高可用服务器之间心跳线检测失败。主备之间无法进行通信。
硬件层面:
连接主备之间的心跳线老化
网卡或网卡的驱动失效,IP地址配置冲突
防火墙没有配置心跳线消息的传输通道。导致检测失败
后端服务器的配置问题,心跳方式不同,心跳广播冲突,软件BUGG。
如何解决keepalived脑裂的问题:
- 硬件:准备两条心跳线,这样断了一跳,依然能够传送心跳。
- 设置防火请一定要让心跳的消息通过
- 监控软件,实时检测(zabbix)
dev:开发环境 开发人员专用
sit:测试环境 测试人员使用(开发,运维)
pre:预生产环境 运维和开发(和最终的生产环境保持一致)
prd:生产环境(面向用户的环境)
相关文章:
LVS+keepalived——高可用集群
lvskeepalived:高可用集群 keepalived为lvs应运而生的高可用服务。lvs的调度器无法做高可用,于是keepalived这个软件。实现的是调度器的高可用。但是:keepalived不是专门为lvs集群服务的,也可以做其他代理服务器的高可用。 lvs的…...
使用 AWS boto3 库从 s3 桶中批量下载数据
文章目录 一、Boto3 快速安装二、账户配置三、代码示例3.1 下载单个文件3.2 下载文件夹内全部文件 官方文档 一、Boto3 快速安装 安装 Boto3 之前,先安装 Python 3.8 或更高版本;对 Python 3.6 及更早版本的支持已弃用。 通过 pip 安装最新的 Boto3 版…...
js ::after简单实战
::after的作用是在元素后面再加个XXX样式 工作中遇到了一个表格,鼠标指到单元格要有个整行编辑态的效果,下面写个简单的demo 有人可能会说了,直接修改某个单元格的hover样式不就行了嘛,问题是如果鼠标指到单元格和单元格直接的…...
数据结构与算法实验(黑龙江大学)
实验一 顺序存储的线性表(2 学时) 一、实验目的 1 、掌握线性表的逻辑结构特征。 2、熟练掌握线性表的顺序存储结构的描述方法。 3 、熟练掌握顺序表上各种基本操作的实现。 二、实验内容 1 、设线性表的数据元素都为整数,存放在顺序表…...
如何使用rclone将腾讯云COS桶中的数据同步到华为云OBS
在多云策略与数据迁移趋势下,企业往往需要将数据在不同云服务提供商之间进行迁移。本文介绍如何使用rclone工具同步腾讯云COS(Cloud Object Storage)桶中的数据到华为云OBS(Object Storage Service)。先决条件是您已经…...
gitlab
Gitlab 安装git yum安装 [rootgit ~]# yum -y install git编译安装 Git官网 #安装依赖关系 [rootgit ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel autoconf gcc perl-ExtUtils-MakeMaker # 编译安装 [rootgit ~]# tar -zxf git-2.0…...
3.计算机网络
1.重点概念 MSL(Maximum segment lifetime):TCP 报⽂最⼤⽣存时间。它是任何 TCP 报⽂在⽹络上存在的 最⻓时间,超过这个时间报⽂将被丢弃。实际应⽤中常⽤的设置是 30 秒,1 分钟和 2 分钟。 TTL(Time to …...
Doris表的动态分区
动态分区是在Doris 0.12版本中引入的新功能。旨在对表级别的分区实现生命周期管理(TTL),减少用户的使用负担。 目前实现了动态添加分区及动态删除分区的功能。动态分区只支持Range分区。 1 原理 在某些使用场景下,用户会将表按照天进行分区划分,每天定时执行例行任务,这时…...
docker小技能:部署mysql
文章目录 引言I Docker安装MySQL1.1 安装mysql1.2 配置容器自动重启参数1.3 查看版本II 配置MySQL2.1 设置为开机自启动2.2 执行MySQL安全性操作并设置密码2.3 配置文件2.4 创建数据库用户dmsTest,并授予远程连接权限。2.5 用户相关命令III 用户权限3.1 权限层级3.2 权限分类3.…...
“AI在未来”公益计划,亚马逊云科技将教育资源带到更多中西部学校
亚马逊云科技宣布携手中国光华科技基金会启动“AI在未来”公益计划2023至2024学年项目,预计本学年内在内蒙古、江西、湖南和广西四个省份开展该项目,并完成三年内为中西部地区一百所学校的一万名学生提供免费人工智能教育资源及实践机会的目标。 此外&am…...
MyBatis的xml实现
1.下载插件MyBatisX 2.添加依赖 <!--Mybatis 依赖包--><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.3.1</version></dependency><!--…...
dolphinscheduler任务莫名重跑
dolphinscheduler运行了一段时间,忽然发现一个流程下某个任务一直在自动重跑,把工作流删了,任务删了,下线等等,都不能阻止他重复的运行,每秒1次,真是见了鬼 1、把zookeeper停掉发现不再重跑了 …...
Caché for UNIX®, Linux及macOS的安装及配置
本文介绍在UNIX、Linux或macOS系统上安装Cach的操作步骤。本文假设用户已熟悉UNIX、Linux和macOS目录结构、实用程序和命令。 本文包含如下主要部分: 1)Cach安装。 2)无人值守的Cach安装。 3)安装后任务。...
【书籍篇】Git 学习指南(一)基础概念及入门
Git 学习指南(一)基础概念及入门 一. 基本概念1.1 分布式版本控制1.1.1 集中式版本控制系统1.1.2 分布式版本控制系统1.1.3 特型版本库 1.2 版本库,分布式工作的基础所在1.2.1 散列值 1.3 分支的创建与合并1.3.1 分支的其他操作 二. 入门2.1 …...
JWT知识点
什么是JWT Json web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC 7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提…...
UDP接收报文函数recvfrom和UDP发送报文函数sendto
#include <sys/socket.h> ssize_t recvfrom(int sockfd, void *buff, size_t nbytes, int flags, struct sockaddr *from, socklen_t *addrlen); sockfd、buff 和 nbytes 是前三个参数。sockfd 是本地创建的套接字描述符,buff 指向本地的缓存,nbyt…...
Redisson 分布式锁实战应用解析
文章目录 前言一、Redisson介绍二、Redisson的使用1.1 引入依赖1.2 编写配置1.3 示例测试_011.4 示例测试_02 三、Redisson源码分析2.1 加锁源码2.2 看门狗机制 前言 分布式锁主要是解决分布式系统下数据一致性的问题。在单机的环境下,应用是在同一进程下的&#x…...
【机器学习】对比学习(contrastive learning)
对比学习是一种机器学习技术,算法学习区分相似和不相似的数据点。对比学习的目标是学习数据的表示,以捕捉不同数据点之间的基本结构和关系。 在对比学习中,算法被训练最大化相似数据点之间的相似度,并最小化不相似数据点之间的相似…...
开源和闭源的优劣势比较
开源与闭源软件之争一直是技术领域一个备受关注的话题,而在近期特斯拉CEO马斯克的表态中,关于开源的讨论更是引发了广泛的关注。以下是一些关于开源和闭源的优劣势以及对未来大模型发展的一些见解: 开源软件的优势: 创新与合作&a…...
从硬件到固件:拆解一台老旧PC,用逻辑分析仪抓取RTC唤醒信号的完整流程
从硬件到固件:拆解一台老旧PC,用逻辑分析仪抓取RTC唤醒信号的完整流程 拆开一台2005年的戴尔OptiPlex 755商用主机,灰尘随着螺丝刀的转动簌簌落下。这台服役15年的老将主板上的ICH8南桥芯片,正是我们探索RTC唤醒机制的绝佳实验平台…...
基于MCP协议实现本地ERP与AI助手安全集成:以Subiekt GT为例
1. 项目概述:当波兰ERP遇上AI助手如果你在波兰经营一家中小型企业,或者为这样的企业提供IT服务,那么“Subiekt GT”这个名字对你来说一定不陌生。作为InsERT公司旗下最受欢迎的桌面版ERP系统,它几乎是波兰本土商贸、服务行业财务和…...
终极AI输出格式控制:lm-format-enforcer完全指南
终极AI输出格式控制:lm-format-enforcer完全指南 【免费下载链接】lm-format-enforcer Enforce the output format (JSON Schema, Regex etc) of a language model 项目地址: https://gitcode.com/gh_mirrors/lm/lm-format-enforcer lm-format-enforcer是一款…...
河马云神低空气象预测服务:搞定低空 “天气玄学”,做靠谱的空中 “引路人”
说起天气预报,咱们早就习惯了手机上一划的 “晴雨预告”,但你有没有过这种糟心时刻?无人机刚起飞就撞上湍流晃得厉害,植保作业刚喷药就遇上突发大风,高速路段莫名起团雾逼得车流缓行…… 这些问题的根源,都…...
别再硬改CSS了!Element UI的el-date-picker样式定制,用这3个官方属性更优雅
别再硬改CSS了!Element UI的el-date-picker样式定制,用这3个官方属性更优雅 在企业级后台管理系统开发中,日期选择器是高频使用的核心组件。Element UI作为Vue生态中最受欢迎的UI框架之一,其el-date-picker组件功能强大但样式定制…...
基于系统调用的Linux网络编程——UDP与TCP
基于系统调用实现的Linux网络编程——UDP与TCP 传输层的两种常用协议 TCP协议,其特点是: 传输层协议有链接可靠传输面向字节流 UDP协议,其特点是: 传输层协议无链接不可靠传输面向数据报套接字socket与网络字节序(大端…...
为什么92%的PR团队在2026 AI大会媒体申报中首轮被拒?——解密评审委员会内部打分表(含权重分配与否决红线)
更多请点击: https://intelliparadigm.com 第一章:2026 AI技术大会媒体合作全景图谱 2026 AI技术大会已正式启动全球媒体合作生态共建计划,覆盖技术媒体、垂直产业平台、学术传播渠道及新兴AIGC内容分发网络四大支柱。本次合作不再局限于传统…...
AISMM安全维度落地指南:从合规审计到AI模型投毒防护,5步构建企业级智能安全基线
更多请点击: https://intelliparadigm.com 第一章:AISMM安全维度的演进逻辑与奇点意义 AISMM(Artificial Intelligence Security Maturity Model)并非传统安全框架的线性延伸,而是AI系统在对抗性环境、数据漂移与模型…...
STM32H750实战:用MPU给LCD屏和SDRAM划个安全区,解决屏幕闪烁和DMA数据错乱
STM32H750实战:MPU精准配置解决LCD闪烁与DMA数据错乱 1. 问题现象与根源分析 在STM32H750这类高性能MCU的开发过程中,工程师们经常会遇到一些令人困扰的现象:LCD屏幕出现随机闪烁、显示花屏,或者通过DMA传输的数据出现错乱。这些看…...
基于Termux的安卓恶意软件本地化分析平台OpenClaw实战指南
1. 项目概述与核心价值最近在移动安全研究圈里,一个名为OpenClaw_Termux的项目引起了我的注意。乍一看这个标题,很多朋友可能会有点懵——“OpenClaw”听起来像某个开源工具,“Termux”是安卓上的强大终端模拟器,这俩组合在一起是…...
