LVS—DR模式

LVS—DR模式

LVS DR 模式详细简介

一、模式定义与核心原理

LVS DR(Direct Routing)模式,即直接路由模式,是 Linux Virtual Server(LVS)实现负载均衡的经典模式之一,工作于网络四层(传输层)。其核心原理为:客户端向负载均衡调度器(Director Server,简称 DS)发起请求,DS 接收到数据包后,仅修改数据包的目标 MAC 地址为后端真实服务器(Real Server,简称 RS)的 MAC 地址,源 IP 和目标 IP 地址保持不变,随后将数据包转发至 RS;RS 处理完请求后,直接将响应数据返回给客户端,无需再次经过 DS,实现了请求与响应路径的分离。

二、数据流走向详解

(一)请求阶段

  1. 客户端(Client)发送请求,数据包的源 IP 为客户端 IP(CIP),目标 IP 为虚拟 IP(VIP,绑定在 DS 上),源 MAC 为客户端 MAC,目标 MAC 为 DS 的 MAC。

  2. 数据包到达 DS 后,经过 PREROUTING 链进入内核,IPVS 模块判断请求属于集群服务,将目标 MAC 地址修改为后端某台 RS 的 MAC 地址,源 MAC 改为 DS 的 MAC,IP 地址不变,然后通过 POSTROUTING 链将数据包转发给对应的 RS。

(二)响应阶段

  1. RS 接收到数据包后,由于目标 MAC 是自己的 MAC 地址,开始处理请求。处理完成后,RS 将响应数据包的源 IP 设置为 VIP(因为请求的目标 IP 是 VIP),目标 IP 设置为 CIP,源 MAC 为 RS 的 MAC,目标 MAC 为客户端 MAC。

  2. 响应数据包直接从 RS 发送回客户端,不经过 DS。

为更直观呈现,可用流程图展示:

三、核心优势

  1. 高吞吐量与低延迟:DS 仅负责请求调度,响应数据直接由 RS 返回客户端,减少了 DS 的处理压力,大幅提升系统的吞吐量和响应速度,能高效处理高并发请求。

  2. 灵活的 IP 配置:RS 可以使用私有地址,降低成本;也可使用公网地址,满足特定的访问需求,网络部署更加灵活。

  3. 良好的扩展性:通过增加 RS 的数量,可轻松扩展集群的处理能力,适应业务规模的增长。

  4. 资源利用率高:由于 DS 负载轻,无需配置高性能设备,降低硬件成本,同时充分利用 RS 的计算资源。

四、典型使用场景

  1. 大型网站与电商平台:在 “双十一” 等大促活动期间,面临海量用户访问,LVS DR 模式能快速分发请求,保障系统稳定运行,提升用户购物体验。

  2. 内容分发网络(CDN):用于将静态资源(如图片、视频、脚本文件等)缓存到分布在各地的 RS 上,用户请求时通过 DR 模式快速获取资源,加速网页加载速度。

  3. 在线游戏服务器:游戏在线人数众多,对实时性要求高,DR 模式可实现高效的流量分发,确保游戏服务器稳定运行,减少玩家延迟卡顿现象。

  4. 企业内部应用系统:企业内部的 ERP、OA 等系统,在多人同时访问时,LVS DR 模式能均衡负载,提高系统可用性和响应效率。

示例

环境配置

101 =nfs

102=web1

103=web2

104=lvs

105=客户端

配置lvs

[root@bogon ~]# cd /etc/sysconfig/network-scripts/
[root@bogon network-scripts]# ls
ifcfg-ens160
[root@bogon network-scripts]# cp ifcfg-ens160 ifcfg-ens160:0
[root@bogon network-scripts]# ls
ifcfg-ens160  ifcfg-ens160:0
[root@bogon network-scripts]# vim ifcfg-ens160:0
[root@bogon network-scripts]# nmcli c reload
[root@bogon network-scripts]# nmcli c up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/3)
###编辑虚拟网卡配置地址为vip 192.168.10.172
[root@bogon network-scripts]# ipvsadm -A -t 192.168.10.172:80 -s wrr
[root@bogon network-scripts]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.102 -g -w 1
[root@bogon network-scripts]# ipvsadm -a -t 192.168.10.172:80 -r 192.168.10.103 -g -w 1
[root@bogon network-scripts]# ipvsadm -ln
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  192.168.10.172:80 wrr-> 192.168.10.102:80            Route   1      0          0         -> 192.168.10.103:80            Route   1      0          0         

配置web

[root@bogon ~]#  ip addr add 192.168.10.172/32 dev lo label  lo:0
[root@bogon ~]# ifconfig
[root@bogon ~]# ip route add local 192.168.10.172/32 dev lo[root@bogon ~]# vim /etc/rc.local #!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.touch /var/lock/subsys/local
ip addr add 192.168.10.172/32 dev lo label lo:0
ip route add local 192.168.10.172/32 deb lo
~                                                  [root@bogon ~]# chmod +x /etc/rc.local 
###重启查看是否生效
[root@bogon ~]# vim /etc/sysctl.conf 
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce=2
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=1
[root@bogon ~]# sysctl -p

代码解释

# 添加一个回环接口别名,绑定IP地址192.168.10.172到lo:0
ip addr add 192.168.10.172/32 dev lo label  lo:0# 查看网络接口配置(ifconfig为旧版命令,推荐使用ip addr)
ifconfig# 添加一条本地路由规则,确保该IP地址的流量通过回环接口处理
ip route add local 192.168.10.172/32 dev lo# 编辑系统启动脚本,设置开机自动执行网络配置
vim /etc/rc.local #!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
# ...(原有注释保持不变)...# 创建锁文件标记脚本已执行
touch /var/lock/subsys/local# 开机自动添加回环接口别名
ip addr add 192.168.10.172/32 dev lo label lo:0# 开机自动添加本地路由(注意:原命令中"deb"为拼写错误,已修正为"dev")
ip route add local 192.168.10.172/32 dev lo# 赋予启动脚本执行权限
chmod +x /etc/rc.local ###重启查看是否生效# 编辑系统内核参数配置文件
vim /etc/sysctl.conf # ARP优化参数配置说明:
# arp_ignore=1: 仅在接收到的ARP请求所请求的IP地址
# 配置在接收网卡上时,才给予响应
net.ipv4.conf.all.arp_ignore=1# arp_announce=2: 总是使用最合适的本地地址来响应对端的ARP请求
# (确保从正确的网卡发送ARP响应)
net.ipv4.conf.all.arp_announce=2# 对默认接口应用相同的ARP优化策略
net.ipv4.conf.default.arp_ignore=1
net.ipv4.conf.default.arp_announce=2# 对回环接口应用ARP优化策略(注意:此处arp_announce设为1,
# 表示尽量使用合适的本地地址响应,与all/default的策略略有不同)
net.ipv4.conf.lo.arp_ignore=1
net.ipv4.conf.lo.arp_announce=1# 使sysctl配置立即生效
sysctl -p

配置nfs

[root@bogon wwwroot]# vim /etc/exports
/opt/wwwroot 192.168.10.0/24(rw,sync,no_root_squash)

在两台web上

[root@bogon html]# mount 192.168.10.101:/opt/wwwroot /var/www/html/

验证

[root@bogon html]# df -hT
文件系统                    类型      大小  已用  可用 已用% 挂载点
/dev/mapper/openeuler-root  ext4      191G  1.9G  180G    1% /
devtmpfs                    devtmpfs  4.0M     0  4.0M    0% /dev
tmpfs                       tmpfs     1.7G     0  1.7G    0% /dev/shm
tmpfs                       tmpfs     4.0M     0  4.0M    0% /sys/fs/cgroup
tmpfs                       tmpfs     675M  9.1M  666M    2% /run
tmpfs                       tmpfs     1.7G     0  1.7G    0% /tmp
/dev/nvme0n1p2              ext4      974M  174M  733M   20% /boot
192.168.10.101:/opt/wwwroot nfs4      191G  1.8G  180G    1% /var/www/html

客户端访问lvs

[root@localhost ~]# curl 192.168.10.172
web1
[root@localhost ~]# curl 192.168.10.172
web2

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

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

相关文章

宝玉分享VibeCoding构建Agent

借助 Claude Code 完成的一个翻译智能体 (Translator Agent)。你只需输入一段文字、一个网址或一个本地文件路径,它就能自动提取内容并完成翻译。更酷的是,它还能修正原文中的拼写错误,确保译文的准确流畅。 到底什么是“真正的”AI Agent&a…

在spring boot中使用Logback

在 Spring Boot 中使用 Logback 作为日志框架是开发中的常见需求,因其高性能和灵活配置而广受青睐。以下是详细实践指南,结合了配置方法、代码示例及最佳实践: 🔧 一、依赖配置 Spring Boot 默认集成了 Logback,无需手…

腾讯云 Lighthouse 轻量应用服务器:数据驱动的架构选型指南

摘要:腾讯云 Lighthouse 作为面向轻量级应用场景的优化解决方案,通过高性价比套餐式售卖、开箱即用应用模板及流量包计费模式,显著降低中小企业与开发者的上云门槛。本文基于性能测试与横向对比,量化分析其核心优势与适用边界。 …

Linux TCP/IP协议栈中的TCP输入处理:net/ipv4/tcp_input.c解析

在网络通信领域,TCP(传输控制协议)因其可靠的面向连接特性而被广泛应用。Linux内核的TCP/IP协议栈实现了对TCP协议的高效处理,其中net/ipv4/tcp_input.c文件扮演着关键角色,负责处理TCP数据包的输入逻辑。下面是对该文件核心功能的深入剖析。 一、TCP数据包接收与处理 (…

物联网传输网关、RTU、DTU及SCADA系统技术解析

目录 摘要 一、引言 二、物联网传输网关 1. 定义 2. 类型 3. 分类 4. 工作原理 5. 差异分析 总结: 三、RTU(远程终端单元) 1. 定义 2. 工作原理 3. 特点 4. 应用场景 四、DTU(数据传输单元) 1. 定义 …

【unity游戏开发——热更新】YooAsset简化资源加载、打包、更新等流程

注意:考虑到热更新的内容比较多,我将热更新的内容分开,并全部整合放在【unity游戏开发——热更新】专栏里,感兴趣的小伙伴可以前往逐一查看学习。 文章目录 前言1、什么是YooAsset?2、系统需求3、系统特点 一、下载安装…

AWS RDS/Aurora 开启 Database Insights 高级模式全攻略

想要深入了解数据库性能问题?AWS Database Insights 高级模式为您提供强大的性能分析工具。本文详细对比标准模式与高级模式的功能差异,并提供完整的启用指南和实战测试结果。 一、Database Insights 模式对比 AWS CloudWatch Database Insights 提供两种模式:标准模式和高…

XML SimpleXML

XML SimpleXML 引言 XML(可扩展标记语言)是一种用于存储和传输数据的标记语言,它被广泛应用于Web服务和数据交换。SimpleXML是PHP中一个处理XML数据非常便捷的库。本文将详细介绍SimpleXML库的基本用法,帮助读者快速掌握XML数据…

Docker简单介绍与使用以及下载对应镜像(项目前置)

DockerDocker安装Docker卸载Docker配置镜像源配置镜像加速 Docker服务命令1.镜像操作命令2.容器操作命令 安装Mysql**数据卷挂载** Docker 在linux中软件安装说起: 以前在linux中安装软件,是直接安装在linux操作系统中,软件和操作系统耦合度很高,不方便管理. 因为linux版本不…

MyBatis 简介

MyBatis 简介 MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射,能够帮助开发者将 Java 对象与数据库表进行灵活映射,简化数据持久化操作。以下从多个维度详细介绍 MyBatis: 一、核心定位与优势 轻量级…

自监督学习在合成孔径声呐目标识别中的应用之论文阅读

自监督学习在合成孔径声呐目标识别中的应用 BW Sheffield 美国巴拿马城海军水面作战中心 1 引言 在自主水下航行器(AUVs)中应用计算机视觉面临着独特的挑战,因为海洋环境往往条件不可预测且极为严苛。传统计算机视觉研究主要依赖光学相机成像,而在光照不足、悬浮沉积物及水…

进程间通信2(命名管道)linux

1 命名管道 前面讲到匿名管道,有一个很大的限制,那就是只有具有相同祖先(具有亲缘关系)的进程间才能进行通信,但是如果想实现不同进程间的通信,这个时候命名管道就发挥着巨大作用。 命名管道是一种特殊类…

简单通过SenseVoice给自己配置一个语音转文字服务

首先把代码下载下来 gitgithub.com:FunAudioLLM/SenseVoice.git 然后写一个docker文件 FROM ubuntu:latestRUN apt-get update -y RUN apt-get install -y python3-full python3-pip RUN mkdir -p /SenseVoice WORKDIR /SenseVoice RUN python3 -m venv . ENV USE_CUDA0 EXP…

网络钓鱼攻击

​根据2023年Proofpoint年度网络钓鱼报告显示:91%的针对性攻击始于钓鱼邮件,平均每30秒就有一个企业成为攻击目标,全球损失超过$6.5B​ 一、钓鱼攻击技术深度解析 1. 钓鱼攻击核心技术架构 2. 现代钓鱼技术演进 ​攻击向量升级路线​ ​当前…

uvicorn api:app --host 0.0.0.0 --port 7777容器运行失败

docker logs pycorrector-container-gpu 你这个报错的核心是: ERROR: Error loading ASGI app, Could not import module "api".这说明: uvicorn api:app 没有找到 api.py 文件,或者没法导入 app 对象。 🔍 一步步排查…

热成像仪测MOSFET温度

热成像仪测MOSFET温度 根据提供的搜索结果,热测量方法主要分为非接触式和接触式两大类,针对不同材料特性和测量场景各有优势。以下是核心方法的总结及关键技术要点: 🔥 一、非接触式热测量方法 红外热成像技术 原理:通…

Dagster资产元数据与标签:数据治理的利器

在现代数据栈中,有效的数据治理至关重要。Dagster作为领先的数据编排平台,提供了强大的资产元数据和标签功能,帮助团队更好地理解、组织和跟踪数据资产。本文将深入探讨Dagster中的资产元数据和标签功能,展示如何利用这些功能提升…

基于物联网的智能饮水机系统设计

标题:基于物联网的智能饮水机系统设计 内容:1.摘要 随着物联网技术的快速发展,智能设备在日常生活中的应用越来越广泛。本研究的目的是设计一种基于物联网的智能饮水机系统,以提高饮水机的使用便捷性和智能化程度。方法上,通过传感器实时监测…

DP读书:NEC年终小结和显示器【明基rd28u】

一点真实体验_写在ROBOCON2025国赛前 很久没有写这种关于感受的博客了,就用真实感受的角度来看看一次众测的经历,哈哈^ 差不多一个月前,我收到了明基的28寸显示器,体验了差不多2周左右,一直把显示器挂在实验室仓库La…

Solana 一键冷分仓机制详解:如何用技术手段构建健康的持仓结构

在 Solana 的快速发币环境中,许多项目方在成功部署代币后,会面临一个共通问题——如何避免持仓结构过于集中。无论是初始铸造的 Token、流动性预留份额,还是空投分发的准备金,如果长时间停留在单一钱包地址中,将在链上…