接入层LVS

Nginx是高性能服务器.其性能远高于业务服务器.但是Nginx毕竟是一个应用层软件.单台Nginx服务器能承载的用户请求也是有上限的.当日活用户发展到一定规模后.就需要用Nginx集群才能顶住压力.既然是集群.势必需要引入一个中间层作为协调者.其负责决定将用户请求转发到哪台Nginx服务器.这个协调者需要有比Nginx更高的性能.它就是LVS.是一个虚拟的服务器集群系统.从Linux2.6版本开始它已经成为Linux内核的一部分.即LVS运行于操作系统层面.

Nginx是基于OSI参考模型的第七层(应用层)协议开发的.采用了异步转发形式.Nginx在保持客户端连接的同时新建一个与业务服务器的连接.等待业务服务器返回响应数据.然后在将响应数据返回给客户端.Nginx选择异步转发的好处是可以失败转移.即.如果与某台业务服务器的连接发生故障.那么就可以换另一个连接.提高了服务的稳定性.Nginx主要强调的是代理.

LVS是基于OSI参考模型的第四层(网络层)协议开发的.采用了同步转发形式.当LVS监听到有客户端请求到来时.会直接通过修改数据包的地址信息将流量转发到下游服务器.让下游服务器与客户端直接连接.LVS主要强调的是转发.

由于LVS基于OSI参考模型的网络层.免去了请求到应用层的层层解析工作.而且LVS工作于操作系统层面.所以LVS相比于Nginx有更高的性能.LVS用于网络接入层时也被称为四层负载均衡器.既然LVS四层负载均衡器做的主要工作是转发.那么就需要讨论一下转发模式.目前LVS主要有四种转发模式.NAT模式.FULLNAT模式 TUN模式. DR模式.

LVS常用名词和概念:

DS:

四层负载均衡器节点.也就是运行LVS的服务器.DS和LVS作为角色时是一个意思.

RS:

DS请求转发的目的地.即真实的工作服务器.

VIP:

客户端请求的目的IP地址.实际指的是DS的公网IP地址.

DIP:

用于DS与RS通信的IP地址.实际指的是DS的内网IP地址.

RIP:

后端服务器的IP地址.

CIP:

客户端IP地址.

NAT模式:

NAT模式是指通过修改请求报文的目标IP地址和目标端口号实现DS到某个RS的请求转发.在此模式下.网络报文的请求与响应都要经过DS的处理.DS是RS的网关.过程如下.

1.客户端发请求到LVS的VIP.请求到达DS.

2.DS选择一个RS作为请求转发的目的地.然后修改客户端请求的目的IP地址为对应RS的RIP.将请求从DIP发送给所选择的RS.

3.RS收到请求后.发现请求的目的IP地址是自己的IP地址(RIP).于是处理请求.然后返回响应数据.其中源IP地址为RIP.目的地址是CIP.

4.DS作为RS的网关会收到响应数据.然后修改响应数据的源地址为VIP.

5.客户端收到响应数据.

配置LVS NAT模式需要满足如下条件.

DS需要两块网卡.其中一块网卡面向公网提供的VIP.另一块网卡面向内部网络提供DIP.

DS需要和所有的RS处于同一个局域网内.并将DS设置为局域网的网关.否则RS的响应数据将无法传输到DS.

NAT模式的缺点也显而易见:客户端请求和服务器响应都会经过DS重写.而服务器数据的响应长度一般大于客户端请求长度.响应数据会对DS造成网络宽带压力.成为性能瓶颈.

FULLNAT模式:

FULLNAT模式是NAT模式的优化版.它不要求DS与RS处于同一个局域网且作为网关.DS在NAT模式的基础上又做了一次源IP地址转化.这样一来.当RS返回响应数据时.根据IP地址即可将其正常路由到DS.而不需要强行指定DS为网关.FULLNAT模式的主要缺点是请求到达RS后会丢失客户端IP地址.

1.客户端发送请求到LVS的VIP.请求到达DS.

2.DS选择一个RS作为请求转发的目的地.然后分别修改客户端请求的目的IP地址为对应RS的RIP.源IP地址为DIP.然后将请求从DIP发送给所选择的RS.

3.RS收到请求后.发现请求的目的IP地址是自己的IP地址(RIP).于是处理请求.然后返回响应数据.其中源IP地址为RIP.目的IP地址为DIP.

4.DS通过数据传输层收到RS响应数据.然后分别修改响应数据的源IP地址为VIP.目的IP地址为CIP.

5.客户端收到响应数据.

TUN(IP隧道)模式:

DS通过IP隧道加密技术将请求报文封装到一个新的数据包中.并选择一个RS的IP地址作为新数据包的目的IP地址.然后将它发送到对应的RS.RS基于IP隧道解密技术解析出原数据包的内容.查看RS本地是否绑定了原数据包的目的IP地址.如果是.则处理请求并将响应结果通过网关返回给客户端.在TUN模式下.请求过程如下.

1.客户端发送请求到LVS的VIP.请求到达DS.

2.DS选择一个RS作为请求转发的目的地.并将数据包封装到一个新的数据包中.其中新数据包的源IP地址为DIP.目的IP地址为对应的RS的RIP.然后通过IP隧道发送新的数据包.

3.RS对IP隧道的数据包进行解析.得到原数据包.

4.RS看到原数据包的目的IP地址是VIP.而RS本地1o网卡也配置了此VIP.于是RS处理数据包.

5.RS返回响应数据.其中源IP地址为VIP.目的地址为CIP.响应数据通过网关到达客户端.

TUN模式特点:

1.DIP和RIP不一定非要在同一个网络环境中.IP隧道技术可以根据IP地址找到RS.

2.RS和DS所在的网络环境必须支持IP隧道技术.

3.除了DS.RS也需要配置VIP.这样一来.RS只有解析出原数据包的内容后才能确认数据包的目的IP地址是自己.另外需4.要VIP绑定到RS的1o网卡.这样才能防止对ARP(地址解析协议)进行响应.

5.DS仅负责将请求转发到RS.但是RS的响应数据不通过DS转发.而是直接发往客户端.所以TUN模式的性能高于NAT模式.

DR模式:

与TUN模式类似(DS仅转发请求并不转发响应数据).DR模式通过改写请求报文的MAC地址将请求转发到RS.然后RS将响应数据通过网关返回给客户端.假设客户端MAC地址 DS的地址和3个RS的MAC地址分别为M1~M5.在DR模式下进行请求转发的过程如下.

1.客户端发送请求到LVS的VIP.请求到达DS.

2.DS选择一个RS作为请求转发的目的地.并将数据包的目的MAC地址改为RS对应的MAC地址.然后通过局域网DIP发出数据包.

3.RS读取数据包.看到目的IP地址是VIP.已被绑定到RS本地的1o网卡.然后RS处理数据包.

4.RS返回响应数据.并将数据包的源MAC地址改为M3.将目的的MAC地址改为客户端MAC地址M1.然后RS通过网关将响应数据直接发送给客户端.

DR特点:

1.由于DS经过数据链路层(OSI参考模型的第二层).所以需要把RS的RIP和DS的DIP配置到同一个物理网络中.

2.除了DS.RS也需要在1o网卡上配置VIP.理由与TUN模式一致.

3.所有响应数据都不经过DS转发.与TUN模式一样.但是TUN模式涉及加密/解密IP隧道.性能不如DS模式.

四种 LVS 模式完整对比

相关推荐
404号扳手1 小时前
Java 基础知识(六)
java·后端
前端市界1 小时前
LotDB Vue 阿里云 ECS 部署实战记录
后端
卷无止境1 小时前
SimPy 进程通信:让仿真世界里的"对话"变得优雅
后端
ZengLiangYi1 小时前
多格式文件解析:JSONL / SQLite / Event Stream
前端·javascript·后端
前端市界1 小时前
使用 `acme.sh` + 阿里云 DNS API 申请 Let’s Encrypt 通配符证书,并配置 Nginx 自动续期
后端
卷无止境1 小时前
SimPy Events 深度解析:仿真世界的时间引擎
后端
Oo_行者_oO1 小时前
Spring Cloud 实现文件服务预览与静态资源映射
后端·spring
万少1 小时前
湖南卫视的秘密武器曝光!芒果灵创,专业AI影视创作平台
前端·javascript·后端
金銀銅鐵1 小时前
[Java] 自己写程序,来解析方法的 descriptor
java·后端