lvs四层转发和nginx七层转发的区别
一、LVS(负载均衡器)
1.1 LVS 简介
LVS,英文全称Linux Virtual Server,Linux虚拟服务器,是一个虚拟服务器集群。使用LVS技术要达到的目标是利用Linux操作系统和LVS集群软件实现一个高可用、高性能、低成本的服务器应用集群;利用LVS技术实现高可用、可伸缩的网络服务,如www服务、cache服务、DNS服务、FTP服务mail服务等。
1.2 LVS实现负载均衡原理
LVS 的 IP 负载均衡技术是通过 IPVS 模块来实现的,IPVS 是 LVS集群系统的核心软件,它的主要作用是:安装在 Director Server 上,同时在 Director Server上虚拟出一个IP 地址,用户必须通过这个虚拟的 IP 地址访问服务器。这个虚拟 IP 一般称为 LVS 的VIP,即 Virtual IP。访问的请求首先经过 VIP 到达负载调度器,然后由负载调度器从Real Server 列表中选取一个服务节点响应用户的请求。
Director Server: 调度服务器,将负载分发到RealServer的服务器上
Real Server: 真实服务器,真正提供应用服务的服务器
VIP: 虚拟IP地址,公布给用户访问的IP地址。比如:www.eti.org 域名就要解析到vip上提供服务
RIP: 真实IP地址,集群节点上使用的IP地址
DIP:Director连接到RealServer的IP地址(Director用于连接内外网络的IP地址,物理网卡上的IP地址。是负载均衡器上的IP)
CIP: 客户端IP
1.3 LVS 三种工作模式
1)NAT
NAT 原理:基于DNAT(目标地址转换)和SNAT(源地址转换)
①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP),后面统称为CIP,目标地址为VIP(负载均衡器前端地址,后面统称为VIP)。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的目标地址改为了后端服务器的RIP地址并将报文根据算法发送出去。
③.报文送到Real Server后,由于报文的目标地址是自己,所以会响应该请求,并将响应报文返还给LVS。
④.然后lvs将此报文的源地址修改为本机并发送给客户端。
优点:
集群中的物理服务器可以使用任何支持TCP/IP操作系统,只有负载均衡器需要一个合法的IP地址。
缺点:
扩展性有限。**当服务器节点(普通PC服务器)增长过多时,负载均衡器将成为整个系统的瓶颈,因为所有的请求包和应答包的流向都经过负载均衡器。**当服务器节点过多时,大量的数据包都交汇在负载均衡器那,速度就会变慢!
2)DR(是LVS的默认模式,应用最为广泛)
DR 原理:通过改写请求报文的目标MAC地址,将请求发给真实服务器的。而真实服务器响应后的处理结果直接返回给客户端用户。
3)TUN
TUN 模式原理:在原请求IP报文之外新加一个IP首部
①.客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
②.负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将在客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。
③.RS收到请求报文后,会首先拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会处理次请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。
二、四层七层对比
四层负载均衡 | 七层负载均衡(通常七层支持四层) | |
---|---|---|
技术原理 | ip+tcp(端口) | URL应用层(也称内容交换) |
典型代表 | LVS、F5等 | Nginx、Haproxy,MySQL Proxy等 |
优缺点 | 不能满足特定的需求,比如动静分离,缓存自定义等但是配置简单,效率也很高。 | 对负载均衡设备要求很高,处理七层能力一般低于四层模式的部署方式,但有点比较智能化,比如动静分离,根据不同请求定义图片,缓存,可以对客户端请求和服务器的相应进行自定义修改,极大提升了应用系统在网络层的灵活性 |
案例(工作原理) | 接受客户的syn请求,通过上述方式选择后端指定服务器,并对报文中目标ip地址进行修改,改为后端服务器ip,tcp连接是直接建立,而负载均衡类似路由器作用 | 如果要根据真正的应用层内容在选择服务器,则先代理最终服务器和客户端建立连接(三次握手)后,才可能接受到客户端发送的真正应用层内容报文,然后根据该报文中特定字段,加上负载均衡设备的服务器选择方式,决定最终选择的内部服务器。此时充当了代理服务器。 |
四层七层选择
1、 根据需求使用,七层可以提高流量智能化,但配置复杂化
2、 追求安全性,或者性能
3、 考虑灵活性和扩展性
LVS
1、抗负载能力强、性能高,能达到 F5 硬件的 60%;对内存和 cpu 资源消耗比较低
2、工作在网络4层,通过 vrrp 协议转发(仅作分发之用),具体的流量由 linux 内核处理,因此没有流量的产生。
2、稳定性、可靠性好,自身有完美的热备方案;(如:LVS + Keepalived)
3、应用范围比较广,工作在四层,所以不用考虑要处理的具体应用,可以对所有应用做负载均衡;
4、不支持正则处理,不能做动静分离。
5、支持负载均衡算法:rr(轮循)、wrr(带权轮循)、lc(最小连接)、wlc(权重最小连接)
6、配置复杂,对网络依赖比较大,稳定性很高。
Ngnix
1、工作在网络的7层之上,可以针对 http 应用做一些分流的策略,比如针对域名、目录结构;
2、Nginx 对网络的依赖比较小,理论上能 ping 通就就能进行负载功能;
3、Nginx 安装和配置比较简单,测试起来比较方便;
4、也可以承担高的负载压力且稳定,一般能支撑超过1万次的并发;
5、Nginx 仅能支持http、https 和 Email 协议,这样就在适用范围较小;
6、支持负载均衡算法:Round-robin(轮循)、Weight-round-robin(带权轮循)、Ip-hash(Ip哈希);
7、Nginx 还能做 Web 服务器即Cache功能;
Comments | 0 条评论