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

基于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 题目描述 思路 题目要求判断两个二叉树是否完全相同,而此要求可以利用问题分解的思想解决,即判断当前节点的左右子树是否完全相同,而在二叉树问题分解的一般题目中均会带有返回值&#xff…...

全面了解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 &#xff0c; do while &#xff0c; for &#xff0c;这三种循环往往会嵌套在⼀起才能更好的解决问题&#xff0c;就是我们所说的&#xff1a;循环嵌套。这三种循环都可以任意嵌套使⽤ ⽐如&#xff1a; 写⼀个代码&#xff0c;打印⼀个乘法⼝…...

深入浅出Java反射:掌握动态编程的艺术

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

大模型被偷家?CNN结合多模态!

2025深度学习发论文&模型涨点之—— CNN多模态 卷积神经网络是一种特殊类型的神经网络&#xff0c;其主要结构包括卷积层、池化层、全连接层和输出层。卷积层通过卷积操作学习图像的特征&#xff0c;池化层通过下采样操作减少参数数量&#xff0c;全连接层和输出层通过分类…...

UI自动化测试的优缺点?

优点 • 提高测试效率&#xff1a;可以快速地重复执行测试用例。例如&#xff0c;对于一个有大量表单需要验证的网页应用&#xff0c;自动化测试可以在短时间内完成多次输入检查&#xff0c;而手动测试则会花费大量时间。 • 保证测试一致性&#xff1a;每次执行测试的步骤和…...

在 Kubernetes (K8s) 环境中,备份 PostgreSQL 数据库

在 Kubernetes (K8s) 环境中&#xff0c;备份 PostgreSQL 数据库有一些特殊的考虑&#xff0c;因为数据库通常运行在容器中&#xff0c;并且数据存储在卷&#xff08;如 PersistentVolume&#xff09;中。你可以通过几种方式在外部备份 PostgreSQL 数据库&#xff0c;下面是一些…...

机器视觉中的3d和2d的区别

在机器视觉中&#xff0c;3D和2D的主要区别体现在数据的维度、处理方式及应用场景上。以下是具体对比&#xff1a; 数据维度 2D视觉 &#xff1a;处理二维图像&#xff0c;仅包含宽度和高度信息&#xff0c;通常以像素矩阵表示。 3D视觉 &#xff1a;处理三维数据&#xff0c;…...

exr 格式下 全景图(经纬图、panorama)转 cubemap

先上效果 &#xff08;X, -X, Y, -Y, Z, -Z&#xff09; 下载 exr 经纬图 笔者用的这张&#xff1a;https://polyhaven.com/a/kloofendal_48d_partly_cloudy_puresky 使用 Openexr 的 exrenvmap 工具 下载 我 build 了一份 3.3.2 版本的&#xff0c;免积分下载。 https:/…...

STM32 ADC介绍(硬件原理篇)

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

snort3.0 获取注册规则(19000多条)

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

【GitHub】装修个人主页

持续更新各种好文&#xff0c;长期更新技能手册&#xff0c;建议关注收藏点赞&#xff01; 创建仓库&#xff0c;仓库名自己用户名 权限&#xff1a;public 勾选add a README file修改README.md 这里都是运用markdown语法&#xff0c;以及html标签编写的&#xff0c;可以自行修…...

别急着加内存!从一次OOM到MySQL锁表,我如何用jstack和jvisualvm揪出真凶

从OOM到MySQL锁表&#xff1a;一套完整的问题排查与性能优化实战指南 当线上系统突然崩溃&#xff0c;屏幕上跳出"Memory cgroup out of memory"的红色告警时&#xff0c;大多数开发者的第一反应往往是"赶紧加内存"。但真正的问题往往隐藏在这表面现象之下…...

具身智能新突破:AI驱动机器人迈向真实世界

抱歉&#xff0c;未能检索到过去24小时内符合您特定偏好&#xff08;具身智能、机器人、芯片、大模型&#xff09;的10条高影响力科技新闻。这可能是因为当前时间段内相关领域的重大突破性新闻较少&#xff0c;或者全网实时数据源暂时未更新。不过&#xff0c;基于近期的行业趋…...

如何彻底掌控你的微信聊天数据:WeChatMsg完全解决方案

如何彻底掌控你的微信聊天数据&#xff1a;WeChatMsg完全解决方案 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/WeCha…...

PCL2启动器:打造你的个性化Minecraft游戏中心

PCL2启动器&#xff1a;打造你的个性化Minecraft游戏中心 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher&#xff08;PCL&#xff09;。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 想要一个既美观又强大的Minecraft启动器吗&#xff1f;PCL2启动器…...

LibreDWG:解放AutoCAD文件的瑞士军刀,3个实用场景教你玩转开源CAD处理

LibreDWG&#xff1a;解放AutoCAD文件的瑞士军刀&#xff0c;3个实用场景教你玩转开源CAD处理 【免费下载链接】libredwg Official mirror of libredwg. With CI hooks and nightly releases. PRs ok 项目地址: https://gitcode.com/gh_mirrors/li/libredwg 还在为无法打…...

10分钟精通D3KeyHelper:暗黑3自动化操作终极实战指南

10分钟精通D3KeyHelper&#xff1a;暗黑3自动化操作终极实战指南 【免费下载链接】D3keyHelper D3KeyHelper是一个有图形界面&#xff0c;可自定义配置的暗黑3鼠标宏工具。 项目地址: https://gitcode.com/gh_mirrors/d3/D3keyHelper 厌倦了在暗黑破坏神3中重复按技能键…...

初创团队如何利用 Taotoken 低成本启动 AI 功能开发

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 初创团队如何利用 Taotoken 低成本启动 AI 功能开发 对于初创团队和独立开发者而言&#xff0c;在项目早期验证一个 AI 驱动的产品…...

别再让无人机‘炸机’了!手把手教你用BB响设置3.6V安全报警值(附常见误区)

无人机电池安全守护者&#xff1a;BB响3.6V报警值设置全攻略 户外飞行时最令人心惊的瞬间莫过于无人机突然断电坠落——这种被称为"炸机"的意外&#xff0c;往往源于对电池电压的误判。而一个售价不足20元的小工具BB响&#xff0c;却能成为你飞行安全的最后防线。本文…...

在Android Studio里集成MediaPipe手势识别,从编译AAR到跑通Demo的完整避坑指南

Android Studio集成MediaPipe手势识别实战&#xff1a;从编译AAR到Demo调优全流程 在移动端实现实时手势交互一直是计算机视觉领域的核心挑战。MediaPipe作为Google开源的跨平台机器学习管道框架&#xff0c;其手部关键点检测方案在延迟和精度之间取得了出色平衡。本文将带你在…...

认知驱动AI安全测试:P-E-R框架与因果图推理实战解析

1. 项目概述&#xff1a;一个认知驱动的AI安全测试代理最近几年&#xff0c;大语言模型&#xff08;LLM&#xff09;在自动化任务处理上展现出了惊人的潜力&#xff0c;但将其应用于像渗透测试这样复杂、动态且需要深度推理的领域&#xff0c;一直是个巨大的挑战。传统的自动化…...