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

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 与基于 openEuler 构建 LVS-DR 群集

一、 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势

NAT 模式

部署简单:NAT 模式下,所有的服务器节点只需要连接到同一个局域网内,通过负载均衡器进行网络地址转换,就可以实现负载均衡功能。不需要对服务器节点的网络配置进行复杂的修改,也不需要特殊的网络设备支持,易于部署和维护。

对服务器要求低:服务器节点无需特殊配置,它们可以使用私有 IP 地址,通过负载均衡器进行 NAT 转换后对外提供服务。这使得在现有的网络环境中添加新的服务器节点变得较为容易,无需担心 IP 地址冲突等问题。

安全性较高:由于服务器节点使用私有 IP 地址,对外隐藏了内部网络结构,外部网络只能看到负载均衡器的公网 IP 地址,一定程度上提高了内部服务器的安全性,减少了外部攻击的暴露面。

支持端口映射:可以方便地实现端口映射功能,将外部请求的不同端口映射到内部服务器的不同端口或服务上,灵活地满足各种应用场景的需求,例如可以将外部的 80 端口请求映射到内部服务器的不同 Web 服务端口。

DR 模式

性能高效:DR 模式下,负载均衡器只负责将请求分发到后端服务器,后端服务器直接将响应数据包返回给客户端,无需经过负载均衡器再次转发。这样大大减少了负载均衡器的处理压力,提高了整个系统的响应速度和吞吐量,能够处理大量的并发请求。

支持大流量:由于响应数据直接从后端服务器返回给客户端,避免了 NAT 模式下可能出现的负载均衡器带宽瓶颈问题,特别适合处理大流量的网络服务,如大型网站、视频流服务等。

对网络依赖小:相比其他一些模式,DR 模式对网络的依赖相对较小,不需要特殊的网络设备支持复杂的功能。只需要保证负载均衡器和后端服务器之间的网络连接正常,并且能够进行正确的路由配置即可。

服务器可扩展性好:在 DR 模式下,添加或删除后端服务器节点对整个系统的影响较小,只需要在负载均衡器上进行相应的配置调整,后端服务器可以独立地进行扩展或收缩,方便实现系统的弹性扩展,以满足业务量的变化需求。

二 、LVS-DR 群集

1.环境

3台openEuler加一台rocky或4台openEuler

调度器 192.168.1.11

RS1  192.168.1.12

RS2  192.168.1.13

客户端  192.168.1.14

VIP 192.168.1.10/32

2.配置RS(两台都要)

2.1安装ngix,静态页面

[root@openEuler-1 ~]# yum install nginx -y
[root@openEuler-1 ~]# echo "web test page,ip is `hostname -I`" > /usr/share/nginx/html/index.html
[root@openEuler-1 ~]# systemctl enable --now nginx

2.2绑定VIP

[root@openEuler-1 ~]# curl localhost
web test page,ip is 192.168.1.12 
[root@openEuler-1 ~]# nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.1.10/32
Connection 'dummy-dummy1' (8d1da361-2b2f-4242-8926-6cead4ce9814) successfully added.[root@openEuler-1 ~]# curl localhost
web test page,ip is 192.168.1.13
[root@openEuler-1 ~]# nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.1.10/32
Connection 'dummy-dummy1' (6140825e-f6c6-498c-972a-8845f28af910) successfully added.

2.3arp抑制

[root@openEuler-1 ~]# vim /etc/sysctl.conf 

添加下列内容

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2
net.ipv4.conf.dummy1.arp_ignore=1
net.ipv4.conf.dummy1.arp_announce=2

输入下列代码使其生效

[root@openEuler-1 ~]# sysctl -p

3.配置调度器

3.1绑定VIP

[root@openEuler-1 ~]# nmcli con add type dummy ifname dummy1 ipv4.method manual ipv4.addresses 192.168.1.10/32
Connection 'dummy-dummy1' (d830eb43-e633-45d7-8702-1d7327ffd717) successfully added.

3.2安装ipvsadm

[root@openEuler-1 ~]# yum install ipvsadm -y

3.3配置LVS-DR

[root@openEuler-1 ~]# ipvsadm -At 192.168.1.10:80 -s rr 
[root@openEuler-1 ~]# ipvsadm -at 192.168.1.10:80 -r 192.168.1.12:80 -g
[root@openEuler-1 ~]# ipvsadm -at 192.168.1.10:80 -r 192.168.1.13:80 -g

4.测试 

相关文章:

对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 与基于 openEuler 构建 LVS-DR 群集

一、 对比 LVS 负载均衡群集的 NAT 模式和 DR 模式,比较其各自的优势 NAT 模式 部署简单:NAT 模式下,所有的服务器节点只需要连接到同一个局域网内,通过负载均衡器进行网络地址转换,就可以实现负载均衡功能。不需要对…...

matplotlib绘制频率分布直方图

1.给了数据,让统计这些数据的分布 from matplotlib import pyplot as plt from matplotlib import rcParams import random as r# 直方图用来统计每个区间数量多少rcParams[font.sans-serif] [SimHei] rcParams[axes.unicode_minus] Falseplt.figure(figsize(20,8), dpi80)#…...

相得益彰,Mendix AI connector 秒连DeepSeek ,实现研发制造域场景

在当今快速发展的科技领域,低代码一体化平台已成为企业数字化转型的关键工具,同时,大型语言模型(LLM)如 DeepSeek 在自动生成代码和提供智能建议方面表现出色。 Mendix 于近期发布的 GenAI 万能连接器,目前…...

shell脚本自动安装MySQL8

环境:centos7版本:8.0.28安装包:mysql-8.0.28-linux-glibc2.12-x86_64.tar.xz 二进制包要求:安装包和shell脚本在同一目录下执行方式:sudo ./install_mysql8.sh #!/bin/bash# 定义MySQL安装目录和压缩包名称MYSQL_DIR…...

Git | 相关命令

相关资料 官网Git 学习教程Git 入门指南Git 的奇技淫巧Git Extras git 命令行扩展工具配置 Git 处理行结束符Git 配置多个 SSH-Key下载相关 Windows 版下载镜像使用 jsdelivr 加速 Github 仓库资源 commit 常用的 type 常用 Git 命令 [xxx] 均为可选参数 git clone # 拷贝一…...

RealClip正式发布:重新定义轻量化数字内容交互体验

在移动互联网流量红利逐渐见顶的当下,用户对即时性、碎片化娱乐与交互体验的需求持续攀升。轻量化小游戏、VR互动、数字孪生、工业仿真等内容形态迅速崛起,但开发者却面临两大核心矛盾:如何将高性能互动内容轻量化嵌入现有应用中?…...

Linux内核 - 非仿生机器人之感知主控系统(协议栈)

Linux内核 - 非仿生机器人之感知主控系统(协议栈) 注:该项目为18年实习期间,参与非仿生六足机器人(Linux方案)的个人理解和积累。时至今日,再看其实仅为一套系统编程相关框架,一直为…...

CZML 格式详解,javascript加载导出CZML文件示例

示例地址:https://dajianshi.blog.csdn.net/article/details/145573994 CZML 格式详解 1. 什么是 CZML? CZML(Cesium Zipped Markup Language)是一种基于 JSON 的文件格式,用于描述地理空间数据和时间动态场景。它专…...

【gRPC-gateway】auth-通过拦截器从上下文中提取元数据用于认证,与从http header转发待认证数据到上下文进行验证,go案例

从grpc上下文中提取元数据用于认证 案例 interceptor.go package serverimport ("context""errors""google.golang.org/grpc""google.golang.org/grpc/metadata""strings" )// UnaryInterceptor 是一个 unary RPC 的拦截器…...

Sass基础知识以及常用知识整理

Sass基础知识以及常用知识整理 一、CSS 功能拓展 注意:>、 、和~的区分 1.1 嵌套规则 Sass 允许将一套 CSS 样式嵌套进另一套样式中,内层的样式将它外层的选择器作为父选择器,例如: #main p {color: #00ff00;width: 97%;…...

Redis 内存回收机制

Redis 是一个基于内存的键值存储系统,为了避免内存耗尽,Redis 提供了多种内存回收机制。以下是 Redis 内存回收的主要方式: 1. 过期键删除 Redis 支持为键设置过期时间,过期后会自动删除键以释放内存。 1.1 设置过期时间 SET key…...

docker安装mongo,导入、导出数据

1、docker安装mongo docker pull mongo docker run -d -p 27017:27017 --name mongodb mongodocker update mongodb --restartalways ## 开机自启动-d:表示以后台模式运行容器。 -p 27017:27017:将容器内部的 MongoDB 默认端口 27017 映射到宿主机的 27…...

Excel常用操作

Excel常用操作 学习资源 37_电子表格处理考点精讲_设置数据格式_哔哩哔哩_bilibili 快速输入数据与编辑数据 一个工作簿可以包含多个工作表 特殊数据的添加格式 输入负数, 例如-3、-5 常规输入, 直接输入-3、-5;使用(), 例如在单元格中输入(3)回车即可变为-3;上述括号不区分中…...

嵌入式EasyRTC实时通话支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc

EasyRTC已经完美支持海思hi3516cv610,编译器arm-v01c02-linux-musleabi-gcc,总体SDK大小控制在680K以内(预计还能压缩100K上下): EasyRTC在hi3516cv610芯片上能双向通话、发送文字以及二进制指令,总体运行…...

在freertos中,中断优先级和任务优先级之间的关系和使用方法

中断优先级和任务优先级如何匹配?任务优先级不同任务之间该用多高的优先级?中断优先级不同中断中该用多高的优先级?中断优先级和任务优先级设置时,怎样设置可以让任务在调度时屏蔽中断?怎样设置可以让任务在调度时&…...

设置ollama接口能外部访问

为了配置Ollama以允许外网访问,你可以按照以下步骤进行操作: ‌确认Ollama服务已正确安装并运行‌: 使用以下命令检查Ollama服务的状态: bash Copy Code systemctl status ollama如果服务未运行,使用以下命令启动它&…...

Go GUI 框架, energy many-browser 示例解读

CEF 在 Go 中的应用实现 示例链接 1. 初始化和配置 在使用 CEF 创建基于浏览器的应用时,首先需要初始化并配置应用实例。 1.1 创建应用实例 // 创建CEF应用实例 app : cef.NewApplication()1.2 配置应用参数 // 设置缓存路径 rootCache : filepath.Join(const…...

Docker 部署 MongoDB | 国内阿里镜像

一、简易单机版 1、镜像拉取 docker pull registry.cn-hangzhou.aliyuncs.com/farerboy/mongo:8.0.5-rc1 2、运行镜像 docker run -it --name mongodb \ -e MONGO_INITDB_ROOT_USERNAMEmongoroot \ -e MONGO_INITDB_ROOT_PASSWORDmongoroot \ -v /wwwroot/opt/docker/mong…...

软件工程-软件设计

包括 从管理的观点看包括: 详细设计 概要设计 从技术的观点看包括: 数据设计(详细设计) 系统结构设计(概要设计) 过程设计(详细设计) 任务 分析模型——》设计模型——》设…...

Elasticsearch:15 年来致力于索引一切,找到重要内容

作者:来自 Elastic Shay Banon 及 Philipp Krenn Elasticsearch 刚刚 15 岁了!回顾过去 15 年的索引和搜索,并展望未来 15 年的相关内容。 Elasticsearch 刚刚成立 15 周年。一切始于 2010 年 2 月的一篇公告博客文章(带有标志性的…...

内存分配函数malloc kmalloc vmalloc

内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命

在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

Nuxt.js 中的路由配置详解

Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...

解决本地部署 SmolVLM2 大语言模型运行 flash-attn 报错

出现的问题 安装 flash-attn 会一直卡在 build 那一步或者运行报错 解决办法 是因为你安装的 flash-attn 版本没有对应上,所以报错,到 https://github.com/Dao-AILab/flash-attention/releases 下载对应版本,cu、torch、cp 的版本一定要对…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解,适合用作学习或写简历项目背景说明。 🧠 一、概念简介:Solidity 合约开发 Solidity 是一种专门为 以太坊(Ethereum)平台编写智能合约的高级编…...

06 Deep learning神经网络编程基础 激活函数 --吴恩达

深度学习激活函数详解 一、核心作用 引入非线性:使神经网络可学习复杂模式控制输出范围:如Sigmoid将输出限制在(0,1)梯度传递:影响反向传播的稳定性二、常见类型及数学表达 Sigmoid σ ( x ) = 1 1 +...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

JS手写代码篇----使用Promise封装AJAX请求

15、使用Promise封装AJAX请求 promise就有reject和resolve了&#xff0c;就不必写成功和失败的回调函数了 const BASEURL ./手写ajax/test.jsonfunction promiseAjax() {return new Promise((resolve, reject) > {const xhr new XMLHttpRequest();xhr.open("get&quo…...

MinIO Docker 部署:仅开放一个端口

MinIO Docker 部署:仅开放一个端口 在实际的服务器部署中,出于安全和管理的考虑,我们可能只能开放一个端口。MinIO 是一个高性能的对象存储服务,支持 Docker 部署,但默认情况下它需要两个端口:一个是 API 端口(用于存储和访问数据),另一个是控制台端口(用于管理界面…...