大型网站高并发解决方案LVS(二)

四层负载和七层负载

所谓四层就是基于IP+端口 的负载均衡,主要代表就是LVS
七层负载也称内容交换,就是基于URL等应用层信息的负载均衡,主要代表就是NGINX

关于代理:
负载均衡&&代理
负载均衡也叫代理,是代理的一种

代理
正向代理:
只用于代理内部网络对Internet的连接请求,客户机必须制定代理服务器,并将本来要直接发送到web服务器上的请求发送到代理服务器中,正向代理指的是客户端代理,是由用户控制并知晓的一种代理方式,比如我不能访问FB,然后使用了某国外代理服务器作为跳板机,访问成功,这种就是正向代理(就像路由器)
反向代理:
指代理服务器来接受Internet的连接请求,然后将请求转发给内部网络上的服务器,并将服务器得到的结果返回给Internet上请求连接的客户端,此时代理服务器对外就表现为一个服务器,反向代理指的是服务端代理,大型网站背后不只有一台服务器提供服务。代理服务器对用户不可见,用户只会感觉一台机器交互

正代和反代

LVS概述
LVS 是Linux Virtual Server , Linux 虚拟服务器
LVS 工作在一台Server上 提供Directroy(负载均衡器)的功能,本身并不提供服务,只是把特定的请求转发给对应的RealServer(真实提供服务的主机)从而实现集群环境中的负载均衡
框架:
LB-SERVER 负载均衡器
Realy-Server 真实服务器

LVS工作模式

NAT模式

工作原理:
客户端将请求发往前端的负载均衡器,请求报文源地址是CIP(客户端IP)。目标地址为VIP(负载均衡器前端地址)
负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它会将客户端请求报文的目标地址改为后端服务器的RIP(真实服务器地址)并将报文根据算法发送出去
报文送到Real-Server后,由于报文的目标地址是自己,所以会响应请求,并将响应报文反还给LVS
然后LVS将此报文的源地址修改为本机并发送给客户端

注意在NAT模式中,Real-Server的网关必须指向LVS,否则报文会无法发送给客户端

缺点:Director 可能成为系统性能瓶颈,所有请求都由director处理应答
常规服务器只能小于20台主机(10台可能就到瓶颈了)

DR直连路由模式

工作原理:
客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的源MAC地址改为自己的DIP的MAC地址,目标MAC地址改为RIP的MAC地址,并将此包发送给RS(路由器功能)。
RS发现请求报文中的目的MAC是自己,就会将此次报文接收下来,处理完请求报文之后,将响应报文通过lo接口送给eth0网卡直接发送给客户端(去网络瓶颈)。

特点:
1,集群节点和Director 必须在一个物理网段内
2,RIP可以使用公网地址或私有地址
3,Director仅处理入站请求
4,集群节点网关不指向director,故出站不经过director
5,不支持端口映射
6,大多数操作系统可以作为Real-Server,要支持隔离arp广播
7,director 服务器的压力比较小

TUN-IP隧道模式

工作原理:
客户端将请求发往前端的负载均衡器,请求报文源地址是CIP,目标地址为VIP。
负载均衡器收到报文后,发现请求的是在规则里面存在的地址,那么它将客户端请求报文的首部再封装一层IP报文,将源地址改为DIP,目标地址改为RIP,并将此包发送给RS。
RS接收到请求报文后,会收线拆开第一层封装,然后发现里面还有一层IP首部的目标地址是自己lo接口上的VIP,所以会再次处理请求报文,并将响应报文通过lo接口送给eth0网卡直接发送给客户端。
特点:
负载均衡器只负责将请求包发给后端节点服务器,而RS将应答包直接发给用户,所以,减少了负载均衡器的大量数据流动,负载均衡器不再是系统的瓶颈,就能处理很巨大的请求量,这种方式,一台负载均衡器能够为很多RS进行分发,而且跑在公网上就能进行不同地域的分发
缺点:
隧道模式的RS节点需要合法IP,这种方式需要所有的服务器支持IP Tunneling(IP Encapsulation )协议,服务器可能只局限于在部分Linux系统上
节点<100

FULL-NAT

Full-NAT 由此而生,解决的是LVS和RS跨VLAN的问题,而跨VLAN问题解决后,LVS和RS不再存在VLAN上的从属关系,可以做到多个LVS对应多个RS,解决水平扩容的问题

模式对比

轮询算法

Fixed Scheduling Method 静态调服方法

RR 轮询

调度器通过”轮叫”调度算法将外部请求按照顺序轮流分配到集群中的真实服务器上,它均等的对待每一台服务器,而不管服务器上实际的连接数和系统负载

WRR加权轮询

调度器通过”加权轮叫”的调度算法根据真实服务器的不同处理能力来调度访问请求,这样可以保证处理能力强的服务器处理更多的访问流量,调度器可以自动问询真实服务器的负载情况,并动态的调整其权值

DH 目标地址hash

“目标地址散列”调度算法根据请求的目标IP地址,作为散列键(Hash) 从静态分配的散列表找出对应的服务器,若该服务器是可用的且未超载,将请求发送到该服务器,否则返回空

SH 源地址hash

“源地址散列”调度算法根据请求的源IP地址,所谓散列键(Hash) 从静态分配的散列表中找出对应的服务器,若该服务器是可用且未超载,将请求发送到该服务器,否则返回空

Dynameic Scheduling Method 动态调度算法

LC 最少连接

调度器通过”最少连接”调度算法动态的将网络请求调度到已建立链接数最少的服务器上,如果集群系统的真实服务器具有相近的系统性能,采用”最少连接”调度算法可以较好的均衡负载

加权最少连接

如果服务器的资源容量各不相同,那么“加权最少连接”方法更合适:由管理员根据服务器情况定制的权重所决定的活跃连接数一般提供了一种对服务器非常 平衡的利用,因为他它借鉴了最少连接和权重两者的优势。通常,这是一个非常公平的分配方式,因为它使用了连接数和服务器权重比例;集群中比例最低的服务器 自动接收下一个请求。但是请注意,在低流量情况中使用这种方法时,请参考“最小连接数”方法中的注意事项。

LBLC 基于本地的最少连接

“基于局部性的最少连接” 调度算法是针对目标IP地址的负载均衡,目前主要用于Cache 集群系统,该算法根据请求的目标IP地址找出该目标IP地址最近使用的服务器,若该服务器是可用的且没有超载,请求将发送到该服务器;若服务器不存在,或者该服务器超载且有服务器处于一半的工作负载,则用”最少连接”的原则选出一个可用的服务器,将请求发送到该服务器

LBLCR 带复制的基于本地的最少连接

带复制的基于局部性最少链接”调度算法也是针对目标IP地址的负载均衡,目前主要用于Cache集群系统。它与LBLC算法的不同之处是它要维护从一个目标IP地址到一组服务器的映射,而LBLC算法维护从一个目标IP地址到一台服务器的映射。该算法根据请求的目标IP地址找出该目标IP地址对应的服务器组,按”最小连接”原则从服务器组中选出一台服务器,若服务器没有超载,将请求发送到该服务器,若服务器超载;则按”最小连接”原则从这个集群中选出一台服务器,将该服务器加入到服务器组中,将请求发送到该服务器。同时,当该服务器组有一段时间没有被修改,将最忙的服务器从服务器组中删除,以降低复制的程度

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据