负载均衡器对比(LVS & Nginx)

负载均衡器对比(LVS & Nginx)

应用层 : 网络服务与最终用户的一个接口。协议有:HTTP FTP TFTP SMTP SNMP DNS

表示层: 数据的表示、安全、压缩 格式有,JPEG、ASCll、DECOIC、加密格式等在五层模型里面已经合并到了应用层)

会话层 建立、管理、终止会话。(在五层模型里面已经合并到了应用层)

传输层 定义传输数据的协议端口号,以及流控和差错效验。协议有:TCP UDP,数据包一旦离开网卡即进入网络传输层

网络层 进行逻辑地址寻址,实现不同网络之间的路径选择 协议有:ICMP IGMP IP(IPV4 IPV6) ARP RARP

数据链路层 建立逻辑连接、进行硬件地址寻址、差错效验等功能。(由底层网络定义协议)

物理层 建立、维护、断开物理连接。(由底层网络定义协议)

简记:应 表 会 传 网 数 物

四层:IP+PORT转发 七层:协议+内容交换

四层负载 在四层负载设备中,把client发送的报文目标地址(原来是负载均衡设备的IP地址),根据均衡设备设置的选择web服务器的规则选择对应的web服务器IP地址,这样client就可以直接跟此服务器建立TCP连接并发送数据。

七层代理 七层负载均衡服务器起了一个反向代理服务器的作用,服务器建立一次TCP连接要三次握手,而client要访问webserver要先与七层负载设备进行三次握手后建立TCP连接,把要访问的报文信息发送给七层负载均衡;然后七层负载均衡再根据设置的均衡规则选择特定的webserver,然后通过三次握手与此台webserver建立TCP连接,然后webserver把需要的数据发送给七层负载均衡设备,负载均衡设备再把数据发送给client;所以,七层负载均衡设备起到了代理服务器的作用。

LVS

简介:

LVS的是Linux Virtual Server的简写,翻译为Linux虚拟服务器,即一个虚拟的服务器集群系统,
是由我国章文嵩博士在1998年5月所研究成立,也是中国国内最早出现的自由软件项目之一。
LVS由2部分程序组成,包括 ipvs 和 ipvsadm
​
1. ipvs(ip virtual server):一段代码工作在内核空间,叫ipvs,是真正生效实现调度的代码。
2. ipvsadm:另外一段是工作在用户空间,叫ipvsadm,负责为ipvs内核框架编写规则,定义谁是集群服务,而谁是后端真实的服务器(Real Server)
​

LVS相关的几种IP:

VIP :(virtual IP)   LVS服务器上接收外网数据报文的网卡IP地址
DIP: (director IP)  LVS服务器上发送数据报文到real server的网卡IP地址
RIP :(real server)  真实服务器上的IP,即提供服务的服务器IP(常简称为RS)
CIP :(client IP )   客户端的IP
​

工作模式:LVS常用的工作模式有DR模式、TUN模式、以及NAT模式

1.DR模式 直接路由: Director Route

(1).工作原理

每个RS(Real Server)上都有两个IP:VIP和RIP,但是VIP是隐藏的,即不能提供解析等功能,
只是用来做请求回复的源IP的,Director(VS)上只需要一个网卡,在该网卡上配置两个IP:VIP和DIP,
在VS接收到客户端的请求后,VS根据负载算法选择一台RS的网卡mac作为客户端请求包中的目标mac,
通过arp转交给后端RS处理,后端RS再通过自己的路由网关回复给客户端client。

2.TUN模式

(1).工作原理

它的连接调度和管理与LVS/NAT中的一样,利用ip隧道技术的原理,即在原有的客户端请求包头中再加一层IP Tunnel的包头ip首部信息,
不改变原来整个请求包信息,只是新增了一层ip首部信息,再利用路由原理将请求发给RS server,不过要求的是所有的server必须支持”IPTunneling”或者”IP Encapsulation”协议。
​

(2).特点

1.RIP、VIP、DIP全是公网地址
2.RS的网关不会也不可能指向DIP
3.所有的请求报文经由Director Server,但响应报文必须不能进过Director Server
4.不支持端口映射,
5.RS的系统必须支持隧道
​

3.NAT模式

(1).工作原理

当数据包到达VS时,VS做目标地址转换(DNAT),将目标IP改为RS的IP。RS接收到数据包以后,仿佛是客户端直接发给它的一样。
RS处理完,返回响应时,源IP是RIP,目标IP是客户端的IP。这时RS的包通过网关(VS)中转,VS会做源地址转换(SNAT),
将包的源地址改为VIP,这样,这个包对客户端看起来就仿佛是VS直接返回给它的
​

(2). 特点

1.RS应该使用私有地址,RS的网关必须指向DIP
2.DIP和RIP必须在同一个网段内
3.请求和响应报文都需要经过DS,高负载场景中,DS易成为性能瓶颈
4.支持端口映射
5.RS可以使用任意操作系统
6.缺陷:对Director Server压力会比较大,请求和响应都需经过director server
​

优点:

​
1、抗负载能力强、是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3、工作稳定,因为其本身抗负载能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
4、无流量,LVS只分发请求,而流量并不从它本身出去,这点保证了均衡器IO的性能不会收到大流量的影响。
5、应用范围比较广,因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、在线聊天室等等。
​
缺点:
1、软件本身不支持正则表达式处理,不能做动静分离;而现在许多网站在这方面都有较强的需求,这个是Nginx/HAProxy+Keepalived的优势所在。
2、如果是网站应用比较庞大的话,LVS/DR+Keepalived实施起来就比较复杂了,特别后面有WindowsServer的机器的话,如果实施及配置还有维护过程就比较复杂了,相对而言,Nginx/HAProxy+Keepalived就简单多了。
​

Ngnix

应用方向 正向代理 反向代理 负载均衡 HTTP服务器(包含动静分离)

Nginx是一款轻量级的Web服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。
国内使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。

工作原理

1. Nginx由内核和模块组成。Nginx本身做的工作实际很少,当它接到一个HTTP请求时,它仅仅是通过查找配置文件将此次请求映射到一个location block,

2. 而此location中所配置的各个指令则会启动不同的模块去完成工作,因此模块可以看做Nginx真正的劳动工作者。
3. 通常一个location中的指令会涉及一个handler模块和多个filter模块(当然,多个location可以复用同一个模块)。
4. handler模块负责处理请求,完成响应内容的生成,而filter模块对响应内容进行处理。用户根据自己的需要开发的模块都属于第三方模块。正是有了这么多模块的支撑,Nginx的功能才会如此强

Nginx的模块从功能上分为:

Core    :   核心模块;构建nginx基础服务、管理其他模块。
Handlers: 处理器模块;此类模块直接处理请求,并进行输出内容和修改headers信息等操作。Handlers     处理器模块一般只能有一个。
Filters : 过滤器模块,此类模块主要对其他处理器模块输出的内容进行修改操作,最后由Nginx输出。
Proxies :  代理类模块;此类模块是Nginx的HTTP Upstream之类的模块,这些模块主要与后端一些服务比如Fast CGI等进行交互,实现服务代理和负载均衡等功能。

Nginx的核心模块:主要负责建立nginx服务模型、管理网络层和应用层协议、以及启动针对特定应      用的一系列候选模块。
其他模块负责分配给web服务器的实际工作:
    (1) 当Nginx发送文件或者转发请求到其他服务器,由Handlers(处理模块)或Proxies(代理类模块)提供服务;
    (2) 当需要Nginx把输出压缩或者在服务端加一些东西,由Filters(过滤模块)提供服务。

Nginx模块处理流程:

1.客户端发送HTTP请求
2.Nginx基于配置文件中的位置选择一个合适的处理模块
3.负载均衡模块选择一台后端服务器 (如果有)
4.处理模块进行处理并把输出缓冲放到第一个过滤模块上
5.第一个过滤模块处理后输出给第二个过滤模块 
6.然后第二个过滤模块又到第三个 
7.依此类推,最后把响应发给客户端。

优点

1、工作在网络7层之上,可针对http应用做一些分流的策略,如针对域名、目录结构,它的正规规则比HAProxy更为强大和灵活,所以,目前为止广泛流行。
2、Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能。
3、Nginx安装与配置比较简单,测试也比较方便,基本能把错误日志打印出来。
4、可以承担高负载压力且稳定,硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS小。
5、Nginx可以通过端口检测到服务器内部的故障,如根据服务器处理网页返回的状态码、超时等,并会把返回错误的请求重新提交到另一个节点。
6、不仅仅是优秀的负载均衡器/反向代理软件,同时也是强大的Web应用服务器。LNMP也是近些年非常流行的Web架构,在高流量环境中稳定性也很好。
7、可作为中层反向代理使用。
8、可作为静态网页和图片服务器。
9、Nginx社区活跃,第三方模块非常多,相关的资料在网上比比皆是。

Nginx缺点

1、适应范围较小,仅能支持http、https、Email协议。
2、对后端服务器的健康检查,只支持通过端口检测,不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传过程中出现故障,Nginx会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果是上传一个很大的文件或者很重要的文件的话,用户可能会因此而不满。

你可能感兴趣的:(负载均衡,linux,nginx,lvs)