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

Linux 练习二 LVS的NAT模式

作业

要求:使用LVS的 NAT 模式实现 3 台 RS 的轮询访问。IP地址和主机自己规划。

节点规划

主机角色系统网络IP
clientclientredhat 9.5仅主机192.168.60.100/24
lvslvsredhat 9.5仅主机 NAT192.168.60.200/24 VIP 192.168.23.8/24 DIP
nginxrs1redhat 9.5NAT192.168.23.7/24
nginxrs2redhat 9.5NAT192.168.23.17/24
nginxrs3redhat 9.5NAT192.168.23.27/24

配置RS

RS需要配置为NAT模式,网关这里设置为 192.168.23.8

配置 RS1

 [root@localhost ~]# hostnamectl hostname rs1[root@localhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.23.7/24 ipv4.gateway 192.168.23.8 connection.autoconnect yes[root@localhost ~]# nmcli c up ens160​# 安装nginx[root@rs1 ~]# dnf install nginx -y# 修改默认访问页[root@rs1 ~]# echo $(hostname -I) > /usr/share/nginx/html/index.html# 启动服务[root@rs1 ~]# systemctl start nginx# 测试[root@rs1 ~]# curl localhost192.168.72.7

配置 RS2

[root@localhost ~]# hostnamectl hostname rs2
[root@localhost ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.23.17/24 ipv4.gateway 192.168.23.8 connection.autoconnect yes
[root@localhost ~]# nmcli c up ens160# 安装nginx
[root@rs1 ~]# dnf install nginx -y
# 修改默认访问页
[root@rs1 ~]# echo $(hostname -I) > /usr/share/nginx/html/index.html
# 启动服务
[root@rs1 ~]# systemctl start nginx
# 测试
[root@rs1 ~]# curl localhost
192.168.72.7

配置 RS3

 
 [root@server ~]# hostnamectl hostname rs3[root@server ~]# nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.23.27/24 ipv4.gateway 192.168.23.8 connection.autoconnect yes [root@server ~]# nmcli connection up ens160 ​### 安装nginx[root@rs3 ~]# dnf install -y nginx# 修改默认访问页[root@rs3 ~]# echo &(hostname -I) > /usr/share/nginx/html/index.html [1] 2339​[1]+  Done                    echo[root@rs3 ~]# systemctl start nginx[root@rs3 ~]# curl localhost192.168.23.27

配置 LVS

修改虚拟网络

LVS 服务器第一块网卡采用仅主机模式,IP 地址为 192.168.60.200,第二块网卡采用 NAT 模式,IP 地址为 192.168.23.8。

这里我们先在VMware中将 网络适配器 改为仅主机模式,然后再添加一块 NAT 模式的网卡。

 [root@server ~]# hostnamectl hostname lvs​### 关闭防火墙[root@lvs ~]# systemctl stop firewalld.service​[root@lvs ~]# ip a1: ...2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:96:88:aa brd ff:ff:ff:ff:ff:ffaltname enp3s0inet 192.168.60.128/24 brd 192.168.60.255 scope global dynamic noprefixroute ens160valid_lft 1755sec preferred_lft 1755secinet6 fe80::20c:29ff:fe96:88aa/64 scope link noprefixroute valid_lft forever preferred_lft forever3: ens224: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000link/ether 00:0c:29:96:88:b4 brd ff:ff:ff:ff:ff:ffaltname enp19s0inet 192.168.23.138/24 brd 192.168.23.255 scope global dynamic noprefixroute ens224valid_lft 1755sec preferred_lft 1755secinet6 fe80::e817:bd6f:df08:c607/64 scope link noprefixroute valid_lft forever preferred_lft forever# 查看网络连接设备名称,注意网卡名称和驱动名称是不一样的[root@lvs ~]# nmcli connection showNAME                UUID                                  TYPE     DEVICE ens160              c1ddb566-f74f-3685-bcac-678da8f58efa  ethernet ens160 lo                  d2977d80-8552-47ec-95dd-a87b7809be47  loopback  lo   Wired connection 1  bfbd3c56-329a-38c2-89c1-bb9b514232a3  ethernet ens224 ​# 修改连接名称,以免每次都要输入'Wired connection 1'[root@lvs ~]# nmcli c modify 'Wired connection 1' connection.id ens224[root@lvs ~]# nmcli connection showNAME    UUID                                  TYPE      DEVICE ens160  c1ddb566-f74f-3685-bcac-678da8f58efa  ethernet  ens160 ens224  bfbd3c56-329a-38c2-89c1-bb9b514232a3  ethernet  ens224 lo      d2977d80-8552-47ec-95dd-a87b7809be47  loopback  lo​# 查看修改结果[root@lvs ~]# nmcli connection showNAME    UUID                                  TYPE      DEVICE ens160  c1ddb566-f74f-3685-bcac-678da8f58efa  ethernet  ens160 ens224  bfbd3c56-329a-38c2-89c1-bb9b514232a3  ethernet  ens224 lo      d2977d80-8552-47ec-95dd-a87b7809be47  loopback  lo

软件安装

防止等会不能上外网,先把 ipvsamd 软件安装好。

 [root@lvs ~]# dnf install ipvsadm -yUpdating Subscription Management repositories.Unable to read consumer identityDependencies resolved.=======================================================================================Package            Architecture      Version               Repository            Size=======================================================================================Installing:ipvsadm            x86_64            1.31-6.el9            AppStream             54 kTransaction Summary=======================================================================================...    Complete!

配置网卡

从 VMware 的 编辑 -> 虚拟网络适配器 选项中可以看到自己仅主机模式的子网IP,这里我的子网IP 为 192.168.60.0

 # 仅主机模式网卡[root@lvs ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.60.200/24 ipv4.gateway 192.168.60.2 ipv4.dns 223.5.5.5 connection.autoconnect yes[root@lvs ~]# nmcli c up ens160​# NAT 模式网卡[root@lvs ~]# nmcli c modify ens224 ipv4.method manual ipv4.addresses 192.168.23.8/24 ipv4.gateway 192.168.23.2 connection.autoconnect yes[root@lvs ~]# nmcli c up ens224 Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/5)

配置客户端

客户端的网络也采用仅主机模式,采用 60 网段

 [root@server ~]# hostnamectl hostname client[root@client ~]# nmcli c modify ens160 ipv4.method manual ipv4.addresses 192.168.60.100/24 ipv4.gateway 192.168.60.2 ipv4.dns 223.5.5.5 connection.autoconnect yes[root@client ~]# nmcli c up ens160

启动服务

 # 直接启动服务会报错[root@lvs ~]# systemctl start ipvsadm.service Job for ipvsadm.service failed because the control process exited with error code.See "systemctl status ipvsadm.service" and "journalctl -xeu ipvsadm.service" for details.# 需要保存当前的 IPVS 规则[root@lvs ~]# ipvsadm-save > /etc/sysconfig/ipvsadm[root@lvs ~]# systemctl start ipvsadm.service

规则匹配

 # 此时客户端无法访问虚拟IP(VIP),既无法访问到后端 RS 服务器[root@client ~]# curl 192.168.60.200curl: (7) Failed to connect to 192.168.60.200 port 80: Connection refused# 但是在 LVS 服务器中可以访问到后端 RS 服务器[root@lvs ~]# curl 192.168.23.7192.168.23.7[root@lvs ~]# curl 192.168.23.17192.168.23.17[root@lvs ~]# curl 192.168.23.27192.168.23.27​### 进行 LVS 规则匹配## 配置一条规则# -A 表示添加新的虚拟服务 -t 指定使用TCP连接(默认) 后面为当前 VIP 及端口 # -s rr 指定 负载均衡算法,rr 表示轮询,即轮流发送到所有真实服务器RS[root@lvs ~]# ipvsadm -A -t 192.168.60.200:80 -s rr​## 添加规则# -a 为存在的虚拟服务添加真实服务器RS -t 指定真实服务器RS的IP地址和端口 # -m 指定以 直接路由模式使用,表示LVS通过NAT转发流量到真正的服务 # -w 设置权重,表示该RS的负载均衡权重,用于 轮询策略  [root@lvs ~]# ipvsadm -a -t 192.168.60.200:80 -r 192.168.23.7:80 -m -w 1[root@lvs ~]# ipvsadm -a -t 192.168.60.200:80 -r 192.168.23.17:80 -m -w 2[root@lvs ~]# ipvsadm -a -t 192.168.60.200:80 -r 192.168.23.27:80 -m -w 3​## 查看规则列表[root@lvs ~]# ipvsadm -LnIP Virtual Server version 1.2.1 (size=4096)Prot LocalAddress:Port Scheduler Flags-> RemoteAddress:Port           Forward Weight ActiveConn InActConnTCP  192.168.60.200:80 rr-> 192.168.23.7:80              Masq    1      0          0         -> 192.168.23.17:80             Masq    2      0          0         -> 192.168.23.27:80             Masq    3      0          0# 配置好后重启服务[root@lvs ~]# systemctl restart ipvsadm.service

功能测试

 # 重启完成后再次通过客户端测试,发现不报错但是没有数据返回[root@client ~]# curl 192.168.60.200​### 启用IP转发,即启用 IPv4 的 IP 转发功能(1启用,0禁用)# 将内核转发参数写进配置文件,重启后也能保持配置[root@lvs ~]# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf ​# 重新加载配置[root@lvs ~]# sysctl -pnet.ipv4.ip_forward = 1​### 此时再进行访问,成功轮询[root@client ~]# curl 192.168.60.200192.168.23.7[root@client ~]# curl 192.168.60.200192.168.23.27 [root@client ~]# curl 192.168.60.200192.168.23.17[root@client ~]# curl 192.168.60.200192.168.23.7[root@client ~]# curl 192.168.60.200192.168.23.27 [root@client ~]# curl 192.168.60.200192.168.23.17

IP 转发的作用

启用 IP 转发允许 Linux 主机在两个或多个网络之间转发数据包。这对于以下场景至关重要:

  • 路由器:使得 Linux 服务器可以作为路由器,转发数据包。

  • 负载均衡器:在 LVS 等负载均衡配置中,能够将客户端请求分发到后端真实服务器。

  • 网络安全:通常在 NAT(网络地址转换)场景中,需要 IP 转发来处理流量。

相关文章:

Linux 练习二 LVS的NAT模式

作业 要求&#xff1a;使用LVS的 NAT 模式实现 3 台 RS 的轮询访问。IP地址和主机自己规划。 节点规划 主机角色系统网络IPclientclientredhat 9.5仅主机192.168.60.100/24lvslvsredhat 9.5仅主机 NAT192.168.60.200/24 VIP 192.168.23.8/24 DIPnginxrs1redhat 9.5NAT192.16…...

MongoDB 与 Elasticsearch 使用场景区别及示例

一、核心定位差异 ‌MongoDB‌ ‌定位‌&#xff1a;通用型文档数据库&#xff0c;侧重数据的存储、事务管理及结构化查询&#xff0c;支持 ACID 事务‌。‌典型场景‌&#xff1a; 动态数据结构存储&#xff08;如用户信息、商品详情&#xff09;‌。需事务支持的场景&#xf…...

WPF ContentPresenter详解2

ContentPresenter与ContentControl的区别 ContentControl 和 ContentPresenter 是 WPF 中两个相关的控件&#xff0c;但它们在用途和功能上有一些关键的区别。理解这两者的区别和联系有助于更好地设计和开发用户界面。 1. 类层次结构 ContentControl&#xff1a;位于 WPF 控件…...

Ubuntu20.0.4创建ssh key以及repo命令的使用

创建ssh key ssh-keygen //一路回车&#xff0c;不用输入任何东西cat ~/.ssh/id_rsa.pub 配置git config git config --global user.name xxx // 设置git用户名git config --global user.email xxx.com.cn //设置git 邮箱git config --list// remove the git config// rm -fr …...

CSS——变换、过度与动画

巧妙的使用变换、过度与动画可以让页面设计更有趣、更吸引人&#xff0c;同时还能提高可用性和感知性能。 文章目录 一&#xff0c;变换&#xff08;一&#xff09;2D变换1&#xff0c;定义旋转2&#xff0c;定义缩放3&#xff0c;定义移动4&#xff0c;定义倾斜5&#xff0c;定…...

鸿蒙OS 5.0 服务能力框架深入剖析

鸿蒙OS 5.0 服务能力框架中关键类的作用分析 1\. 鸿蒙OS 5.0 服务能力框架导论 鸿蒙OS 5.0&#xff0c;亦称鸿蒙智联 5 1&#xff0c;标志着华为在分布式操作系统领域迈出的重要一步。与早期版本采用兼容安卓的AOSP层、Linux内核以及LiteOS内核不同&#xff0c;鸿蒙OS 5.0 专注…...

【PCB工艺】时序图(Timing Diagram)

时序图&#xff08;Timing Diagram&#xff09;是描述数字电路信号随时间变化的图示&#xff0c;广泛用于分析和设计时序逻辑电路&#xff0c;如锁存器&#xff08;Latch&#xff09;、触发器&#xff08;Flip-Flop&#xff09;、计数器、状态机等。这篇文章从时序图的原理、构…...

第四届能源、电力与电气国际学术会议(ICEPET 2025)

重要信息 地点&#xff1a;中国-成都 官网&#xff1a;www.icepet.net&#xff08;了解参会投稿等信息&#xff09; 时间&#xff1a;2025年4月25-27日 简介 第四届能源、电力与电气会&#xff08;ICEPET 2025定于2025年4月25-27日在中国成都举办。 本次将围绕能源、电力及…...

el-table + el-pagination 前端实现分页操作

el-table el-pagination 前端实现分页操作 后端返回全部列表数据&#xff0c;前端进行分页操作 html代码 <div><el-table :data"tableData" border><el-table-column label"序号" type"index" width"50" /><el…...

Redis数据持久化机制 + Go语言读写Redis各种类型值

Redis&#xff08;Remote Dictionary Server&#xff09;作为高性能的键值存储系统&#xff0c;凭借其丰富的数据类型和原子性操作&#xff0c;成为现代分布式系统中不可或缺的组件。 1、Redis支持的数据类型 Redis支持的数据类型可归纳为以下9类&#xff1a; String&#x…...

【机器学习】什么是逻辑回归?

什么是逻辑回归&#xff1f; 逻辑回归&#xff08;Logistic Regression&#xff09;是一个用于分类问题的统计学模型&#xff0c;尽管名字里有“回归”二字&#xff0c;它其实是用来做分类的&#xff0c;不是做数值预测的。 通俗易懂的理解 我们可以通过一个简单的例子来理解…...

Unity程序嵌入Qt后点击UI按钮Button没有反应

一、前言 在一次项目中&#xff0c;需要将Unity程序嵌入qt中&#xff0c;并在主界面显示&#xff0c;根据网络资料与相关代码&#xff0c;成功将unity程序嵌入&#xff0c;但是在点击Unity的Button按钮时却没有响应&#xff0c;在查找相关资料后&#xff0c;解决问题&#xff…...

【Bug】记录2025年遇到的Bug以及修复方案

--------------------------------------------------------分割线 2025.3.25-------------------------------------------------------windows环境下通过命令行终端&#xff08;必须是命令行下&#xff0c;直接赋值传递&#xff0c;代码正常&#xff09;的形式传递字符串时&a…...

2025最新“科研创新与智能化转型“暨AI智能体开发与大语言模型的本地化部署、优化技术实践

第一章、智能体(Agent)入门 1、智能体&#xff08;Agent&#xff09;概述&#xff08;什么是智能体&#xff1f;智能体的类型和应用场景、典型的智能体应用&#xff0c;如&#xff1a;Google Data Science Agent等&#xff09; 2、智能体&#xff08;Agent&#xff09;与大语…...

VUE3+TypeScript项目,使用html2Canvas+jspdf生成PDF并实现--分页--页眉--页尾

使用html2CanvasJsPDF生成pdf&#xff0c;并实现分页添加页眉页尾 1.封装方法htmlToPdfPage.ts /**path: src/utils/htmlToPdfPage.tsname: 导出页面为PDF格式 并添加页眉页尾 **/ /*** 封装思路* 1.将页面根据A4大小分隔边距&#xff0c;避免内容被中间截断* 所有元素层级不要…...

【NLP 46、大模型技术发展】

目录 一、ELMo 2018 训练目标 二、GPT-1 2018 训练目标 三、BERT 2018 训练目标 四、Ernie —— baidu 2019 五、Ernie —— Tsinghua 2019 六、GPT-2 2019 七、UNILM 2019 八、Transformer - XL & XLNet 2019 1.模型结构 Ⅰ、循环机制 Recurrence Mechanism Ⅱ、相对位置…...

在 Ubuntu 上安装 Docker 的完整指南

1. 卸载旧版本(如有) 在安装新版本前,建议先卸载旧版本: sudo apt remove docker docker-engine docker.io containerd runc 2. 安装依赖包 更新软件包索引并安装必要的依赖: sudo apt update sudo apt install -y ca-certificates curl gnupg lsb-release 3. 添加 Do…...

可以把后端的api理解为一个目录地址,但并不准确

将后端的 API 理解为一个“目录地址”是可以的&#xff0c;但并不完全准确。让我们更详细地解释一下。 目录 1、生动形象了解api 2、后端 API 的作用 3、可以将 API 理解为“目录地址”的原因 &#xff08;1&#xff09;URL 路径 &#xff08;2&#xff09;层次结构 4、…...

硬件基础--16_公式梳理

公式梳理 欧姆定律: IU/R 1.欧姆定律有局限性&#xff0c;仅适用于纯电阻电路(或者说纯电阻元器件&#xff0c;纯电阻设备) 2.纯电阻电路:消耗的电能仅转化为热能&#xff0c;没有其他形式的能量转换。 功率计算:PUI 1.导出公式:PU2 /R 2.导出公式:PI2 R 焦耳定律:QI2 Rt 1.导…...

《Python实战进阶》No34:卷积神经网络(CNN)图像分类实战

第34集&#xff1a;卷积神经网络&#xff08;CNN&#xff09;图像分类实战 2025年3月28日更新 增加了 CNN和AI大模型关系的说明。 2025年3月29日更新了代码&#xff0c;优化损失系数曲线可视化。 详细环境配置依赖和可一次性复制的完整代码见文末。 摘要 最近大模型推陈出新迭…...

嵌入式Linux网络编程:UNIX Domain Socket进程间通信(IPC)

嵌入式Linux网络编程&#xff1a;UNIX Domain Socket进程间通信&#xff08;IPC&#xff09; 【本文代码已在Linux平台验证通过】 一、UNIX Domain Socket核心优势 1.1 本地IPC方案对比 特性UNIX Domain Socket管道(Pipe)消息队列(Message Queue)共享内存(Shared Memory)跨进…...

【qt】 布局器

参考博客&#xff1a;https://blog.csdn.net/Fdog_/article/details/107522283 目录 布局管理器概念常见的布局管理器及特点&#x1f535;QHBoxLayout水平布局&#x1f535;QVBoxLayout垂直布局 &#x1f535;QGridLayout网格布局 &#x1f535;QFormLayout表单布局 QT 高级布…...

Hosts文件与DNS的关系:原理、应用场景与安全风险

目录 引言 Hosts文件与DNS的基本概念 2.1 什么是Hosts文件&#xff1f; 2.2 什么是DNS&#xff1f; Hosts文件与DNS的关系 Hosts文件的应用场景 4.1 本地开发与测试 4.2 屏蔽广告与恶意网站 4.3 绕过DNS污染或劫持 Hosts文件的优势 5.1 解析速度快 5.2 不受DNS缓存影…...

VMware Windows Tools 存在认证绕过漏洞(CVE-2025-22230)

漏洞概述 博通公司&#xff08;Broadcom&#xff09;近日修复了 VMware Windows Tools 中存在的一个高危认证绕过漏洞&#xff0c;该漏洞编号为 CVE-2025-22230&#xff08;CVSS 评分为 9.8&#xff09;。VMware Windows Tools 是一套实用程序套件&#xff0c;可提升运行在 VM…...

pnpm 依赖升级终极指南:从语义化版本控制到 Monorepo 全局更新的企业级实践

要使用 pnpm 更新所有依赖包&#xff0c;可以通过以下命令实现&#xff1a; 1. 更新所有依赖到符合语义化版本的范围 pnpm update该命令会根据 package.json 中定义的版本范围&#xff08;如 ^1.0.0 或 ~2.3.4&#xff09;更新依赖包到最新兼容版本&#xff0c;但不会突破版本…...

Sentinel[超详细讲解]-2

异常处理 默认情况下&#xff0c;Sentinel 会抛出 BlockException 异常&#xff0c;如果希望自定义异常&#xff0c;则可以使用 SentinelResource 注解的 blockHandler 属性。 1、自定义异常处理 BlockExceptionHandler 自定义异常处理类实现 BlockExceptionHandler 接口&#…...

【问题解决】Linux安装conda修改~/.bashrc配置文件后,root 用户下显示 -bash-4.2#

问题描述 在Linux安装conda下的python环境时候&#xff0c;修改了~/.bashrc文件&#xff0c;修改完成后&#xff0c;再次进入服务器后&#xff0c;登录时候显示的不是正常的[rootlocalhost ~]#&#xff0c;而是-bash-4.2# 原因分析&#xff1a; 网上原因有&#xff1a;/root下…...

优化webpack打包体积思路

Webpack 打包过大的问题通常会导致页面加载变慢&#xff0c;影响用户体验。可以从代码优化、依赖优化、构建优化等多个角度入手来减少打包体积&#xff1a; 代码优化 &#xff08;1&#xff09;按需加载&#xff08;代码拆分&#xff09; ① 路由懒加载 如果你的项目使用 Vu…...

RabbitMQ 技术详解:异步消息通信的核心原理与实践

这里写目录标题 RabbitMQ 技术详解&#xff1a;异步消息通信的核心原理与实践一、RabbitMQ 本质剖析核心架构组件 二、核心功能与应用场景主要作用典型应用场景 三、工作流程深度解析消息传递流程关键协议机制 四、Java 实现示例1. 依赖配置&#xff08;Maven&#xff09;2. 消…...

CF每日5题Day4(1400)

好困&#xff0c;感觉很累&#xff0c;今天想赶紧写完题早睡。睡眠不足感觉做题都慢了。 1- 1761C 构造 void solve(){int n;cin>>n;vector<vector<int>>a(n1);forr(i,1,n){//保证每个集合不同a[i].push_back(i);}forr(i,1,n){string s;cin>>s;forr(…...