LVS+Keepalived 高可用

目录

一、核心概念

1. LVS(Linux Virtual Server)

2. Keepalived

二、高可用架构设计

1. 架构拓扑图

2. 工作流程

三、部署步骤(以 DR 模式为例)

1. 环境准备

2. 主 LVS 节点配置

(1)安装 Keepalived

(2)配置 Keepalived 主节点(/etc/keepalived/keepalived.conf)

(3)配置 LVS 内核参数(DR 模式需关闭 ARP 响应)

3. 备 LVS 节点配置

4. 后端服务器配置(以 Nginx 为例)

(1)绑定 VIP(lo 接口,避免响应 ARP 请求)

(2)关闭 IP 转发

(3)启动 Nginx 服务

四、验证与维护

1. 状态检查

2. 故障切换测试

五、注意事项

六、扩展场景

命令解析

全局配置部分

VRRP 实例配置

LVS 虚拟服务器配置

后端服务器配置

配置总结


一、核心概念
1. LVS(Linux Virtual Server)
  • 定义:基于 Linux 内核的负载均衡器,工作在 OSI 模型的第四层(传输层),通过 IP 和端口实现流量分发。
  • 工作模式
    • NAT 模式:客户端请求经 LVS 转发至后端服务器,响应流量需通过 LVS 返回(需配置 SNAT/DNAT)。
    • DR 模式(Direct Routing):LVS 仅转发请求,后端服务器直接响应客户端(需共享 VIP,配置路由或调整内核参数)。
    • TUN 模式(隧道模式):通过 IP 隧道封装技术将请求转发至后端服务器(适用于跨网段场景)。
  • 调度算法
    • 轮询(Round Robin)、加权轮询(Weighted RR)、最少连接(Least Connections)、加权最少连接(Weighted LC)等。
2. Keepalived
  • 定义:基于 VRRP(Virtual Router Redundancy Protocol)协议的高可用解决方案,用于监控 LVS 节点状态,实现主备切换。
  • 核心功能
    • 健康检查:通过 TCP、HTTP、SSL 等方式检测后端服务器和 LVS 节点的存活状态。
    • 虚拟路由冗余:多个 Keepalived 节点组成 VRRP 组,共享一个虚拟 IP(VIP),主节点故障时自动切换至备节点。
二、高可用架构设计
1. 架构拓扑图
客户端 <---- VIP ----> [主LVS+Keepalived] <---- 内网 ----> 后端服务器集群└---- VIP ----> [备LVS+Keepalived]

  • 关键组件
    • 主备 LVS 节点:运行 LVS 负载均衡服务,共享 VIP。
    • Keepalived 服务:部署在主备 LVS 节点上,通过心跳机制同步状态。
    • 后端服务器:处理实际业务请求,需配置为 LVS 的 Real Server。
2. 工作流程
  1. 正常状态
    • 主节点持有 VIP,接收客户端请求并通过 LVS 调度算法分发给后端服务器。
    • 备节点处于待命状态,定期监听主节点心跳。
  2. 主节点故障
    • 备节点检测到主节点心跳丢失,接管 VIP 并成为新的主节点,继续处理流量。
    • 原主节点恢复后,自动转为备节点(需配置抢占模式)。
三、部署步骤(以 DR 模式为例)
1. 环境准备
角色IP 地址软件组件
主 LVS 节点192.168.1.100LVS+Keepalived
备 LVS 节点192.168.1.101LVS+Keepalived
虚拟 IP(VIP)192.168.1.200-
后端服务器 1192.168.1.110Nginx+Keepalived(健康检查)
后端服务器 2192.168.1.111Nginx+Keepalived(健康检查)
2. 主 LVS 节点配置
(1)安装 Keepalived
yum install keepalived -y
(2)配置 Keepalived 主节点(/etc/keepalived/keepalived.conf)
global_defs {router_id LVS_MASTER  # 节点标识,主备需不同
}vrrp_instance VI_1 {state MASTER          # 主节点状态(备节点为BACKUP)interface eth0        # 绑定VIP的网卡virtual_router_id 51  # VRRP组ID(主备需一致)priority 100          # 优先级(备节点设为90)advert_int 1          # 心跳间隔(秒)authentication {auth_type PASSauth_pass 1111    # 认证密码(主备需一致)}virtual_ipaddress {192.168.1.200/24  # 虚拟IP}
}# LVS健康检查(监控后端服务器)
virtual_server 192.168.1.200 80 {delay_loop 6         # 健康检查间隔(秒)lb_algo rr           # 调度算法(轮询)lb_kind DR           # 工作模式(DR)protocol TCP         # 协议类型# 后端服务器配置real_server 192.168.1.110 80 {weight 1          # 服务器权重TCP_CHECK {       # TCP健康检查connect_port 80connect_timeout 3retry 3delay_before_retry 3}}real_server 192.168.1.111 80 {weight 1TCP_CHECK {connect_port 80connect_timeout 3retry 3delay_before_retry 3}}
}
(3)配置 LVS 内核参数(DR 模式需关闭 ARP 响应)
echo "1" > /proc/sys/net/ipv4/conf/eth0/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/eth0/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
3. 备 LVS 节点配置
  • Keepalived 配置:与主节点基本一致,需修改:
    state BACKUP          # 状态改为BACKUP
    priority 90           # 优先级低于主节点
    router_id LVS_BACKUP  # 节点标识不同
    
  • 内核参数配置:与主节点相同。
4. 后端服务器配置(以 Nginx 为例)
(1)绑定 VIP(lo 接口,避免响应 ARP 请求)
ifconfig lo:0 192.168.1.200 netmask 255.255.255.255 broadcast 192.168.1.200
echo "1" > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/lo/arp_announce
echo "1" > /proc/sys/net/ipv4/conf/all/arp_ignore
echo "2" > /proc/sys/net/ipv4/conf/all/arp_announce
(2)关闭 IP 转发
echo "0" > /proc/sys/net/ipv4/ip_forward
(3)启动 Nginx 服务
yum install nginx -y
systemctl start nginx
四、验证与维护
1. 状态检查
  • 查看 Keepalived 状态
    systemctl status keepalived
    # 主节点应显示"Master",备节点显示"Backup"
    
  • 查看 VIP 绑定情况
    ip addr show eth0 | grep 192.168.1.200  # 主节点应存在VIP
    
  • LVS 规则检查
    ipvsadm -L -n  # 应显示后端服务器列表
    
2. 故障切换测试
  1. 停止主节点 Keepalived 服务:
    systemctl stop keepalived
    
  2. 检查备节点是否接管 VIP,且 LVS 规则正常。
  3. 重启主节点 Keepalived,验证是否恢复为备节点(非抢占模式需手动切换)。
五、注意事项
  1. 网络互通性
    • 主备 LVS 节点需与后端服务器网络互通(DR 模式需共享 VIP 所在网段)。
    • 后端服务器响应流量需直接返回给客户端,避免经过 LVS(需配置路由或环回接口)。
  2. 健康检查优化
    • 根据业务类型选择检查方式(如 HTTP 检查需配置 URL 路径)。
    • 调整检查间隔(delay_loop)和重试次数,避免误判。
  3. 防火墙配置
    • 开放 Keepalived 心跳端口(UDP 112)和业务端口(如 80、443)。
    • 在 DR 模式中,确保后端服务器不响应 VIP 的 ARP 请求。
六、扩展场景
  • 多 VRRP 组:为不同业务配置独立的 VRRP 组,实现更细粒度的高可用。
  • 负载均衡与高可用分离:使用独立节点部署 Keepalived,避免与 LVS 共享资源。
  • 结合云平台:在云环境中通过浮动 IP(EIP)和私有网络实现 LVS+Keepalived 架构。

命令解析

全局配置部分

global_defs {router_id LVS_MASTER  # 节点标识,主备需不同
}

global_defs:定义全局参数

router_id:标识 Keepalived 实例的唯一名称,主备节点必须不同,用于区分不同的 Keepalived 节点

VRRP 实例配置

vrrp_instance VI_1 {state MASTER          # 主节点状态(备节点为BACKUP)interface eth0        # 绑定VIP的网卡virtual_router_id 51  # VRRP组ID(主备需一致)priority 100          # 优先级(备节点设为90)advert_int 1          # 心跳间隔(秒)authentication {auth_type PASSauth_pass 1111    # 认证密码(主备需一致)}virtual_ipaddress {192.168.1.200/24  # 虚拟IP}
}

  • vrrp_instance VI_1:定义 VRRP 实例,名称为 VI_1
  • state MASTER:当前节点的初始状态,主节点为 MASTER,备节点为 BACKUP
  • interface eth0:绑定虚拟 IP 的物理网卡
  • virtual_router_id 51:VRRP 组 ID,取值范围 1-255,主备节点必须相同
  • priority 100:节点优先级,数值越大优先级越高,主节点应高于备节点
  • advert_int 1:发送 VRRP 通告的时间间隔(心跳间隔)
  • authentication:VRRP 认证配置,防止非法节点加入
    • auth_type PASS:密码认证方式
    • auth_pass 1111:认证密码,主备必须一致
  • virtual_ipaddress:定义虚拟 IP 地址,可配置多个

LVS 虚拟服务器配置

virtual_server 192.168.1.200 80 {delay_loop 6         # 健康检查间隔(秒)lb_algo rr           # 调度算法(轮询)lb_kind DR           # 工作模式(DR)protocol TCP         # 协议类型

  • virtual_server:定义虚拟服务器,即负载均衡的 VIP 和端口
  • delay_loop 6:健康检查的时间间隔(秒)
  • lb_algo rr:负载均衡调度算法
    • rr:轮询(Round Robin)
    • wrr:加权轮询
    • lc:最少连接(Least Connections)
    • wlc:加权最少连接
  • lb_kind DR:LVS 工作模式
    • DR:直接路由模式(Direct Routing)
    • NAT:网络地址转换模式
    • TUN:IP 隧道模式
  • protocol TCP:使用 TCP 协议进行负载均衡

后端服务器配置

    real_server 192.168.1.110 80 {weight 1          # 服务器权重TCP_CHECK {       # TCP健康检查connect_port 80connect_timeout 3retry 3delay_before_retry 3}}

  • real_server:定义真实服务器(后端服务器)的 IP 和端口
  • weight 1:服务器权重,数值越大被分配的请求越多
  • TCP_CHECK:TCP 健康检查配置
    • connect_port 80:检查的端口
    • connect_timeout 3:连接超时时间(秒)
    • retry 3:重试次数
    • delay_before_retry 3:重试前的延迟时间(秒)

配置总结

这个配置文件实现了一个基于 DR 模式的 LVS 负载均衡器的高可用方案:

  1. 使用 Keepalived 实现主备节点自动切换
  2. 虚拟 IP 地址为 192.168.1.200,绑定在 eth0 网卡上
  3. 负载均衡采用轮询算法,工作在 DR 模式
  4. 对两个后端服务器(192.168.1.110 和 192.168.1.111)进行健康检查
  5. 当主节点出现故障时,备节点将接管虚拟 IP 继续提供服务

配置注意事项:

  • 主备节点的 virtual_router_id 和 auth_pass 必须相同
  • 主备节点的 state 和 priority 必须不同
  • 后端服务器需要配置 VIP 的回环地址,并设置合适的 ARP 参数
  • DR 模式下,后端服务器需要和 LVS 在同一个物理网段

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

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

相关文章

TCP 三次握手过程详解

TCP 三次握手过程详解 一、TCP握手基础概念 1.1 什么是TCP握手 TCP三次握手是传输控制协议(Transmission Control Protocol)在建立连接时的标准过程,目的是确保通信双方具备可靠的双向通信能力。 关键结论:三次握手的本质是通过序列号同步和能力协商建立可靠的逻辑连接。 …

李宏毅NLP-7-CTC/RNN-T文本对齐

LAS LAS&#xff08;Listen, Attend and Spell &#xff09;模型&#xff0c;在语音识别中的解码和训练过程&#xff0c;具体内容如下&#xff1a; 解码&#xff08;Decoding&#xff09; 公式 Y ∗ arg ⁡ max ⁡ Y log ⁡ P ( Y ∣ X ) Y^* \arg\max_Y \log P(Y|X) Y∗ar…

jQuery和CSS3卡片列表布局特效

这是一款jQuery和CSS3卡片列表布局特效。该卡片布局使用owl.carousel.js来制作轮播效果&#xff0c;使用简单的css代码来制作卡片布局&#xff0c;整体效果时尚大方。 预览 下载 使用方法 在页面最后引入jquery和owl.carousel.js相关文件。 <link rel"stylesheet&qu…

Microsoft 推出 Magentic-UI,多智能体引领网页人机协作变革

当前&#xff0c;现代生产力与网页操作紧密相连&#xff0c;信息检索、表单填写、仪表盘导航等网页任务已成为工作流程的重要环节。然而&#xff0c;大量网页任务仍依赖人工重复操作&#xff0c;效率低下且易出错。与此同时&#xff0c;许多 AI 智能体虽追求自主运行&#xff0…

2023年6级第一套长篇阅读

画名词概念&#xff0c;动词概念 多处定位原词加同义改写 画关键词&#xff0c;多处定位直接就可以选A了 没有定位的句子先比没匹配到的段落&#xff0c;再匹配长的段落先易后难

登山第二十三梯:有序点云平面快速分割——35Hz帧速前进

文章目录 一 摘要 二 资源 三 内容 一 摘要 3D 点云中的实时平面提取对于许多机器人应用至关重要。作者提出了一种新颖的算法&#xff0c;用于在从 Kinect 传感器等设备获得的有组织的点云中实时可靠地检测多个平面。通过在图像空间中将这样的点云均匀地划分为不重叠的点组&…

【北京盈达科技】GEO优化:引领AI时代内容霸权,重塑行业生态

盈达科技GEO优化&#xff1a;引领AI时代内容霸权&#xff0c;重塑行业生态 在人工智能飞速发展的今天&#xff0c;生成式AI已经深刻改变了人们获取信息的方式。从ChatGPT到文心一言&#xff0c;再到各种智能问答系统&#xff0c;AI生成的内容正在成为信息传播的新主流。然而&a…

安卓端智能耗材柜系统可行性方案(基于uniapp + Vue3)

一、系统架构设计 1. 技术栈&#xff1a; 前端框架&#xff1a;uniapp Vue3 TypeScript状态管理&#xff1a;Pinia&#xff08;分层设计&#xff0c;模块化Store&#xff09;硬件交互&#xff1a;Android原生插件&#xff08;Java/Kotlin封装&#xff09;通信协议&#xff…

Java交互协议详解:深入探索通信机制

解析Java中各类交互协议的设计原理与实战应用&#xff0c;涵盖TCP/UDP自定义协议、HTTP/RESTful、WebSocket、RPC等主流方案。 一、交互协议核心概念 交互协议是系统间通信的规则集合&#xff0c;包含&#xff1a; 消息格式&#xff1a;数据序列化方式&#xff08;JSON/XML/P…

k8s上运行的mysql、mariadb数据库的备份记录

文章目录 前言一、获取需要备份的数据库的信息二、备份步骤1.准备工作2.手动备份3.定时任务自动备份 总结 前言 记录一下在k8s运行的数据库的备份步骤。 我的思路是新建一个数据库的容器作为工具容器&#xff0c;通过工具容器执行mysqldump命令进行备份&#xff0c;最后通过定…

宝塔面板部署python web项目详细教程

最近在学langchain&#xff0c;写了一个小案例出来&#xff0c;我刚好有一台服务器&#xff0c;就尝试自己部署一下项目&#xff0c;结果很幸运一遍过&#xff0c;现在记录一下。我的系统是OpenCloudOS 9 目录 1.安装python解释器版本 2.上传项目文件到宝塔面板 3.添加项目…

IT选型指南:电信行业需要怎样的服务器?

从第一条电报发出的 那一刻起 电信技术便踏上了飞速发展的征程 百余年间 将世界编织成一个紧密相连的整体 而在今年 我们迎来了第25届世界电信日 同时也是国际电联成立的第160周年 本届世界电信日的主题为:“弥合性别数字鸿沟,为所有人创造机遇”,但在新兴技术浪潮汹涌…

OAuth协议中的Token、Ticket

OAuth协议中的核心概念&#xff08;如Token、Ticket等&#xff09;可以通过日常生活中的类比来形象理解&#xff1a; 1. 门票&#xff08;Ticket&#xff09; vs 令牌&#xff08;Token&#xff09;类比 概念现实类比OAuth中的表现Ticket电影院纸质票&#x1f3ab;短期有效的临…

80x86CPU入栈与出栈操作

一、栈操作&#xff1a;入栈push&#xff0c;出栈pop 栈操作&#xff1a;FILO&#xff08;先进后出机制&#xff09; 栈顶的指针&#xff1a;ss:sp决定&#xff0c;任意时刻栈顶指针指向SS:SP的位置 对于8086CPU 入栈时&#xff1a;sp-2 出栈时&#xff1a;sp2 assume cs…

最优控制:从变分法到庞特里亚金原理

典型问题 根据系统的建模可以划分为&#xff1a; 线性系统&#xff1a; x ˙ A x B u \mathbf{\dot{x}} \boldsymbol{A}\mathbf{x}\boldsymbol{B}\mathbf{u} x˙AxBu非线性系统 x ˙ ( t ) f ( x ( t ) , u ( t ) , t ) \dot{\mathbf{x}}(t) \mathbf{f}(\mathbf{x}(t)…

DeepSeek 提示词大全

目录 前言一、提示词基础理论 什么是提示词提示词的类型提示词的基本结构 二、提示词设计原则 明确指令结构化表达情境化需求渐进式引导边界与限制 三、场景化提示词模板 写作创作类角色扮演类信息提取类代码编程类教育学习类商业营销类生活助手类 四、提示词优化技巧 迭代式优…

安科瑞Acrelcloud-6200系统:智慧路灯安全用电监控平台架构解析

安科瑞顾强———Acrelgq 智慧路灯作为智慧城市与新基建的核心载体&#xff0c;集成了大量异元异构电子设备&#xff0c;其供电安全与能效管理面临电压多样、权属分散、扩展性不足等挑战。本文提出一种融合统一供电、分路计量、智能防护与远程监控的解决方案&#xff0c;通过构…

DMBOK对比知识点对比(1)

1.CDGP各章活动 章节一级

css设置动态数值:clamp函数

CSS 的 clamp() 函数是一个强大的工具&#xff0c;用于创建响应式且范围可控的动态值。它结合了min() 和max() 的逻辑&#xff0c;允许你定义一个值在最小值和最大值之间动态调整。 语法为&#xff1a; clamp(最小值, 首选值, 最大值)&#xff1b; 工作原理&#xff1a; 当 …

数值计算与数据相关参数剖析:保障模型训练稳定与准确

一、计算类型&#xff1a;以BF16为例 1.1 核心作用 BF16 是一种计算方式&#xff0c;它能让模型训练更快&#xff0c;还省内存。比如训练模型时&#xff0c;用普通方式可能很慢&#xff0c;占内存也多&#xff0c;而 BF16 就像给模型开了 “加速键”&#xff0c;训练起来更高…