基于LVS负载均衡练习
对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势。
NAT模式,全称是网络地址转换模式。NAT模式下,负载均衡器(Director)会修改请求和响应的IP地址。客户端的请求先到达Director,Director将请求的目标地址改成后端真实服务器的地址,然后转发给后端服务器。后端服务器处理完请求后,将响应返回给Director,Director再将响应的源地址改回自己的虚拟IP(VIP),最后返回给客户端。这样的话,对于客户端来说,它只知道Director的地址,不知道后端服务器的存在。
DR模式,即直接路由模式。DR模式下,Director和后端服务器都配置了同一个虚拟IP地址。当客户端请求到达Director时,Director通过修改请求的目标MAC地址,将请求转发给选中的后端服务器。后端服务器处理请求后,直接通过自己的网络接口将响应返回给客户端,而不需要经过Director。这样响应数据可以直接从服务器到客户端,减少了Director的负担。
1. NAT模式(Network Address Translation)
-
优势:
-
网络拓扑灵活:
-
后端服务器(Real Server)可使用私有IP地址,无需暴露公网IP。
-
支持跨子网部署,Real Server可位于不同网络环境中(如云服务器跨可用区)。
-
-
配置简单:
-
Real Server无需特殊配置,只需设置默认网关为Director(负载均衡器)。
-
无需修改Real Server的内核参数(如ARP抑制)。
-
-
安全性较高:
-
Real Server隐藏在Director后,对外不可见,避免直接暴露于公网。
-
-
支持端口映射:
-
Director可修改目标端口,实现灵活的端口转换(如将80端口请求转发到后端8080端口)。
-
-
-
适用场景:
-
中小规模流量场景。
-
需要跨子网或混合云部署。
-
对后端服务器安全性要求较高。
-
2. DR模式(Direct Routing)
-
优势:
-
高性能与低延迟:
-
响应数据直接由Real Server返回客户端,无需经过Director,避免带宽瓶颈。
-
吞吐量高,适合高并发、大流量场景(如视频流、大规模Web应用)。
-
-
扩展性强:
-
Director仅处理入站请求,后端服务器数量增加时性能影响较小。
-
-
资源利用率高:
-
Real Server直接使用公网带宽,减轻Director的网络负载。
-
-
-
适用场景:
-
高并发、大流量场景(如电商大促、在线游戏)。
-
对吞吐量和延迟敏感的服务。
-
需充分利用Real Server的公网带宽。
-
关键对比总结
特性 | NAT模式 | DR模式 |
---|---|---|
网络拓扑 | 支持跨子网,Real Server可私有IP | 必须同一局域网,Real Server需公网IP |
性能 | 受限于Director的带宽和处理能力 | 高性能,Real Server直接响应客户端 |
配置复杂度 | 简单(Real Server无需特殊配置) | 复杂(需配置ARP抑制、VIP绑定等) |
安全性 | 高(Real Server隐藏) | 较低(Real Server暴露公网IP) |
端口映射 | 支持 | 不支持 |
适用规模 | 中小规模 | 大规模、高并发 |
选择建议
-
NAT模式:适合网络环境复杂、对安全性要求高、流量适中的场景。
-
DR模式:适合追求极致性能、大流量且网络环境可控的场景。
实际部署中,可结合两者优势,例如在DR模式下通过Keepalived实现Director的高可用,进一步提升系统可靠性。
基于 openEuler 构建 LVS-DR 群集
1. 环境准备
-
操作系统:openEuler 20.03 LTS 或更高版本。
-
网络拓扑:
-
Director:1台,配置双网卡(一个公网IP,一个内网IP)。
-
Real Server:至少2台,配置内网IP。
-
客户端:1台,用于测试。
-
-
IP规划:
-
Director:
-
公网IP(VIP):
192.168.234.10
-
内网IP(DIP):192.168.234.11
-
-
Real Server 1:
-
内网IP(RIP):192.168.234.14
-
-
Real Server 2:
-
内网IP(RIP):
192.168.234.15
-
-
客户端:
-
公网IP:
192.168.234.13
-
-
配置 Real Server(后端服务器)
在 Real Server 上启动 Web 服务
在两个Real Server上安装并启动nginx服务:
yum install nginx -y systemctl start nginx systemctl enable nginx
在Real Server 1上创建测试页面
echo "web test page,ip is `hostname -I`" > /usr/share/nginx/html/index.html![]()
在Real Server 2上创建测试页面
echo "web test page,ip is `hostname -I`" > /usr/share/nginx/html/index.html
在两个Real Server上都绑定VIP
nmcli connection add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.234.10/32
ip address查看:
配置 ARP 抑制
防止Real Server响应VIP的ARP请求:
vim /etc/sysctl.conf
,添加以下内容:
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
应用配置:
sysctl -p
配置 Director(负载均衡器)
1.安装 LVS 工具
yum install ipvsadm -y
2.配置 VIP
nmcli connection add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.234.10/32
3. 配置 LVS 规则
使用 ipvsadm
配置负载均衡规则:
ipvsadm -A -t 192.168.234.10:80 -s rr
ipvsadm -a -t 192.168.234.10:80 -r 192.168.234.14:80 -g
ipvsadm -a -t 192.168.234.10:80 -r 192.168.234.15:80 -g
4.在Director上查看LVS状态:
ipvsadm -Ln
5.从客户端访问 VIP
在客户端使用 curl
或浏览器访问VIP:
相关文章:

基于LVS负载均衡练习
对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势。 NAT模式,全称是网络地址转换模式。NAT模式下,负载均衡器(Director)会修改请求和响应的IP地址。客户端的请求先到达Director,Director将请…...

在 rtthread中,rt_list_entry (rt_container_of) 已知结构体成员的地址,反推出结构体的首地址
rt_list_entry (rt_container_of)宏定义: /*** rt_container_of - return the start address of struct type, while ptr is the* member of struct type.*/ #define rt_container_of(ptr, type, member) \((type *)((char *)(ptr) - (unsigned long)(&((type *…...
数组_二分查找
数组_二分查找 一、leetcode-572二、题解1.代码2.思考 一、leetcode-572 二分查找 给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则…...

VUE环境搭建
node.js安装 node npm – node Package Management 安装完成后,需要设置: npm config set prefix "D:\nodejs"注意:“D:\nodejs” 此处为自己安装的node.js路径。管理员身份运行 切换镜像源 npm config set registry https://r…...

MATLAB图像处理:Sobel、Roberts、Canny等边缘检测算子
边缘是图像中像素值剧烈变化的区域,反映了目标的轮廓、纹理等关键信息。边缘检测是图像分割、目标识别等任务的基础。本文将系统解析 六种经典边缘检测算子 的数学原理、实现方法及适用场景,并给出完整的MATLAB代码示例和对比分析。 1. 边缘检测基础 1…...
C++ 标准库常见容器
容器类型类型分类特点示例代码vector序列容器动态数组,支持随机访问,末尾操作效率高std::vector v {1, 2, 3}; v.push_back(4);deque序列容器双端队列,支持两端操作和随机访问std::deque d {1, 2, 3}; d.push_front(0);list序列容器双向链表…...
Ubuntu+Laravel+MQ+Supervisor队列系统搭建流程
1、安装MQ环境 sudo apt install -y rabbitmq-server sudo systemctl enable rabbitmq-server --now 2、进入laravel项目,安装MQ队列驱动 composer require vladimir-yuldashev/laravel-queue-rabbitmq 3、配置 .env QUEUE_CONNECTIONrabbitmq RABBITMQ_HOST12…...

力扣100. 相同的树(利用分解思想解决)
Problem: 100. 相同的树 文章目录 题目描述思路Code 题目描述 思路 题目要求判断两个二叉树是否完全相同,而此要求可以利用问题分解的思想解决,即判断当前节点的左右子树是否完全相同,而在二叉树问题分解的一般题目中均会带有返回值ÿ…...
全面了解HTTP(一)
全面了解HTTP(二)-CSDN博客 web及网络基础 使用HTTP协议访问web: HTTP: 网络基础TCP/IP 与HTTP关系密切的协议:IP,TCP,DNS 负责域名解析的DNS服务 各种协议与HTTP协议的关系 URI和URL 简单的HTTP协议 HTTP协议用于客户端和服…...
element-ui时间组件同一个月内选择/30天内选择
element-ui时间组件同一个月内选择/30天内选择 同一个月 <el-date-picker v-model"time" type"datetimerange"range-separator"至" start-placeholder"开始时间"value-format"timestamp" :picker-options"pickerO…...

NO.18十六届蓝桥杯备战|循环嵌套|乘法表|斐波那契|质数|水仙花数|(C++)
循环嵌套 循环嵌套的使⽤ while , do while , for ,这三种循环往往会嵌套在⼀起才能更好的解决问题,就是我们所说的:循环嵌套。这三种循环都可以任意嵌套使⽤ ⽐如: 写⼀个代码,打印⼀个乘法⼝…...

深入浅出Java反射:掌握动态编程的艺术
小程一言反射何为反射反射核心类反射的基本使用获取Class对象创建对象调用方法访问字段 示例程序应用场景优缺点分析优点缺点 注意 再深入一些反射与泛型反射与注解反射与动态代理反射与类加载器 结语 小程一言 本专栏是对Java知识点的总结。在学习Java的过程中,学习…...

大模型被偷家?CNN结合多模态!
2025深度学习发论文&模型涨点之—— CNN多模态 卷积神经网络是一种特殊类型的神经网络,其主要结构包括卷积层、池化层、全连接层和输出层。卷积层通过卷积操作学习图像的特征,池化层通过下采样操作减少参数数量,全连接层和输出层通过分类…...
UI自动化测试的优缺点?
优点 • 提高测试效率:可以快速地重复执行测试用例。例如,对于一个有大量表单需要验证的网页应用,自动化测试可以在短时间内完成多次输入检查,而手动测试则会花费大量时间。 • 保证测试一致性:每次执行测试的步骤和…...
在 Kubernetes (K8s) 环境中,备份 PostgreSQL 数据库
在 Kubernetes (K8s) 环境中,备份 PostgreSQL 数据库有一些特殊的考虑,因为数据库通常运行在容器中,并且数据存储在卷(如 PersistentVolume)中。你可以通过几种方式在外部备份 PostgreSQL 数据库,下面是一些…...
机器视觉中的3d和2d的区别
在机器视觉中,3D和2D的主要区别体现在数据的维度、处理方式及应用场景上。以下是具体对比: 数据维度 2D视觉 :处理二维图像,仅包含宽度和高度信息,通常以像素矩阵表示。 3D视觉 :处理三维数据,…...

exr 格式下 全景图(经纬图、panorama)转 cubemap
先上效果 (X, -X, Y, -Y, Z, -Z) 下载 exr 经纬图 笔者用的这张:https://polyhaven.com/a/kloofendal_48d_partly_cloudy_puresky 使用 Openexr 的 exrenvmap 工具 下载 我 build 了一份 3.3.2 版本的,免积分下载。 https:/…...

STM32 ADC介绍(硬件原理篇)
目录 背景 AD转换器 采样与保持 量化 编码 AD转换器转换原理 DA转换原理 AD转换原理 背景 在数字系统的广泛应用中,用数字系统处理模拟量的情况十分普遍,因此引入了模拟信号和数字信号的接口问题。为了解决这一问题,首先利用模数转换…...

snort3.0 获取注册规则(19000多条)
面对生活中的手机、电脑网络监控,很多人都是束手无策的,只不过雁过留声风过留痕,黑客路过就会留下入侵痕迹,比如手机没玩的时候,流量异常的增多,并且一直和某一个IP地址通信很频繁,可能是黑客正…...

【GitHub】装修个人主页
持续更新各种好文,长期更新技能手册,建议关注收藏点赞! 创建仓库,仓库名自己用户名 权限:public 勾选add a README file修改README.md 这里都是运用markdown语法,以及html标签编写的,可以自行修…...

观成科技:隐蔽隧道工具Ligolo-ng加密流量分析
1.工具介绍 Ligolo-ng是一款由go编写的高效隧道工具,该工具基于TUN接口实现其功能,利用反向TCP/TLS连接建立一条隐蔽的通信信道,支持使用Let’s Encrypt自动生成证书。Ligolo-ng的通信隐蔽性体现在其支持多种连接方式,适应复杂网…...

从零实现STL哈希容器:unordered_map/unordered_set封装详解
本篇文章是对C学习的STL哈希容器自主实现部分的学习分享 希望也能为你带来些帮助~ 那咱们废话不多说,直接开始吧! 一、源码结构分析 1. SGISTL30实现剖析 // hash_set核心结构 template <class Value, class HashFcn, ...> class hash_set {ty…...
【服务器压力测试】本地PC电脑作为服务器运行时出现卡顿和资源紧张(Windows/Linux)
要让本地PC电脑作为服务器运行时出现卡顿和资源紧张的情况,可以通过以下几种方式模拟或触发: 1. 增加CPU负载 运行大量计算密集型任务,例如: 使用多线程循环执行复杂计算(如数学运算、加密解密等)。运行图…...

网络编程(UDP编程)
思维导图 UDP基础编程(单播) 1.流程图 服务器:短信的接收方 创建套接字 (socket)-----------------------------------------》有手机指定网络信息-----------------------------------------------》有号码绑定套接字 (bind)--------------…...
Spring AI与Spring Modulith核心技术解析
Spring AI核心架构解析 Spring AI(https://spring.io/projects/spring-ai)作为Spring生态中的AI集成框架,其核心设计理念是通过模块化架构降低AI应用的开发复杂度。与Python生态中的LangChain/LlamaIndex等工具类似,但特别为多语…...
Angular微前端架构:Module Federation + ngx-build-plus (Webpack)
以下是一个完整的 Angular 微前端示例,其中使用的是 Module Federation 和 npx-build-plus 实现了主应用(Shell)与子应用(Remote)的集成。 🛠️ 项目结构 angular-mf/ ├── shell-app/ # 主应用&…...

安全突围:重塑内生安全体系:齐向东在2025年BCS大会的演讲
文章目录 前言第一部分:体系力量是突围之钥第一重困境是体系思想落地不畅。第二重困境是大小体系融合瓶颈。第三重困境是“小体系”运营梗阻。 第二部分:体系矛盾是突围之障一是数据孤岛的障碍。二是投入不足的障碍。三是新旧兼容难的障碍。 第三部分&am…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
人工智能--安全大模型训练计划:基于Fine-tuning + LLM Agent
安全大模型训练计划:基于Fine-tuning LLM Agent 1. 构建高质量安全数据集 目标:为安全大模型创建高质量、去偏、符合伦理的训练数据集,涵盖安全相关任务(如有害内容检测、隐私保护、道德推理等)。 1.1 数据收集 描…...
书籍“之“字形打印矩阵(8)0609
题目 给定一个矩阵matrix,按照"之"字形的方式打印这个矩阵,例如: 1 2 3 4 5 6 7 8 9 10 11 12 ”之“字形打印的结果为:1,…...