IPVS负载均衡(三)IPVS三种工作方式之NAT模式

IPVS是LVS(Linux Virtual Server)项目重要组成部分,目前包含于官方Linux Kernel,IPVS依赖于netfilter框架,位于内核源码的net/netfilter/ipvs目录下

一、三种工作模式简介

  1. NAT工作模式,简单来说就是传统的NAT,进出流量都需要经过调度器,调度器会选择一个目的服务器,将进入流量的目标IP改写为负载均衡到的目标服务器,同时源IP地址也会改为调度器IP地址。机制简单,但限制大,IPVS需要维护每个映射关系,而且进出入流量都需要经过调度器,实际上这个会成为瓶颈
  2. TUN工作模式,即IP Tunneling模式。这种模式中,调度器将进入的包重新包成一个IP包,然后发送给选定的目的服务器,目的服务器处理后,直接将应答发送给客户(当然该重新封装的报文的源IP地址还是要填成调度器的)。
  3. DR工作模式,即Direct Routing模式。这种模式中,调度器直接重写进入包的mac地址,将其改为选定的目标服务器的mac地址,这样就可以到达服务器。但这样的话需要要求IPVS服务器需要和真实服务器在同一局域网内,且真实服务器必须有真实网卡(这样重写了mac地址的报文才可以才可以到达该服务器)

下面将详细描述三种IP负载均衡技术VS/NAT、VS/TUN和VS/DR的工作原理,以及它们的优缺点。
以下三种模式主要转自zhangweisong博客

二、LVS/NAT

由于IPv4中IP地址空间的日益紧张和安全方面的原因,很多网络使用保留IP地址(10.0.0.0/255.0.0.0、172.16.0.0/255.128.0.0和192.168.0.0/255.255.0.0)[64, 65, 66]。这些地址不在Internet上使用,而是专门为内部网络预留的。当内部网络中的主机要访问Internet或被Internet访问时,就需要采用网络地址转换(Network Address Translation, 以下简称NAT),将内部地址转化为Internets上可用的外部地址。NAT的工作原理是报文头(目标地址、源地址和端口等)被正确改写后,客户相信它们连接一个IP地址,而不同IP地址的服务器组也认为它们是与客户直接相连的。由此,可以用NAT方法将不同IP地址的并行网络服务变成在一个IP地址上的一个虚拟服务。

VS/NAT的体系结构如下图所示。在一组服务器前有一个调度器,它们是通过Switch/HUB相连接的(意思就是说真实服务器可以和IPVS负载均衡器不处于同一个子网)。这些服务器提供相同的网络服务、相同的内容,即不管请求被发送到哪一台服务器,执行结果是一样的。服务的内容可以复制到每台服务器的本地硬盘上,可以通过网络文件系统(如NFS)共享,也可以通过一个分布式文件系统来提供。

1、用户报文到达IPVS负载均衡器

  1. 用户通过Virtual IP Address(虚拟服务的IP地址)访问网络服务时,请求报文到达IPVS
  2. IPVS根据连接调度算法从一组真实服务器中选出一台服务器
  3. IPVS将报文的目标地址Virtual IP Address改写成选定服务器的地址,报文的目标端口改写成选定服务器的相应端口,最后将修改后的报文发送给选出的服务器。
  4. 同时,IPVS在连接Hash表中记录这个连接,当这个连接的下一个报文到达时,从连接Hash表中可以得到原选定服务器的地址和端口,进行同样的改写操作,并将报文传给原选定的服务器。

2、真实服务器返回的响应报文到达IPVS负载均衡器

  1. 当来自真实服务器的响应报文经过调度器时,IPVS负载均衡器会先查询hash连接表,查询相应连接信息
  2. 调度器将报文的源地址和源端口改为Virtual IP Address和相应的端口,再把报文发给用户

3、连接的状态机

IPVS负载均衡器连接上引入一个状态机,不同的报文会使得连接处于不同的状态,不同的状态有不同的超时值。

  1. 在TCP连接中,根据标准的TCP有限状态机进行状态迁移,成功的连接在ipvsadm中查看都是ActiveCon,不同状态的超时值是可以设置的,在缺省情况下,SYN状态的超时为1分钟,ESTABLISHED状态的超时为15分钟,FIN状态的超时为1分钟
  2. 在UDP中,我们只设置一个UDP状态,连接通过ipvsadm查看一律显示结果为InActiveConn,UDP状态的超时为5分钟
  3. 当连接终止或超时,调度器将这个连接从连接Hash表中删除。

这样,客户所看到的只是在Virtual IP Address上提供的服务,而服务器集群的结构对用户是透明的。对改写后的报文,应用增量调整Checksum的算法调整TCP Checksum的值,避免了扫描整个报文来计算Checksum的开销。

在一些网络服务中,它们将IP地址或者端口号在报文的数据中传送,若我们只对报文头的IP地址和端口号作转换,这样就会出现不一致性,服务会中断。所以,针对这些服务,需要编写相应的应用模块来转换报文数据中的IP地址或者端口号。*不过说实在的,这句话,我在工作中并没有遇到,所以只是粗略看了代码,并没有具体解读该处作用,而且现在协议就是TCP/UDP/SCTP……嘛反正这里不懂,我这里不多说。*

三、具体事例

举个例子来进一步说明LVS/NAT

VS/NAT的配置如下表所示,所有到IP地址为202.103.106.5和端口为80的流量都被负载均衡地调度的真实服务器172.16.0.2:80和172.16.0.3:8000上。目标地址为202.103.106.5:21的报文被转移到172.16.0.3:21上。而到其他端口的报文将被拒绝。

Protocol Virtual IP Address Port Real IP Address Port Weight
TCP 202.103.106.5 80 172.16.0.2 80 1
TCP 202.103.106.5 80 172.16.0.3 8000 2
TCP 202.103.106.5 21 172.16.0.3 21 1

从以下的例子中,我们可以更详细地了解报文改写的流程。

  1. 访问集群报文可能有以下的源地址和目标地址:
SOURCE DEST
202.100.1.2:3456 202.103.106.5:80

2. IPVS负载均衡器从调度列表中选出一台服务器,例如是172.16.0.3:8000。该报文会被改写为如下地址,并将它发送给选出的服务器。

SOURCE DEST
202.100.1.2:3456 172.16.0.3:8000

3. 从服务器返回到IPVS的响应报文如下:

SOURCE DEST
172.16.0.3:8000 202.100.1.2:3456

4. 响应报文的源地址会被改写为虚拟服务的地址,目标地址改写为客户端地址,再将报文发送给客户端:

SOURCE DEST
202.103.106.5:80 202.100.1.2:3456

这样,客户端认为是从202.103.106.5:80服务得到正确的响应,而不会知道该请求是服务器172.16.0.2还是服务器172.16.0.3处理的。

ipvs负载均衡(三)ipvs三种工作方式相关推荐

  1. 负载均衡方案的三种实现策略

    早期的互联网应用,由于用户流量比较小,业务逻辑也比较简单,往往一个单服务器就能满足负载需求.随着现在互联网的流量越来越大,稍微好一点的系统,访问量就非常大了,并且系统功能也越来越复杂,那么单台服务器就 ...

  2. LVS三种工作方式八种算法

    一.集群简介 什么是集群 计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作.在某种意义上,他们可以被看作是一台计算机.集群系统中的单个计算 ...

  3. nginx或httpd实现负载均衡tomcat(三)

    接博客nginx或httpd实现反向代理tomcat并实现会话保持(二) 实例四:使用httpd负载均衡后端tomcat服务 第一步:准备两个tomcat服务器节172.16.240.203 修改to ...

  4. linux 学习 vi简介; vi下三种工作方式。

    VI Visual Interface 三种工作方式 1.命令方式 应举例举,例我们在查询时 /session 时,其实就是在 命令模式下 按下 / 进行的. 2.输入方式 我们可以在这里对文件进行编 ...

  5. 实现服务器负载均衡常见的四种技术

    为了提高服务器的性能和工作负载能力,企业通常会使用DNS服务器.网络地址转换等技术来实现多服务器负载均衡,特别是目前企业对外的互联网Web网站,许多都是通过几台服务器来完成服务器访问的负载均衡. 目前 ...

  6. LVS原理详解(3种工作方式8种调度算法)--老男孩

    一.LVS原理详解(4种工作方式8种调度算法) 集群简介 集群就是一组独立的计算机,协同工作,对外提供服务.对客户端来说像是一台服务器提供服务. LVS在企业架构中的位置: 以上的架构只是众多企业里面 ...

  7. 【STM32】GPIO工作原理(八种工作方式超详细分析,附电路图)

    STM32F1xx官方资料: <STM32中文参考手册V10>-第8章通用和复用功能IO(GPIO和AFIO ) 芯片数据手册(datasheet) STM32的GPIO介绍 STM32引 ...

  8. IPsec协议的两种工作方式 协议三大部分 简介

    IPsec协议的两种工作方式: 隧道(tunnel)模式:用户的整个IP数据报被用来计算AH或ESP头,AH或ESP头以及ESP加密的用户数据被封装在一个新的IP数据包中.通常,隧道模式应用在两个安全 ...

  9. 7. 【可编程定时器8253】:外部引脚、内部结构特点、计数启动方式、6种工作方式、控制字格式、应用

    文章目录 计数与定时 8253芯片特点 1. 外部引脚 2. 内部结构特点(含3个计数器.1个控制寄存器) 2. 计数启动方式(软件启动.硬件启动的定义) 3. 6种工作方式 不能自动重复计数的工作方 ...

最新文章

  1. 关于 PHP 与 MYSQL的链接
  2. 有些时候,我们以为对的意见,往往在行家看来是比较幼稚之亲身经历
  3. python对excel表统计视频教程_Python实现对excel文件列表值进行统计的方法
  4. Sentinel2A影像监测家乡油菜长势!!
  5. 转载:better-scroll的相关api
  6. 利用finereport建设保险公司决策分析系统的思路和方法
  7. 5月25日-js操作DOM遍历子节点
  8. 华为主导 5G 入网之争?
  9. 黑大选修计算机模拟物理学,黑龙江大学学分制选课指南.doc
  10. Keras验证集切分
  11. MySQL自定义函数用法详解-复合结构自定义变量/流程控制
  12. Referrer Policy:strict-origin-when-cross-origin 404
  13. 笔记本计算机的连接无线网络,笔记本电脑连接无线网络受限解决方法
  14. 支付宝交易行为数据分析
  15. classpath根目录
  16. visio中将图片改为平行四边形_如何用Photoshop将一张长方形的照片变成平行四边形?...
  17. echarts在中国地图上绘制各省指标
  18. 响铃:云计算的时代 2.0的江湖 百度的新赛道战术
  19. 萨提亚领衔主题演讲,带领高管和MVP合影,预告Julia女神的演讲中将有我的.NET Core实践
  20. 分享几个默认密码在线查询网站

热门文章

  1. 个人用linux的常用软件和一些问题的解决方案
  2. 面试官一看就想留下的简历,到底是怎么写的?
  3. windows server 2016使用RemoteApp
  4. python平台_python平台(几个不错的python接单平台)
  5. 浅析ODS与EDW 关系(转载)
  6. Excel图表之美-陈明霞-专题视频课程
  7. html代码消失一半,div css最后一排文字字体显示一半显示不全
  8. 建群网培PMP每日一练2020-7-24
  9. Meipai–Capture the wonders美好瞬间用美拍补捉
  10. 听说你天天加班,那就不给你加薪了