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

news2025/5/24 9:41:11

一、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 MASTER
  interface eth0
  virtual_router_id 60
  priority 100
  virtual_ipaddress {
    192.168.1.254/24 dev eth0  # VIP
  }
}

# LVS 规则配置(通过 keepalived 动态注入)
virtual_server 192.168.1.254 80 {
  delay_loop 6
  lb_algo wlc  # 加权最小连接算法
  lb_kind DR  # DR 模式
  protocol TCP

  real_server 192.168.1.101 80 {
    weight 10
    TCP_CHECK {
      connect_port 80
      connect_timeout 3
      retry 3
    }
  }

  real_server 192.168.1.102 80 {
    weight 8
    TCP_CHECK {
      connect_port 80
      connect_timeout 3
      retry 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 MASTER
  interface eth0
  virtual_router_id 70
  priority 100
  virtual_ipaddress {
    192.168.1.254/24
  }
  track_script {
    check_web
  }
}

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

# /etc/keepalived/db.conf
global_defs {
  router_id LVS_DB
  vrrp_port 113  # 自定义 VRRP 端口
}

vrrp_instance DB {
  state MASTER
  interface eth0
  virtual_router_id 71
  priority 100
  virtual_ipaddress {
    192.168.1.255/24  # 独立 VIP
  }
}

virtual_server 192.168.1.255 3306 {
  lb_kind NAT
  real_server 192.168.1.103 3306 {
    weight 5
    TCP_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: keepalived
        image: keepalived:latest
        volumeMounts:
        - mountPath: /etc/keepalived
          name: config

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

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

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

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

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

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

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

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

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

相关文章

篇章二 需求分析(一)

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

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

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

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;而不是通过传统的…

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…

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;恢复出场景的三维结构和相机的…

【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;控制变量初始…

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

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

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

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

多路径可靠传输协议(比如 MPTCP)为什么低效

可靠就不能多路径&#xff0c;多路径求可靠必然要多费劲。这不难理解&#xff0c;多路径必异步&#xff0c;这无疑增加了可靠性判断的难度。 前文 多路径传输(比如 MPTCP)对性能的意义 阐述了作为单连接的多子流 MPTCP 对传输性能的意义是无意义&#xff0c;本文接着阐述作为隧…

塔能高温冰蓄冷技术:工厂能耗精准节能的创新之路

在工厂的能耗构成中&#xff0c;制冷系统是重要的耗能环节。传统的水蓄冷和冰蓄冷技术在实际应用中存在一些局限性&#xff0c;难以满足工厂对节能和成本控制的更高要求。塔能科技的高温冰蓄冷技术&#xff0c;凭借其独特的优势&#xff0c;为工厂能耗精准节能提供了创新的解决…

内存优化笔记1

欢迎关注更多精彩 关注我&#xff0c;学习常用算法与数据结构&#xff0c;一题多解&#xff0c;降维打击。 问题提出 在很多工业软件中&#xff0c;需要对对象进行微分细化&#xff0c;这样会产生很多&#xff08;几百万到几千万&#xff09;对象。随着业务的发展&#xff0c…