LVS-NAT

news2024/11/15 7:29:14

概述

        LVS(Linux Virtual Server)是一种常见的负载均衡技术。LVS允许客户端的请求通过负载均衡器(Director Server)转发到后端多台服务器(Real Servers)。在NAT模式下,负载均衡器会修改请求报文的目标地址和相应报文的源地址,使客户端能够与后端服务器通信;NAT模式适用于小规模集群,支持端口映射,使得后端服务器能够使用私有IP地址。

NAT模式工作原理

        1、当客户端向负载均衡器发送请求报文时,请求报文首先会进入内核空间的PREROUTING链。

        2、PREROUTING链检查请求报文的目标IP地址,如果是负载均衡器的虚拟IP(VIP),则将请求报文发送到INPUT链。

        3、IPVS模块在INPUT链上工作,它会将请求与预先定义的集群服务进行对比,并修改请求报文的目标IP地址为后端服务器的IP地址(RIP),然后将请求报文发送到POSTROUTING链。

        4、POSTROUTING链接收请求报文后,通过内核路由将请求报文发送给相应的后端服务器。

        5、后端服务器处理请求报文后,构建响应报文并发送回负载均衡器;此时,响应报文中的源IP地址为后端服务器的IP地址。

        6、负载均衡器在将响应报文转发给客户端之前,修改响应报文的源IP地址为其自身的VIP地址,然后将响应报文发送给客户端。

特点和限制

        后端服务器应该使用私有IP地址,并且其网关应该指向负载均衡器的DIP(Director IP)。

        DIP和RIP必须位于同一个IP网络中,通常使用私网地址。

        请求和响应报文都需要负载均衡器,这可能在高负载场景中成为性能瓶颈。

        支持端口 映射,允许修改请求报文的目标端口。

        在负载均衡器离线状态下,后端服务器无法响应访问VIP的请求报文。

        负载均衡器必须是Linux系统,后端服务器可以为任意系统。

NAT模式优缺点

        优点:配置和管理相对简单,网络架构灵活,允许后端服务器在不同网段中,客户端不需要感知后端服务器的存在。

        缺点:在整个流程中,所有输入输出的流量都要经过负载均衡器,这会导致负载均衡器成为性能瓶颈,尤其是在Web类应用中,响应流量大于请求流量时更为明显。

实验准备

        四台虚拟机,关闭VMware中NAT模式的DHCP服务;虚拟机需要关闭防火墙、SELinux以及配置IP地址。

IP地址
Virtual Server 外网IP-VIP192.168.0.254
Virtual Server 内网IP-DIP172.16.0.254
Real Server 1 RIP1172.16.0.10
Real Server 2 RIP2172.16.0.20
Client 192.168.0.10

        192.168.0.0/24为VMware网络配置中的NAT模式网段,172.16.0.0/24为仅主机模式的网段,Virtual Server需要使用两张网卡,一张为NAT模式,一张为仅主机模式。

网卡配置 

        Virtual Server

         Real Server 1

        Real Server 2

         Client

实验步骤 

Virtual Server

        启动内核路由功能

vim /etc/sysctl.conf
sysctl -p

        下载 ipvsadm负载均衡控制组件

yum install -y ipvsadm

        通过ipvsadm配置负载均衡器

ipvsadm -A -t 192.168.0.254:80 -s rr    #指定VIP及负载均衡算法
ipvsadm -a -t 192.168.0.254:80 -r 172.16.0.10:80 -m    #指定后端RIP及连接模式
ipvsadm -a -t 192.168.0.254:80 -r 172.16.0.20:80 -m

Real Server 

        Server1

yum install -y httpd    #下载HTTPD
echo Web Server 1 > /var/www/html/index.html    #添加文本
systemctl enable --now httpd    #启动HTTPD服务

        Server2

yum install -y httpd
echo Web Server 2 > /var/www/html/index.html
systemctl enable --now httpd

测试 

        使用轮询算法

        修改算法为加权轮询

ipvsadm -E -t 192.168.0.254:80 -s wrr
ipvsadm -e -t 192.168.0.254:80 -r 172.16.0.10:80 -m -w 1
ipvsadm -e -t 192.168.0.254:80 -r 172.16.0.20:80 -m -w 2

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1990397.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Sqlilabs靶场报错注入:less1~6

报错注入: less-1:报错后的GET单引号字注入 首先做SQL注入,需要知道注入参数是什么,不是所有的参数都是id,也能是file等等。判断注入点,注入点很重要,如果找不到注入的地方,测试什么…

如何避免项目发布后用户从浏览器WebPack中看到源码

打包前在config->index.js中设置productionSourceMap为false productionSourceMap: false,

【Hive】学习笔记

Hive学习笔记 【一】Hive入门【1】什么是Hive【2】Hive的优缺点(1)优点(2)缺点 【3】Hive架构原理(1)用户接口:Client(2)元数据:Metastore(3&…

Augmentation for small object detection

Abstract 我们对MS COCO数据集上的当前最先进模型Mask-RCNN进行了分析。我们发现小物体的ground-truth与预测的锚框之间的重叠远远低于预期的IoU阈值。我们推测这是由两个因素造成的:(1)只有少数图像包含小物体,(2&am…

英特尔18A制程技术分析解读

#### 引言 尽管第二季度净亏损16亿美元以及大规模裁员计划引发了一些担忧,英特尔还是在8月6日宣布了其下一代18A制程技术取得重大里程碑的消息,并计划在2025年开始生产。 #### 技术进展 - **里程碑**:英特尔表示,这一里程碑是在…

IoTDB组件AI Node发布9个月,如何使用你了解了吗?

数据 x AI ,第一批用户已认可! 在工业智能化转型中,时序数据库与 AI 技术的结合对故障和异常预测场景的准确性和效率至关重要,逐渐成为行业前沿关注热点。在此方面,IoTDB 已迈出支持 AI 深度分析的重要一步&#xff0c…

240806-在Linux/RHEL开机中自动启动bash脚本

A. 常规方法 要在Red Hat Enterprise Linux (RHEL) 中设置开机启动的bash脚本,可以使用以下方法之一: 方法1:使用/etc/rc.d/rc.local 打开/etc/rc.d/rc.local文件: sudo vi /etc/rc.d/rc.local在文件末尾添加你想要执行的bash脚…

Plus机型成为历史?iPhone 17系列带来全新阵容

苹果公司一直以来都是科技创新的领航者,每一次新品发布都会引发全球消费者的热烈关注。据最新消息,苹果计划于2024年秋季推出全新的iPhone 17系列,这一代iPhone将以其独特的设计、卓越的性能和创新的功能再次刷新人们对智能手机的认知。 一、…

【算法设计题】基于front、rear和count的循环队列初始化、入队和出队操作,第6题(C/C++)

目录 第3题 基于front、rear和count的循环队列初始化、入队和出队操作 得分点(必背) 题解:基于front、rear和count的循环队列初始化、入队和出队操作 数据结构定义 代码解答 详细解释 1. 循环队列初始化 2. 循环队列入队 3. 循环队列…

分库分表的使用场景和中间件

文章目录 一、为什么要分库分表?分库分表的使用场景?二、分库分表常用中间件1、Cobar2、TDDL3、Atlas4、Sharding-jdbc5、Mycat6、总结 一、为什么要分库分表?分库分表的使用场景? 场景1:注册用户就 20 万&#xff0c…

1.4 C 程序的编译过程与 CLion 调试技巧

目录 1 程序的编译过程 1.1 编写源代码 1.2 预处理(Preprocessing) 1.3 编译(Compilation) 1.4 汇编(Assembly) 1.5 链接(Linking) 1.6 执行 2 编译过程的输入输出文件概览 …

7-1 深度学习硬件:CPU和GPU

L 3 L3 L3、 L 2 L2 L2、 L 1 L1 L1为cache,数据只有进入寄存器的时候,才能开始运算。 (此图错误,一个矩阵应该是按行存储的!) GPU的核要远远多于CPU,从而TFLOPS,GPU每秒能做的…

Vue3.0与Echarts5

1.课程介绍与目标 有句话说的好“一图胜千言”,在我们开发的领域就是说,在对于复杂难懂且体量庞大的数据展示上面而言,图表的信息量要大得多,这也是我们为什么要谈数据可视化。https://notes.xiyankt.com/#/echarts/echarts​ stu…

深入理解 Apollo Client 的缓存策略

前言 上一篇文章:Nextjs 使用 graphql,并且接入多个节点 介绍了如何接入 graphql,并且使用 Apollo client 来请求和操作数据。后面深入了解了一下其缓存策略,想着有必要整理出来,作为后续学习。有任何问题还请批评指正…

八股之Java基础

注:本文部分内容源自Java 面试指南 | JavaGuide 一、基础概念与常识 1.JVM、JDK、JRE JVM:Java Virtual Machine,虚拟机,运行Java字节码,实现Java的平台无关性 JDK:Java Development Kit,Ja…

PwnLab: init-文件包含、shell反弹、提权--靶机渗透思路讲解

Vulnhub靶机链接回【PwnLab】 首页有一个登录框 image-20240807124822770 他没有验证码,我们试试暴力破解 image-20240807122743025 开始爆破了,全部失败,哈哈哈 image-20240807122851001 nmap全端口扫描试试 image-20240807131408315 有…

无法访问jakarta.servlet.http.HttpServletRequest

1、问题 无法访问jakarta.servlet.http.HttpServletRequest2、原因 JDK1.8升级到高版本后&#xff0c;需要手动引入jakarta.servlet-api 3、解决 增加依赖 <dependency><groupId>jakarta.servlet</groupId><artifactId>jakarta.servlet-api</ar…

6.2.面向对象技术-UML图

UML UML事物关系依赖关联聚合组合 泛化实现 类图对象图用例图序列图通信图状态图活动图构件图部署图练习题 UML 上午选择题3-4分&#xff0c;下午案例分析必考 UML是统一建模语言&#xff0c;和程序设计语言并无关系。 UML三个要素&#xff1a;UML的基本构造块、支配这些构造…

代码随想录算法训练营第二十一天 | 77. 组合, 216.组合总和III , 17.电话号码的字母组合

目录 77. 组合 思路 回溯法三部曲 方法一&#xff1a; 回溯未剪枝 方法二&#xff1a;回溯剪枝 心得收获 216.组合总和III 思路 方法一&#xff1a;回溯-没有使用sum来统计path里元素的总和 方法二&#xff1a;回溯&#xff0c;使用sum来保存当前路径上的总和 心得…

如何应用OceanBase 的实时SQL诊断,解决AP场景下的痛点

随着数据量的快速增长与用户需求的变化&#xff0c;数据库的管理与优化工作日益凸显其重要性。作为DBA及开发者&#xff0c;您是否曾面临以下挑战&#xff1a; ○ 分析场景下&#xff0c;在处理大规模数据的且耗时较长的查询是&#xff0c;常涉及海量数据的处理及复杂的计算&…