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

web load balancing,简单地说就是给我们的服务器集群分配”工作任务“。

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负载均衡一样,不仅性能极佳,而且支持配置我种策略。但是,搭建和维护成本非常高。

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

阅读更多

扫码向博主提问

chs007chs

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • java
  • linux
去开通我的Chat快问
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页