rocky9.2的lvs的NAT模式下的基本使用的详细示例
文章目录
- 前言
- 什么是LVS?(Linux Virtual Server)
- LVS的组成
- 1. 负载均衡器(Load Balancer)
- 2. 后端服务器池(Real Servers)
- 3. IPVS(IP Virtual Server)
- 4. 调度算法(Scheduling Algorithms)
- 5. 转发模式(Forwarding Methods)
- 6. Health Check(健康检查)
- 7. Keepalived
- 8. 控制接口(Control Interface)
- 使用示例(NAT模式)
- 基本环境
- 实现过程
- 1.安装ipvsadm
- 2.开启路由转发
- 3.创建虚拟服务器
- 4.web1.web2添加访问页面
- 5.访问
- 访问不到的原因
- 1.lvs主机没有开启路由转发功能
- 2.web主机的网关没有指向lvs主机
前言
什么是LVS?(Linux Virtual Server)
LVS 是 Linux Virtual Server 的缩写,它是一种用于构建高度可扩展、高性能和高可用性服务器集群的负载均衡解决方案。LVS 通常用于互联网服务中来实现服务器的负载均衡和高可用性,目的是通过将请求分发到多个服务器,来提高系统的处理能力和可靠性。
LVS的组成
LVS(Linux Virtual Server)主要由以下几个核心组成部分构成,它们共同合作来实现负载均衡和高可用性功能
1. 负载均衡器(Load Balancer)
这是 LVS 系统的核心部分,负责接收客户端的请求并将这些请求分发到后端的服务器池中。它主要通过调度算法和不同的转发模式(如 NAT、DR、TUN)来决定请求的分配方式。
2. 后端服务器池(Real Servers)
后端服务器池是实际提供服务的服务器集合。客户端的请求会被负载均衡器转发到这些服务器上。每台服务器通常运行相同的应用或服务,以确保负载均衡分配的均匀性。后端服务器在实际工作中被称为 Real Servers。
3. IPVS(IP Virtual Server)
IPVS 是 LVS 的核心组件,负责基于 IP 层进行负载均衡。它是 Linux 内核中的一个模块,允许系统将客户端的网络流量按照设定的规则转发到后端服务器上。IPVS 支持多种调度算法来分配网络流量,并支持不同的传输协议(如 TCP、UDP 等)。
4. 调度算法(Scheduling Algorithms)
调度算法决定了 LVS 如何将进入的网络请求分发到后端服务器。LVS 支持多种调度算法,
以下是一些常见的算法示例
轮询(Round Robin): 逐个循环分配请求。
加权轮询(Weighted Round Robin): 根据服务器的性能设置权重,权重越高的服务器将收到更多的请求。
最少连接(Least Connections): 将请求发送给当前连接数最少的服务器。
源地址哈希(Source Hash Scheduling): 基于客户端的 IP 地址哈希,将来自同一 IP 的请求始终发送到同一台服务器。
5. 转发模式(Forwarding Methods)
LVS 提供了三种主要的转发模式,用于将客户端请求转发到后端服务器上:
包括以下模式
NAT 模式(Network Address Translation): 通过修改数据包的源地址和目的地址,将请求转发到后端服务器,且返回的响应数据也需要通过负载均衡器来修改并发送给客户端。
简单来说 就是LVS 的 NAT 模式(网络地址转换)就像一个中间人:客户端请求先发送到负载均衡器,负载均衡器再修改数据包的目标地址并转发给后端服务器。后端服务器处理请求后,把响应发回负载均衡器,负载均衡器再修改数据包的源地址,最终将响应发送给客户端。这样,客户端和服务器都只看到负载均衡器的地址,而不知道彼此的真实地址。这个模式适合小规模网络,因为所有流量都要经过负载均衡器,可能成为瓶颈。
DR 模式(Direct Routing): 负载均衡器只负责将请求发给后端服务器,后端服务器直接将响应发送给客户端,不经过负载均衡器,这减少了负载均衡器的压力。
简单来说就是 LVS 的 DR 模式(直接路由)就像是直接派送:客户端的请求首先到达负载均衡器,负载均衡器仅负责将请求转发给后端服务器,而不修改数据包。后端服务器直接将响应发送给客户端,而不是经过负载均衡器。这样,负载均衡器只处理入站请求,出站响应不经过它,减轻了它的负载,适合处理大量流量。不过,需要所有服务器和负载均衡器位于同一网络环境中(共享相同的网关)
TUN 模式(IP Tunneling): 使用 IP 隧道技术,允许后端服务器位于不同的网络中,通过隧道将请求转发给后端服务器,后端服务器直接将响应发送给客户端。
简单来说就是 LVS 的 TUN 模式(隧道模式)像是中转快递:客户端的请求先到达负载均衡器,负载均衡器通过 IP 隧道将请求转发给后端服务器,但与 DR 模式不同的是,后端服务器处理完后直接通过公网将响应发送给客户端。这种模式可以让后端服务器位于不同网络,甚至跨数据中心处理请求,适合大规模、跨区域的高流量场景,不过需要服务器支持 IP 隧道协议(IPIP)。
6. Health Check(健康检查)
LVS 通常会结合健康检查机制来监控后端服务器的状态,确保服务器在健康状态下处理请求。如果某个服务器发生故障,LVS 会自动将该服务器排除在调度之外,防止将请求转发到故障服务器。常用的健康检查工具包括 Keepalived 和 Heartbeat。
7. Keepalived
Keepalived 是一个高可用性和负载均衡解决方案,通常与 LVS 配合使用。它负责管理 LVS 的健康检查和故障切换,当主负载均衡器出现故障时,可以自动将流量切换到备用的负载均衡器,从而确保服务的高可用性。这个以后会再出一篇详细描述
8. 控制接口(Control Interface)
LVS 提供了一些控制工具来管理和配置负载均衡器和服务器池。最常用的工具是 ipvsadm,它允许管理员添加、删除和修改 LVS 的调度规则,并监控 LVS 的运行状态。
使用示例(NAT模式)
基本环境
主机
| ip | 主机名 | 服务 |
|---|---|---|
| 200.0.0.0.1 | client | 客户端 |
| 200.0.0.1,192.168.10.12 | lvs | lvs |
| 192.168.10.13 | web1 | httpd |
| 192.168.10.14 | web2 | httd |
rocky网卡路径
cd /etc/NetworkManager/system-connections
需要注意的是
web1 web2网卡的网关都要指向lvs,即192.168.10.12
lvs主机需要开启路由转发
rocky9.2的双网卡配置请看
链接: https://blog.csdn.net/lwxvgdv/article/details/142334821
实现过程
1.安装ipvsadm
ipvsadm是在负载调度器上使用的LVS 群集管理工具,通过调用ip_vs模块来添加、删除服务器 节点,以及查看群集的运行状态。手动安装 ipvsadm 软件包。
lvs主机上
yum -y install ipvsadm
ipvsadm -v

2.开启路由转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
3.创建虚拟服务器
ipvsadm -A -t 200.0.0.2:80 -s rr
解释
-A:添加一个新的虚拟服务。
-t 200.0.0.2:80:指定虚拟 IP 地址和端口,这里是 200.0.0.2 的 80 端口。
-s rr:设置调度算法为轮询(round-robin)
添加服务器节点(web1 web2)
ipvsadm -a -t 200.0.0.2:80 -r 192.168.10.13:80 -m -w 1
ipvsadm -a -t 200.0.0.2:80 -r 192.168.10.14:80 -m -w 1
解释
第一条命令
-a:添加真实服务器。
-t 200.0.0.2:80:指定虚拟服务。
-r 192.168.10.13:80:指定真实服务器 IP 和端口。
-m:使用 NAT 模式(直接映射)。
-w 1:设置权重为 1,表示负载均衡时的分配比例。
第二条命令 功能相同,只是指定的真实服务器为 192.168.10.14。
4.web1.web2添加访问页面
web1
yum -y install httpd
echo web1 > /var/www/html/index.html
systemctl restart httpd
web2
yum -y install httpd
echo web2 > /var/www/html/index.html
systemctl restart httpd
5.访问
client主机访问

访问不到的原因
1.lvs主机没有开启路由转发功能
命令
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
2.web主机的网关没有指向lvs主机
lvs主机的ip为192.168.10.12
web1的网卡配置
[connection]
id=ens33
uuid=2060138f-8d43-365c-a863-cb0bcbc3e730
type=ethernet
autoconnect-priority=-999
interface-name=ens33[ethernet][ipv4]
method=manual
address1=192.168.10.13/24,192.168.10.12
dns=192.168.10.2;8.8.8.8[ipv6]
addr-gen-mode=eui64
method=auto[proxy]

相关文章:
rocky9.2的lvs的NAT模式下的基本使用的详细示例
文章目录 前言什么是LVS?(Linux Virtual Server)LVS的组成1. 负载均衡器(Load Balancer)2. 后端服务器池(Real Servers)3. IPVS(IP Virtual Server)4. 调度算法(Schedul…...
AI健身之俯卧撑计数和姿态矫正-角度估计
在本项目中,实现了Yolov7-Pose用于人体姿态估计。以下是如何在Windows 11操作系统上设置和运行该项目的详细步骤。 环境准备 首先,确保您的计算机已经安装了Anaconda。Anaconda是一个开源的Python发行版本,它包含了conda、Python以及众多科…...
Java ETL - Apache Beam 简介
基本介绍 Apache Beam是一个用于大数据处理的开源统一编程模型。它允许用户编写一次代码,然后在多个批处理和流处理引擎上运行,如Apache Flink、Apache Spark和Google Cloud Dataflow等。Apache Beam提供了一种简单且高效的方式来实现数据处理管道&…...
使用 Fairseq 进行音频预训练:Train a wav2vec 2.0 base model配置与实现
使用 Fairseq 进行音频预训练:配置与实现 简介 随着深度学习技术的不断发展,音频预训练在语音识别和自然语言处理领域取得了显著进展。Fairseq 是由 Facebook AI Research 开发的开源序列建模工具包,广泛应用于各种自然语言处理任务,包括音频预训练。本文将介绍如何使用 …...
全面详尽的 PHP 环境搭建教程
目录 目录 PHP 环境搭建概述 在 Windows 上搭建 PHP 环境 使用集成环境 XAMPP 安装步骤 配置和测试 常用配置 手动安装 Apache、PHP 和 MySQL 安装 Apache 安装 PHP 安装 MySQL 配置 PHP 连接 MySQL 在 Linux 上搭建 PHP 环境 使用 LAMP 方案 安装 Apache 安装 …...
fiddler抓包06_抓取https请求(chrome)
课程大纲 首次安装Fiddler,抓https请求,除打开抓包功能(F12)还需要: ① Fiddler开启https抓包 ② Fiddler导出证书; ③ 浏览器导入证书。 否则,无法访问https网站(如下图࿰…...
【在Linux世界中追寻伟大的One Piece】网络命令|验证UDP
目录 1 -> Ping命令 2 -> Netstat命令 3 -> Pidof命令 4 -> 验证UDP-Windows作为client访问Linux 4.1 -> UDP client样例 1 -> Ping命令 Ping命令是一种网络诊断工具,它使用ICMP(Internet Control Message Protocol,互联网控制消…...
qt-C++笔记之Q_DECLARE_METATYPE和qRegisterMetaType
qt-C笔记之Q_DECLARE_METATYPE和qRegisterMetaType code review! 文章目录 qt-C笔记之Q_DECLARE_METATYPE和qRegisterMetaType一.Q_DECLARE_METATYPE使用方法应用场景 二.为什么需要注册类型?三.使用 Q_DECLARE_METATYPE 处理自定义类型的简短示例3.1.自定义类型定…...
Shader 中的光源
1、Shader 开发中常用的光源属性 Unity当中一共支持四种光源类型: 平行光(Directional)点光源(Point)聚光灯(Spot)面光源(Area)— 面光源仅在烘焙时有用 不管光源类型到…...
【django】局域网访问django启动的项目
目录 一、现象 二、django的settings.py配置 三、启动django项目 四、获取本机IP 五、局域网机器访问 前言:本机使用pycharm启动的项目,局域网其他机器访问 一、现象 django开发了接口,想给其他同志访问接口测试,无法通过I…...
【计算机组成原理】主存储器深度解析
📢博客主页:https://blog.csdn.net/2301_779549673 📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正! 📢本文由 JohnKi 原创,首发于 CSDN🙉 📢未来很长&#…...
docker在基础镜像上,比如rockylinux,如何配置yum仓库
在基础镜像rockylinux上 启动的容器,没有yum仓库,就执行不了一些命令 ~]docker run -itd --name linux rockylinux:8.5~]# docker exec -it linux bash /]# ifconfig bash: ifconfig: command not found/]# vim bash: vim: command not found …...
libtorch落地AI项目的一些总结
总结 1. 为啥C 写AI C 是一个非常强大的编程语言,它具有非常强大的计算能力,可以处理非常大的数据集,并且可以非常快速地完成计算。很多项目需要嵌入式部署,C 是一个非常适合的编程语言。C 可以非常快速地完成计算,并…...
ffmpeg面向对象——参数配置秘密探索及其设计模式
目录概览 0.参数配置对象流程图0.1 用到的设计模式0.2 与朴素思想的对比 1.参数传递部分1.1 AVDictionary字典容器类1.1.1 类定义及类图1.1.2 构造函数1.1.3 析构函数1.1.4 设置/读取等配置参数 1.2 参数配置实例 2.参数配置生效部分2.1参数过滤模块2.1.1 AVOption类2.1.1.1 类…...
华为eNSP使用详解
eNSP(Enterprise Network Simulation Platform)是华为提供的一款网络仿真平台,它允许用户在没有真实设备的情况下进行网络实验和学习网络技术。eNSP可以模拟各种网络设备,如交换机、路由器、防火墙等,并支持创建多种网…...
一文入门生成式AI(理解ChatGPT的原理)
一、什么是生成式AI? 以ChatGPT为代表的生成式AI,是对已有的数据和知识进行向量化的归纳,总结出数据的联合概率。从而在生成内容时,根据用户需求,结合关联字词的概率,生成新的内容。 可以这么联想&#x…...
C# 中Faker
在 C# 中,Faker 类通常用于生成模拟数据(也称为虚拟数据、测试数据),这对于开发、测试以及演示应用程序非常有用。一个流行的库叫做 Faker,它提供了一种简单的方式来生成各种随机数据。 安装 Faker 库 要使用 Faker …...
数据权限的设计与实现系列9——前端筛选器组件Everright-filter集成框架开发2
功能实现 规则转换为 SQL 片段 规则解析 首先我们来构造一个典型的规则,包括两个条件组,每个组由两个条件组成,由且与或两种逻辑关系,如下图: 然后看看生成的规则,如下: {"filt…...
鸿蒙Harmony-Next 徒手撸一个日历控件
本文将介绍如何使用鸿蒙Harmony-Next框架实现一个自定义的日历控件。我们将创建一个名为CalendarView的组件(注意,这里不能叫 Calendar因为系统的日历叫这个),它具有以下功能: 显示当前月份的日历支持选择日期显示农历日期可以切换上一月和下一月 组件…...
直播音频解决方案
音频解决方案公司具体解决的是什么样的问题?什么样的客户需要找音频方案公司?相信还是有很多人不是很了解。音频解决方案公司工作就像是为音频设备“量身定制衣服”,帮助客户解决各种音频相关的问题。无论你是音响制造商、会议设备商、耳机品…...
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器的上位机配置操作说明
LBE-LEX系列工业语音播放器|预警播报器|喇叭蜂鸣器专为工业环境精心打造,完美适配AGV和无人叉车。同时,集成以太网与语音合成技术,为各类高级系统(如MES、调度系统、库位管理、立库等)提供高效便捷的语音交互体验。 L…...
简易版抽奖活动的设计技术方案
1.前言 本技术方案旨在设计一套完整且可靠的抽奖活动逻辑,确保抽奖活动能够公平、公正、公开地进行,同时满足高并发访问、数据安全存储与高效处理等需求,为用户提供流畅的抽奖体验,助力业务顺利开展。本方案将涵盖抽奖活动的整体架构设计、核心流程逻辑、关键功能实现以及…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...
SpringBoot+uniapp 的 Champion 俱乐部微信小程序设计与实现,论文初版实现
摘要 本论文旨在设计并实现基于 SpringBoot 和 uniapp 的 Champion 俱乐部微信小程序,以满足俱乐部线上活动推广、会员管理、社交互动等需求。通过 SpringBoot 搭建后端服务,提供稳定高效的数据处理与业务逻辑支持;利用 uniapp 实现跨平台前…...
图表类系列各种样式PPT模版分享
图标图表系列PPT模版,柱状图PPT模版,线状图PPT模版,折线图PPT模版,饼状图PPT模版,雷达图PPT模版,树状图PPT模版 图表类系列各种样式PPT模版分享:图表系列PPT模板https://pan.quark.cn/s/20d40aa…...
Xen Server服务器释放磁盘空间
disk.sh #!/bin/bashcd /run/sr-mount/e54f0646-ae11-0457-b64f-eba4673b824c # 全部虚拟机物理磁盘文件存储 a$(ls -l | awk {print $NF} | cut -d. -f1) # 使用中的虚拟机物理磁盘文件 b$(xe vm-disk-list --multiple | grep uuid | awk {print $NF})printf "%s\n"…...
面向无人机海岸带生态系统监测的语义分割基准数据集
描述:海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而,目前该领域仍面临一个挑战,即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...
【JavaSE】多线程基础学习笔记
多线程基础 -线程相关概念 程序(Program) 是为完成特定任务、用某种语言编写的一组指令的集合简单的说:就是我们写的代码 进程 进程是指运行中的程序,比如我们使用QQ,就启动了一个进程,操作系统就会为该进程分配内存…...
LangFlow技术架构分析
🔧 LangFlow 的可视化技术栈 前端节点编辑器 底层框架:基于 (一个现代化的 React 节点绘图库) 功能: 拖拽式构建 LangGraph 状态机 实时连线定义节点依赖关系 可视化调试循环和分支逻辑 与 LangGraph 的深…...
