Web负载均衡

Web负载均衡

web负载均衡,简单地说就是给我们的服务器集群分配工作任务,而采用恰当的分配方式

负载均衡策略

Http重定向

当用户发来请求时,web服务器通过修改HTTP响应头的location标记返回一个新的Url,然后浏览器再继续请求新的url,
实际上就是页面重定向,通过重定向,来达到负载均衡的目的。

php 实现

$domains = [
    'a.xxx.com',
    'b.xxx.com',
    'c.xxx.com'
];

$domain = array_rand($domains);
header('Location: http://'. $domain);

这个重定向非常容易实现,但是很明显在大规模的访问量下,性能不佳。而且给用户体验不好,实际请求发生重定向,增加网络延时。

反射代理负载均衡

反射代理服务的核心工作主要是转发http请求,扮演浏览器和web服务器中转角色。因为它工作在http层(应用层),也就是网络七层
结构中的第七层,因此也被称为七层负载均衡“。可以做反射代理软件很多,比较常见的是nginx。 Nginx是一种非常灵活的代理软件,可以自由
定制化转发策略,分配服务器流量的权重等。反射代理中,常见的一个问题就是web服务器存储的session数据,因为一般负载均衡的策略都是随机
分配请求的。同一个登录用户的请求,无法保证一定分配到相同的web机器上,会导致无法找到session的问题。

解决的文案有两种

* 配置反射代理转发规则,让同一个用户请求一定落在同一台web机器上(通过cookie分析)复杂的转发规则将会消耗更多的cpu,
增加服务器的负担

* 将session这类的信息,专门用某个独立服务来存储,如redis,memcache

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

IP负载均衡

IP负载均衡服务是工作在网络层(修改IP)和传输层(修改端口,第四层),比起工作在应用层来说性能高出非常多。原理是,他对IP层的数据

包的IP地址和端口信息进行修改,达到负载均衡的目的。这种方式也叫第四层负载均衡。常见的负载均衡方式是LVS(linux virtual server),通过
IPVS(IP Virtual Server, IP虚拟服务)来实现。

DNS负载均衡

DNS负责域名解析的服务,域名url实际上是服务器的别名,实际映射是一个IP地址,解析过程,就是DNS完成域名到IP的映射。而一个域名
是可以配置成对应多个IP的,因此DNS也就可以作为负载均衡服务。

这种负载均衡策略,配置简单,性能极佳。但是不能自由定义规则,而且变更被映射的IP或者机器故障时很麻烦,还存在DNS生效延迟的问题。

DNS/GSLB负载均衡

我们常用的CDN实现方式,其实就是在同一个域名映射为多IP 基础上更进一步,通过GSLB(Global Server Load Balance, 全局负载均衡)
按照指定规则映射域名的IP。一般情况下都按照地址位置,将离用户近的IP返回给用户,减少网络传输中路由节点的跳跃消耗。

posted @ 2018-01-08 15:44  六飞.卡尔  阅读(126)  评论(0)    收藏  举报