| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 网络协议 -> LVS的四种工作模式总结对比 -> 正文阅读 |
|
[网络协议]LVS的四种工作模式总结对比 |
目录 LVS作为一种负载均衡器,有4种工作模式,分别是NAT、DR、TUN、FULLNAT。 为了总结的时候方便,先罗列一下相关的术语: 负载均衡器:Load Balancer,简写成LB。 RS:Real Server,真实服务器。在不同的负载均衡软件里有不同的名称。nginx中叫upstream server,HAproxy中叫backend server。 CIP:客户端的IP。 VIP:虚拟服务IP,LB的外网IP,也就是客户端请求的IP。 DIP:LB内网的IP,负责与RS的连接与通信。 RIP:RS的IP。 使用lvs后一般的访问流程为:CIP<==>VIP==DIP<==>RIP。 lvs工作模式介绍下面分别对这4种工作模式进行介绍。 一、NAT模式NAT模式工作流程如下: ?①客户端发送请求到lvs。 ?②lvs根据指定的调度算法重写请求报文包的目标IP端口为某一个RS的RIP和端口并将请求转发给这个RS。 ?③RS处理请求,并将请求的响应返回给lvs。 ?④lvs将响应报文的源IP和端口还原成之前请求的目标地址和端口。 ?⑤lvs将修改后的响应报文返回给客户端。 LVS的本质是多目标IP的DNAT,通过将请求报文中目标IP和端口修改为某个RS的RIP和端口来实现请求的转发。 NAT模式具有如下特点: ⑴RIP和DIP应在同一个IP网络,且应该使用私网地址,RS的网关要指向DIP ⑵请求报文和响应报文都经由lvs转发,lvs容易成为系统瓶颈。 ⑶支持端口映射,可修改请求报文的目标端口。 ⑷lvs必须在linux系统,RS可以在任意系统。 ⑸需要开启ip_forward。 二、DR模式DR(直接路由)模式工作流程如下: DR模式是lvs的默认模式,也是应用得最为广泛的一种模式。它通过为请求报文重新封装一个MAC首部来进行转发。封装的MAC首部中源MAC地址是DIP所在接口的MAC,目标MAC是某个RS的RIP所在接口的MAC;源IP、端口,以及目标IP、端口都保持不变。 下图展示了这种MAC地址变更: ?可以看到,请求的转发过程中源IP和目标IP,包括端口都不会变更。只会修改目标MAC地址。 这里有一个问题,lvs和RS在同一个物理网络内,其上都绑定了VIP,如何确保IP地址不发生冲突? 答案是:在一个物理网中,是通过ARP广播的形式来确认IP地址是否冲突。只要在别的机器发出某个IP是否已存在的广播时本机不作出回应,且本机也不发出广播,就可以避免IP地址发生冲突。 另外需要设置RS上的VIP不对外公布,这样客户端就不能直接通过IP地址进行访问,而是需要通过lvs才可以访问。 DR模式的特点如下: ⑴lvs和各RS上都配置有VIP,RS的VIP配置在回环网卡(lo)上。 ⑵需要确保前端路由器将目标IP为VIP的请求报文发送给lvs,而不是某一个RS。有以下3种方式可以实现:
⑶RS的RIP使用公网和私网地址都可以。RIP和DIP要在同一物理网络,RIP网关不能指向DIP,以确保请求报文经过lvs而响应报文不经过lvs,响应报文由RS直接发给客户端。 ⑷不支持端口映射。 ⑸无需开启ip_forward。 ⑹RS可使用大多数OS系统。 DR模式适用于LAN环境中。 ?三、TUN模式TUN(IP隧道)模式工作流程如下: 这种方式不修改请求报文的IP首部((源IP是CIP,目标IP是VIP)),而是通过在原报文外再封装一个IP首部(源IP是DIP,目标IP是RIP),将报文发送给某个目标RS,该RS直接响应客户端(源IP是VIP,目标IP是CIP)。示意图如下: TUN模式的特点概括如下: ⑴RIP和DIP可处于不同物理网络,RS网关不能指向DIP,且RIP可以和公网通信。也就是说,TUN模式的集群节点可以跨互联网。DIP、VIP、RIP可以是公网地址。 ⑵RS的TUN接口上要配置VIP,以便接收lvs转发过来的数据包,并作为响应报文的源IP。 ⑶lvs将请求转发给RS时需要使用隧道,隧道外层IP首部源IP是DIP,目标IP是RIP。而RS响应客户端的IP首部是根据隧道内层IP首部分析得到,其源IP是VIP,目标IP是CIP。上面已经有分析。 ⑷请求报文经由lvs,响应报文由RS自己发送,不经过lvs。 ⑸不支持端口映射。 ⑹RS的操作系统需支持IP隧道功能。 TUN模式适用于缓存服务器组的负载调度,这些缓存服务器在不同的网络环境中,可以就近返回响应给客户端。 TUN模式可用于WAN环境中,但在实际的WAN环境中,一般使用haproxy/nginx/DNS来实现,跨机房应用一般使用专用光纤或者DNS。 四、FULLNAT模式FULLNAT的工作流程如下: ? FULLNAT工作流程分析: ①客户端向VIP发送请求。 ②lvs接收请求,对请求报文做FULLNAT处理,把源IP改为DIP,目标IP改为某个后端RS的RIP,并将请求报文发给该RS。 ③RS收到请求后,会进行响应,响应报文的源IP为RIP,目标IP为DIP。 ④lvs接收到响应后再次进行FULLNAT处理,将源IP改为VIP,目标IP改为CIP。 从以上的过程可以看出,FULLNAT是通过同时修改报文的源IP(SNAT)和目标IP(DNAT)来实现转发的。 FULLNAT模式有如下特点: ⑴VIP为公网IP,RIP和DIP为私网IP,且RIP跟DIP一般不在同一网络,因此RIP网关不会指向DIP。 ⑵RS接收到的请求报文源IP是DIP,所以会响应给DIP。lvs要将其发往客户端,需要再次修改源IP和目标IP。 ⑶请求和响应报文都需要经过lvs。 ⑷相对于NAT模式,可以更好地实现lvs与RS间跨VLAN进行通信。 ⑸支持端口映射。 值得说明的是,linux内核默认不支持这种模式。 四种工作模式的对比
?四种工作模式中DR模式是最常用的,它的高性能结合DNS负载技术可实现集群的高可用。 |
|
网络协议 最新文章 |
使用Easyswoole 搭建简单的Websoket服务 |
常见的数据通信方式有哪些? |
Openssl 1024bit RSA算法---公私钥获取和处 |
HTTPS协议的密钥交换流程 |
《小白WEB安全入门》03. 漏洞篇 |
HttpRunner4.x 安装与使用 |
2021-07-04 |
手写RPC学习笔记 |
K8S高可用版本部署 |
mySQL计算IP地址范围 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:48:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |