[转帖]图解LVS

图解,lvs · 浏览次数 : 0

小编点评

**LVS转发效率比较高的几种模式:** * **DR模式 (Direct Routing):**请求包直接从客户端发送到后端服务器,转发效率最高,但需要配置arp_ignore参数为1。 * **NAT模式 (Network Address Translation):**请求包和响应包都需要经过LB处理,转发效率较低,但可以跨网段转发。 * **natFULLNAT模式:**LB对请求包和响应包都做SNAT+DNAT,转发效率最低,但可以实现跨网段访问。 * **ip Tunnel 模式:**LB在数据包外面再封装了一层Ip Tunnel 头部,并将源地址改写为RS的物理地址,目的地址改写为LB的物理地址,从而实现跨网段访问。

正文

https://www.jianshu.com/p/89c6f27771a4

 

LVS (linux virtual server)是 Linux标准内核的一部分。基于TCP/IP的负载均衡技术,转发效率极高,具有处理百万计并发连接请求的能力。由于工作在linux内核层,转发效率比工作在应用层的nginx,haproxy转发效率更高

IPVS

LVS的IP负载均衡技术是通过IPVS模块实现的。IPVS模块是LVS集群的核心软件模块,它安装在LVS集群作为负载均衡的主节点上,虚拟出一个IP地址和端口对外提供服务。用户通过访问这个虚拟服务(VS),然后访问请求由负载均衡器(LB)调度到后端真实服务器(RS)中,由RS实际处理用户的请求给返回响应。

四种转发模式

DR(Direct Routing)

客户端的请求包到达负载均衡器的虚拟服务IP端口后,负载均衡器不会改写请求包的IP和端口,但是会改写请求包的目的MAC地址为后端RS的MAC地址,然后将数据包转发;真实服务器处理请求后,响应包直接回给客户端,不再经过负载均衡器。所以DR模式的转发效率是最高的,特别适合下行流量较大的业务场景,比如请求视频等大文件。
数据包在LB转发过程中,源/目的IP端口都不会变化
每台RS上都必须在LO环回网卡上绑定LB的虚拟服务IP
RS上的业务进程必须监听在环回网卡的虚拟服务IP上,且端口必须和LB上的虚拟服务端口一致
RS处理完请求后,响应直接回给客户端,不再经过LB
LB和RS须位于同一个广播域
DR模式下要求arp_ignore参数要求配置为1。
DR模式下要求arp_announce参数要求配置为2。

 
dr

 

NAT(Network Address Translation)

NAT模式下,请求包和响应包都需要经过LB处理。当客户端的请求到达虚拟服务后,LB会对请求包做目的地址转换(DNAT),将请求包的目的IP改写为RS的IP。当收到RS的响应后,LB会对响应包做源地址转换(SNAT),将响应包的源IP改写为LB的IP。
LB会修改数据包的地址
LB会透传客户端IP到RS(DR模式也会透传)
需要将RS的默认网关地址配置为LB的浮动IP地址
LB和RS须位于同一个广播域,并且客户端不能和LB/RS位于同一子网


 
nat

FULLNAT

FULLNAT模式下,LB会对请求包和响应包都做SNAT+DNAT。
LB完全作为一个代理服务器。FULLNAT下,客户端感知不到RS,RS也感知不到客户端,它们都只能看到LB。
LB和RS对于组网结构没有要求

 
fullnat

 

IP TUNNEL

IP TUNNEL模式下,LVS通过在IP数据包外面再封装了一层Ip Tunnel 头部,将数据包的源地址改写为LVS自身的物理地址,目的地址改写为RS的物理地址,从而实现跨网段访问RS。整个过程看起来好像LVS和RS之间有一条隧道,数据包通过这条虚拟的隧道进行传输。真实服务器收到请求后,会先将外面封装的Ip Tunnel头去掉,然后处理里面实际的请求报文;与DR模式类似,响应包也不再经过LVS,而是直接返回给客户端。所以Ip Tunnel模式的转发效率虽然弱于DR,但是强于NAT。

不改写原有请求包的信息,类似IP隧道方式直接添加IP头部,转发给RS。
相应包不通过LVS直接返回给客户端


 
ip tunnel

Ip Tunnel模式下需要将RS上的rp_filter参数配为0,否则无法正常工作,因为RS是在物理网卡收到请求,但是VIP是绑在虚拟网卡tunl0上的。
IP TUNNEL模式增加的头部可能导致网络包分片引发不确定的通信问题。解决办法是降低RS侧的MSS值。

iptables -A OUTPUT -s xxx -p tcp --tcp-flags ALL SYN,ACK -j TCPMSS --set-mss 1400

转发模式对比

性能从高到低:DR > IP TUNNEL >NAT >FULLNAT

Ip Tunnel模式最大的优点就在于它可以跨网段转发,没有DR和NAT模式的组网限制。这在部署上带来的很大的灵活性,甚至还可以跨机房转发,不过不建议这样使用,一是会带来跨机房间的流量,提高了成本;二是跨机房转发必然会要在RS机房上绑定LVS机房的VIP,这有可能会被运营商的防火墙认为是IP伪造请求而拦截。

虽然FULLNAT模式的性能比不上DR和NAT,但是FULLNAT模式没有组网要求,允许LB和RS部署在不同的子网中,这给运维带来了便利。并且 FULLNAT模式具有更好的可拓展性,可以通过增加更多的LB节点,提升系统整体的负载均衡能力。

与[转帖]图解LVS相似的内容:

[转帖]图解LVS

https://www.jianshu.com/p/89c6f27771a4 LVS (linux virtual server)是 Linux标准内核的一部分。基于TCP/IP的负载均衡技术,转发效率极高,具有处理百万计并发连接请求的能力。由于工作在linux内核层,转发效率比工作在应用层的ngi

[转帖]图解epoll

图解epoll 本文包含以下内容: epoll是如何工作的 本文不包含以下内容: epoll 的用法 epoll 的缺陷 select 和 poll 的缺点 epoll 对于动辄需要处理上万连接的网络服务应用的意义可以说是革命性的。对于普通的本地应用,select 和 poll可能就很好用了,但对于

[转帖]图解架构 | SaaS、PaaS、IaaS

http://blog.itpub.net/70024420/viewspace-2925243/ 上次聊到了架构图如何画,其中涉及到了云服务的架构图,里面提到了很重要的三个概念 PaaS、IaaS、SaaS,很有必要在这里总结一波。 架构图,so easy? 本文内容如下: 随着互联网行业的飞速发

[转帖]图解一致性哈希算法,看这一篇就够了!

http://blog.itpub.net/70024420/viewspace-2925492/ 接下来介绍一个非常重要、也非常实用的算法:一致性哈希算法。通过介绍一致性哈希算法的原理并给出了一种实现和实际运用的案例,带大家真正理解一致性哈希算法。 一、背景 在具体介绍一致性哈希算法之前,先问一个

[转帖]图解第四代英特尔至强可扩展处理器家族

https://aijishu.com/a/1060000000379987 今天,代号Sapphire Rapids(SPR)的第四代英特尔至强(Intel Xeon)可扩展处理器,终于来了。 从三代Lake变到Rapids,有继承,有发展。这里的继承是指2D Mesh(网格)架构,发展是指Chi

[转帖]图解:什么是红黑树?

https://zhuanlan.zhihu.com/p/273829162 注:本文比较硬核但是很值得大家花心思看完,看完你一定会有所收获的 红黑树是面试中一个很经典也很有难度的知识点,网传字节跳动面试官最喜欢问这个问题。很多人会觉得这个知识点太难,不想花太多功夫去了解,也有人会认为这个数据结构在

[转帖]长篇图解 etcd 核心应用场景及编码实战

https://xie.infoq.cn/article/3329de088beb60f5803855895 一、白话 etcd 与 zookeeper 二、etcd 的 4 个核心机制 三、Leader 选举与客户端交互 四、etcd 的应用场景 4.1. kubernetes 大脑 4.2. 服

[转帖]⭐万字长篇超详细的图解Tomcat中间件方方面面储备知识⭐

https://developer.aliyun.com/article/885079?spm=a2c6h.24874632.expert-profile.321.7c46cfe9h5DxWK 2022-04-13 132举报 简介: LNMT 1.JAVA简介 常见的大型平台有LNMP、LNMP、

[转帖]网络包的内核漂流记 Part 1 - 图解网络包接收流程

https://blog.mygraphql.com/zh/notes/low-tec/network/kernel-net-stack/ 目录 目录 《网络包的内核漂流记》系列介绍 风格、样式、本文的交互阅读方式 📖 ISO 网络模型 网络包接收流程概述 网络包接收步骤 初始化与配置 IRQ 处

【转帖】71.常用的显示GC日志的参数、GC日志分析、日志分析工具的使用

目录 1.常用的显示GC日志的参数2.图解垃圾`GC`日志(重要)3.日志分析工具的使用 1.常用的显示GC日志的参数 解释: 日志中,GC和Full GC表示的是GC的类型。GC只在新生代进行,Full GC包括新生代和老年代、方法区。 Allocation Failure:GC发生的原因,一般新