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

Keepalived 与 LVS 集成及多实例配置详解

一、Keepalived 扩展功能:LVS 集成与多实例管理

1. Keepalived + LVS:四层负载均衡高可用方案
1.1 集成原理与架构
  • 核心逻辑:Keepalived 通过 VRRP 实现 LVS 负载均衡节点的高可用,同时利用 LVS 的 IP 负载均衡技术(NAT/DR/TUN 模式)分发流量到后端服务器。

  • 组件分工

    • Keepalived:管理 VRRP 状态、VIP 漂移和节点健康检查。

    • LVS:基于 IP 层(OSI 第四层)实现流量转发,支持 TCP/UDP 协议(如 HTTP、MySQL、Redis)。

1.2 LVS 负载均衡模式
模式 原理 特点
NAT负载均衡器作为网关,修改数据包源 / 目的 IP,后端服务器默认网关指向负载均衡器。 配置简单,需负载均衡器处理所有进出流量,适合小规模集群。
DR(直接路由)负载均衡器仅修改数据包目的 MAC,后端服务器共享 VIP 的 IP 配置。 性能高,后端服务器需配置相同子网 IP,适合高吞吐量场景。
TUN(隧道模式)负载均衡器与后端服务器通过 IP 隧道通信,支持跨子网部署。 支持地理分散的后端服务器,配置复杂。
1.3 配置示例(LVS DR 模式)
# Keepalived 配置文件(主节点)
global_defs {router_id LVS_MASTER
}vrrp_instance LVS_VIP {state MASTERinterface eth0virtual_router_id 60priority 100virtual_ipaddress {192.168.1.254/24 dev eth0  # VIP}
}# LVS 规则配置(通过 keepalived 动态注入)
virtual_server 192.168.1.254 80 {delay_loop 6lb_algo wlc  # 加权最小连接算法lb_kind DR  # DR 模式protocol TCPreal_server 192.168.1.101 80 {weight 10TCP_CHECK {connect_port 80connect_timeout 3retry 3}}real_server 192.168.1.102 80 {weight 8TCP_CHECK {connect_port 80connect_timeout 3retry 3}}
}

关键配置说明

  • virtual_server:定义 VIP 和服务端口(如 80)。

  • lb_algo:负载均衡算法(支持 rr/wlc/lc 等)。

  • real_server:后端服务器 IP 及权重,TCP_CHECK 实现健康检查。

1.4 后端服务器配置(DR 模式)
# 配置 VIP 别名(不启用 ARP 响应)
sudo ip addr add 192.168.1.254/32 dev lo:0
sudo arp -Ds 192.168.1.254 $(ifconfig eth0 | grep ether | awk '{print $2}') pub

原理:后端服务器通过回环接口(lo)绑定 VIP 的 /32 地址,避免响应 ARP 请求干扰负载均衡器。

2. 多实例支持:单机管理多个独立高可用组
2.1 应用场景
  • 多业务隔离:同一物理机上运行多个 Keepalived 实例,分别管理不同业务的 VIP(如 Web 服务 VIP1、数据库 VIP2)。

  • 混合负载均衡:同时部署 LVS 负载均衡实例和纯 VRRP 高可用实例。

2.2 实例隔离机制
  • 配置文件隔离:每个实例使用独立的配置文件(如 /etc/keepalived/instance1.conf/etc/keepalived/instance2.conf)。

  • 端口隔离

    • 主实例使用默认端口(VRRP 通告 UDP 112、管理接口 TCP 1936)。

    • 其他实例通过 vrrp_port 参数指定不同端口(如 113、1937)。

  • 进程隔离:每个实例以独立进程运行,通过不同 PID 文件区分。

2.3 配置示例(双实例)

实例 1:Web 服务高可用(纯 VRRP)

# /etc/keepalived/web.conf
vrrp_instance WEB {state MASTERinterface eth0virtual_router_id 70priority 100virtual_ipaddress {192.168.1.254/24}track_script {check_web}
}

实例 2:数据库负载均衡(LVS + VRRP)

# /etc/keepalived/db.conf
global_defs {router_id LVS_DBvrrp_port 113  # 自定义 VRRP 端口
}vrrp_instance DB {state MASTERinterface eth0virtual_router_id 71priority 100virtual_ipaddress {192.168.1.255/24  # 独立 VIP}
}virtual_server 192.168.1.255 3306 {lb_kind NATreal_server 192.168.1.103 3306 {weight 5TCP_CHECK { ... }}
}

启动命令

# 实例 1
sudo keepalived -f /etc/keepalived/web.conf -D# 实例 2
sudo keepalived -f /etc/keepalived/db.conf -D -p /var/run/keepalived_db.pid
2.4 管理与监控
  • 状态查看
# 实例 1 状态
sudo keepalived -S info -f /etc/keepalived/web.conf# 实例 2 状态
sudo keepalived -S info -f /etc/keepalived/db.conf
  • 日志分离:每个实例配置独立日志文件:
global_defs {log_file /var/log/keepalived_web.log  # 实例 1 日志
}
3. 扩展功能最佳实践
3.1 LVS 性能优化
  • 算法选择

    • 短连接业务(如 HTTP):使用 rr(轮询)或 wrr(加权轮询)。

    • 长连接业务(如数据库):使用 wlc(加权最小连接)。

  • 连接调度:通过 persistence_timeout 配置会话保持(如电商购物车场景):

virtual_server 192.168.1.254 80 {persistence_timeout 300  # 5 分钟内同一客户端 IP 路由到同一后端
}
3.2 多实例资源分配
  • CPU 隔离:为不同实例分配独立 CPU 核心(通过 systemd-cgroups)。

  • 内存限制:使用 MemoryMax 参数限制实例内存占用:

# /etc/systemd/system/keepalived@.service.d/limit.conf
[Service]
MemoryMax=256M
3.3 云原生场景适配
  • 容器化部署:在 Kubernetes 中使用 keepalived + ipvs 实现四层负载均衡,替代传统 NodePort 服务:
apiVersion: apps/v1
kind: DaemonSet
metadata:name: keepalived-lvs
spec:template:spec:containers:- name: keepalivedimage: keepalived:latestvolumeMounts:- mountPath: /etc/keepalivedname: config

二、总结:扩展功能的价值与适用场景

  • Keepalived + LVS:提供 “高可用 + 负载均衡” 一体化解决方案,适合传统数据中心的四层流量分发场景(如金融交易、实时通信)。

  • 多实例管理:满足复杂业务架构下的资源隔离需求,避免单一实例故障影响全局,同时优化硬件利用率。

在实际应用中,建议根据业务特性选择扩展功能:

  • 无状态服务优先使用 LVS DR 模式,结合 Keepalived 实现高性能高可用。

  • 多业务场景通过多实例隔离,配合云原生技术(如容器、K8s)实现混合架构部署。

通过合理利用 Keepalived 的扩展功能,可在不引入复杂中间件的前提下,构建灵活、高效的基础设施层。

相关文章:

Keepalived 与 LVS 集成及多实例配置详解

一、Keepalived 扩展功能:LVS 集成与多实例管理 1. Keepalived LVS:四层负载均衡高可用方案 1.1 集成原理与架构 核心逻辑:Keepalived 通过 VRRP 实现 LVS 负载均衡节点的高可用,同时利用 LVS 的 IP 负载均衡技术(N…...

篇章二 需求分析(一)

目录 1.知名MQ 2.需求分析 2.1 核心概念 2.2 生产者消费者模型的类别 2.3 BrokerServer 内部的关键概念(MQ) 1.虚拟主机(Virtual Host) 2.交换机(Exchange) 3.队列(Queue) 4…...

汽车充电过程中--各个电压的关系(DeepSeek)

在电动汽车的充电过程中,电池的充电机制涉及多个电压参数的协调控制,以下从原理到实际应用逐步分析: 1. 充电基础原理 电动汽车电池(通常为锂离子电池组)的充电本质是通过外部电源向电池注入电能,使锂离子…...

图解深度学习 - 机器学习简史

前言 深度学习并非总是解决问题的最佳方案:缺乏足够数据时,深度学习难以施展;某些情况下,其他机器学习算法可能更为高效。 若初学者首次接触的是深度学习,可能会形成一种偏见,视所有机器学习问题为深度学…...

Gmsh 代码深度解析与应用实例

在科学计算与工程仿真领域,Gmsh 是一款广受欢迎的开源有限元网格生成器,它不仅支持复杂的几何建模,还能高效生成高质量的网格,并具备强大的后处理功能。本文将深入解析几段具有代表性的 Gmsh 代码,从基础几何创建到高级…...

49页 @《人工智能生命体 新启点》中國龍 原创连载

《 人工智能生命体 新启点 》一书,以建立意识来建立起生命体,让其成为独立、自主的活动个体;也就可以理解为建立生命体的思想指导。 让我们能够赋予他灵魂!...

量化研究---bigquant策略交易api研究

api接口来平台的代码整理,原理是读取bigquant的模拟测试信号,下单,可以完美的对接qmt交易,我优化了交易api的部分内容 我开发对接qmt的交易系统 看api源代码 源代码 # 导入系统包 import os import json import requests from ty…...

编译原理 期末速成

一、基本概念 1. 翻译程序 vs 编译程序 翻译程序的三种方式 编译:将高级语言编写的源程序翻译成等价的机器语言或汇编语言。(生成文件,等价)解释:将高级语言编写的源程序翻译一句执行一句,不生成目标文件…...

echarts之漏斗图

vue3echarts实现漏斗图 echarts中文官网&#xff1a;https://echarts.apache.org/examples/zh/index.html 效果图如下&#xff1a; 整体代码如下&#xff1a; <template><div id"funnelChart" style"width:100%;height:400px;"></div&g…...

零基础设计模式——第二部分:创建型模式 - 原型模式

第二部分&#xff1a;创建型模式 - 5. 原型模式 (Prototype Pattern) 我们已经探讨了单例、工厂方法、抽象工厂和生成器模式。现在&#xff0c;我们来看创建型模式的最后一个主要成员——原型模式。这种模式关注的是通过复制现有对象来创建新对象&#xff0c;而不是通过传统的…...

Honeywell TK-PRS021 C200

Honeywell C200/C200E 是一款高性能的集成控制与安全系统&#xff08;ICSS&#xff09;&#xff0c;采用紧凑型 A 系列机箱 设计&#xff0c;适用于工业自动化、过程控制和批处理管理。C200 控制器最初随 PlantScape R200 发布&#xff0c;而 C200E 则与 Experion PKS R400 兼容…...

java 进阶 1.0.3

Thread API说明 自己滚去看文档 CPU线程调度 每一个线程的优先使用权都是系统随机分配的&#xff0c;人人平等 谁先分配到就谁先用 也可以耍赖&#xff0c;就是赋予某一个线程拥有之高使用权&#xff1a;优先级 这样的操作就叫做线程调度 最基本的是系统轮流获得 java的做法是抢…...

从 Docker 到 runC

从 Docker 到 runC:容器底层原理详解 目录 1. Docker 与 runC 的关系 2. Docker 的核心组件 3. runC 的核心功能 4. 实战示例:从 Docker 到 runC 4.1 示例场景:运行一个简单容器 4.2 Docker 底层调用 runC 的流程 4.3 查看 runC 的调用 4.4 直接调用 runC 创建容器 …...

PET,Prompt Tuning,P Tuning,Lora,Qlora 大模型微调的简介

概览 到2025年&#xff0c;虽然PET&#xff08;Pattern-Exploiting Training&#xff09;和Prompt Tuning在学术界仍有探讨&#xff0c;但在工业和生产环境中它们已基本被LoRA/QLoRA等参数高效微调&#xff08;PEFT&#xff09;方法取代 。LoRA因其实现简单、推理零开销&#…...

02-jenkins学习之旅-基础配置

0 配置主路径 jenkins安装目录下找到jenkins.xml文件&#xff0c;C:\ProgramData\Jenkins\.jenkins目录下会存放jenkins相关的配置信息。 1 jdk配置 jenkins是java开发开源的项目&#xff0c;进而服务器需要jdk环境 1.1 服务器安装jdk 1.2 jenkins jdk配置 2 git配置 在je…...

互联网大厂Java求职面试:云原生架构与AI应用集成解决方案

互联网大厂Java求职面试&#xff1a;云原生架构与AI应用集成解决方案 场景一&#xff1a;短视频与直播平台的高并发架构设计 面试官提问 面试官&#xff08;技术总监&#xff09;&#xff1a; 郑薪苦&#xff0c;你有处理过千万级用户同时在线的直播系统吗&#xff1f;如何设…...

Python爬虫实战:研究Crawley 框架相关技术

1. Crawley 框架相关定义 1.1 网络爬虫定义 网络爬虫是一种按照一定的规则,自动地抓取万维网信息的程序或者脚本。它通过 HTTP 协议与 Web 服务器进行交互,获取网页内容并进行解析处理,是数据采集和信息检索的重要工具。 1.2 Crawley 框架定义 Crawley 是一个基于 Pytho…...

C#实现List导出CSV:深入解析完整方案

C#实现List导出CSV&#xff1a;深入解析完整方案 在数据交互场景中&#xff0c;CSV文件凭借其跨平台兼容性和简洁性&#xff0c;成为数据交换的重要载体。本文将基于C#反射机制实现的通用CSV导出方案&#xff0c;结合实际开发中的痛点&#xff0c;从基础实现、深度优化到生产级…...

Appium+python自动化(三)- SDK Manager

简介 一开始打算用真机做的&#xff0c;所以在前边搭建环境时候就没有下载SDK&#xff0c;但是考虑到绝大多数人都没有真机&#xff0c;所以顺应民意整理一下模拟器。SDK顾名思义&#xff0c;Android SDK Manager就是一个Android软件开发工具包管理器&#xff0c;就像一个桥梁&…...

3D Gaussian Splatting for Real-Time Radiance Field Rendering——文章方法精解

SfM → Point-NeRF → 3D Gaussian Splatting &#x1f7e6;SfM Structure-from-Motion&#xff08;运动恢复结构&#xff0c;简称 SfM&#xff09;是一种计算机视觉技术&#xff0c;可以&#xff1a; 利用多张从不同角度拍摄的图像&#xff0c;恢复出场景的三维结构和相机的…...

主成分分析基本概念及python代码使用

目录 1. 前言 2. 主成分分析的基本概念 3. PCA的适应场景 4. PCA算法的理论基础 4.1 标准化数据 4.2 计算协方差矩阵 4.3 求解特征值和特征向量 4.4 选择主成分 4.5 投影到新坐标系 5. 完整的PCA示例 5.1 使用手写数字数据集 5.2 可视化降维后的数据 6. PCA的优缺…...

MCP如何助力智能交通系统?从数据融合到精准决策

MCP如何助力智能交通系统?从数据融合到精准决策 近年来,智能交通系统(ITS)正在全球范围内快速发展,它结合人工智能(AI)、物联网(IoT)和数据分析,致力于提高交通效率、减少拥堵、增强安全性。而MCP(Multi-Constraint Pathfinding,多约束路径寻优)技术作为一种复杂…...

什么是抽象类?是所有函数都是纯虚函数吗?

什么是抽象类&#xff1f; 抽象类&#xff08;Abstract Class&#xff09;是一种特殊的类&#xff0c;它不能被直接实例化&#xff0c;但可以作为基类被其他类继承。抽象类的主要用途是定义一组接口规范&#xff0c;这些规范由派生类实现。 在C中&#xff0c;抽象类是通过包含…...

计算机视觉与深度学习 | Python实现ARIMA-WOA-CNN-LSTM时间序列预测(完整源码和数据

以下是一个结合ARIMA、鲸鱼优化算法(WOA)、CNN和LSTM进行时间序列预测的Python实现框架。由于完整代码和数据量较大,此处提供核心代码结构和示例数据集,您可根据需求扩展。 1. 数据准备(示例数据) 使用airline-passengers.csv(航空乘客数据集): import pandas as pd…...

【Unity实战笔记】第二十四 · 使用 SMB+Animator 实现基础战斗系统

转载请注明出处&#xff1a;&#x1f517;https://blog.csdn.net/weixin_44013533/article/details/146409453 作者&#xff1a;CSDN|Ringleader| 1 结构 1.1 状态机 1.2 SMB 2 代码实现 2.1 核心控制 Player_Base_SMB 继承 StateMachineBehaviour &#xff0c;控制变量初始…...

C/C++的OpenCV 进行图像梯度提取

使用 C/OpenCV 进行图像梯度提取 图像梯度表示图像中像素强度的变化率和方向。它是图像分析中的一个基本概念&#xff0c;广泛应用于边缘检测、特征提取和物体识别等任务。OpenCV 提供了多种计算图像梯度的函数。本文将介绍几种常用的梯度算子及其在 C/OpenCV 中的实现。 预备…...

Redis 缓存使用的BigKey问题

一、什么是 BigKey&#xff1f; BigKey 指在 Redis 中存储的 单个 Key 对应的 Value 过大&#xff0c;通常表现为&#xff1a; String 类型&#xff1a;Value 长度 > 10KB。Hash/List/Set/ZSet&#xff1a;元素数量 > 5,000 或总大小 > 10MB。 二、BigKey 的危害 问…...

【Java高阶面经:消息队列篇】22、消息队列核心应用:高并发场景下的解耦、异步与削峰

一、消息队列:分布式系统的核心枢纽 在分布式架构日益普及的今天,消息队列(Message Queue, MQ)已成为解决系统复杂性的核心组件。它通过异步通信、系统解耦和流量控制等能力,有效应对高并发场景下的数据流动挑战。 1.1 核心特性:异步、解耦与弹性 1.1.1 异步通信:释放…...

软媒魔方——一款集合多种系统辅助组件的软件

停更4年&#xff0c;但依旧吊炸天&#xff01; 亲们&#xff0c;是不是觉得电脑用久了就像老牛拉车&#xff0c;慢得让人着急&#xff1f;别急&#xff0c;我今天要给大家安利一个超好用的电脑优化神器——软媒魔方&#xff01; 软件介绍 首先&#xff0c;这货真心是免费的&a…...

Unity场景的加载与卸载

Unity场景的加载与卸载 使用方法&#xff1a;把SceneLoader 脚本代码挂在场景中 使用示例&#xff1a; SceneLoader.Instance.LoadAdditiveScene(8);//通过场景索引加载SceneLoader.Instance.UnloadScene("ShiWaiScene");//通过场景名字卸载脚本代码如下&#xff1…...