web负载均衡的多种解决方案

阅读数:94 评论数:0

跳转到新版页面

分类

架构学

正文

一、集中式负载均衡

1.反向代理

反向代理服务的核心工作主要是转发HTTP请求,因为它工作在HTTP层(应用层),也就是网络结构中的第七层,因此也被称为”七层负载均衡“,可以做反向代理的软件很多,比较常见的一种是Nginx。

对于同一个登录用户的请求,无法保证一定分配到相同的Web机器上,会导致无法找到session的问题。解决方案主要有两种:

(1)配置反向代理的转发规则,让同一个用户的表求证 定落到同一台机器上(通过分析cookie),复杂的转发规则交会消耗更多多的CPU,也增加了代理服务器的负载。

(2)将session这类的信息,专门用某个独立服务来存储,例如redis/memcache,这个方案比较推荐。

反向代理服务,也是可以开启缓存,如果开启了,会增加反向代理的负担,需要谨慎使用。这种负载均衡策略实现和部署非常简单,而且性能表现也比较好。但是,它有”单点故障“的问题,如果挂了,会带来很多的麻烦。而且,到了后期web服务器继续增加,它本身可能成为系统的瓶颈。

 

某台节点服务器挂了,但是Nginx仍然可能选中这个出故障的机器,然后就一直连接着,因为超时时间很长,会有问题。

ps:代理其实就是一个中介,A和B本来可以直连,中间插入一个C,C就是中介。刚开始的时候,代理多数是帮助内网client网server用的(比如HTTP代理),从内到外。后出现了反向代理,”反向“这个词在这的意思其实是指方向相反,即代理将来自外网client的请求forward到内网server,从外到内。

2.IP负载均衡

工作在网络层(修改IP)和传输层(修改端口),比超工作在应用层性能要高出非常多,原理就是对IP层的数据包的IP地址和端口信息进行修改,达到负载均衡的目的这种方式,也被称不”四层负载均衡“。常见的负载均衡方式,是LVS(Linux Virtual Server)和IPVS(IP Virtual Server)来实现。

它的性能要比反向代理高出很多,但配置和搭建比较复杂。

3.DNS负载均衡

一个域名是可以配置成对应多个IP的,因此,DNS也就可以作为负载均衡服务。这种负载均衡性能极佳,配置简单,但不能自定义规则,存在DNS生效延迟问题,机器故障问题。

4.DNS/GSLB负载均衡

我们常用的CDN(Content Delivery Network,内容分发网络)实现方式,其实就是在同一个域名对应为多IP的基础上更进一步,通过GSLB(Global Server Load Balance)按照指定规则映射域名的IP。

这种方式,和前面的DNS负载均衡一样,不仅性能极佳,而且支持配置多种策略。但是,搭建和维护成本非常高。

二、客户端负载均衡

客户端会有一个服务器地址列表,在发送请求前通过负载均衡算法选择一个服务器,然后进行访问。

三、常见负载均衡算法

1、随机

2、轮询

3、加权轮询

4、地址hash

5、最小链接数: 根据服务的情况,比如请求积压数等参数,将请求分配给当前压力最小的服务器上。




相关推荐

可分为几个子系统: 1、Web前端系统 为了达到不同应用的服务器共享、避免单点故障、集中管理、统一配置等目的,不以应用划分服务器,而是将所有服务器做统一使用,<s

lvs IP负载均衡服务是工作在网络层(修改IP)和传输层(修改端口,第四层),比起工作在应用层(第七层)性能要高出非常多。常见的负载方式是L

一、关系和协同工作 1、vert.x和netty Vert.x 基于 Netty 构建,利用 Netty 的非阻塞 I/O 和事件驱动模型来实现高性能的网络通信。 2、vert.x和r2dbc Ver