在上一篇博客中介绍到实现负载均衡主要可以通过软、硬件两个方面进行,例如硬件上购买RadWare等硬件设备,或者通过软件策略实现负载均衡。软件策略上使用广泛有Nginx 和LVS
在介绍两款工具之前,先聊聊负载均衡的应用场景
普通web应用部署到多台应用服务器上,客户端通过访问应用服务器发送请求,最简单的就是n对1模式,n个客户端访问同一个应用服务器,这种情况当并发量大了,就无法应对,而且,如果只有一台服务器时,这个服务器挂了,那么对于网站来说是个灾难.;解决方案便可以横向扩充n台应用服务器,并且客户端访问与应用服务器中间加上负载均衡配置,负载均衡能实现的效果主要有三个:
1、转发功能:按照一定的算法【权重、轮询】,将客户端请求转发到不同应用服务器上,减轻单个服务器压力,提高系统并发量。
2、故障移除:通过心跳检测的方式,判断应用服务器当前是否可以正常工作,如果服务器期宕掉,自动将请求发送到其他应用服务器。
3、恢复添加:如检测到发生故障的应用服务器恢复工作,自动将其添加到处理用户请求队伍中。
下面接着介绍实现负载均衡的两款常用方案
什么是Nginx?
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler使用。其特点是占有内存少,并发能力强,中国大陆使用nginx网站用户有:百度、新浪、网易、腾讯等。
优点:
1、可运行linux,并有windows 移植版
2、在高并发情况下,Nginx 可支持高达50000个并发连接数的响应。
Nginx如何实现负载均衡?
1、Nginx反向代理
Nginx利用自身反向代理功能,在conf配置文件中添加反向代理地址,以代理服务器的身份接受客户端发送过来的请求,然后将请求转发给内部网络上的应用服务器,并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个服务器,不过它只负责转发请求,不负责处理。
2、Nginx转发策略
Nginx转发请求可按照调度规则通过轮询、ip哈希、URL哈希、权重等多种方式对应用服务器做负载均衡,同时还支持后端服务器的健康检查,也就是上面讲的故障移除和恢复添加功能。
nginx 的 upstream目前支持的分配算法:
1)、轮询(默认)
每个请求按时间顺序逐一分配到不同的应用服务器,如果应用服务器down掉,能自动剔除。
2)、权重
通过配置权重,指定轮询几率,权重和访问比率成正比,用于应用服务器性能不均的情况。
3)、ip_哈希算法
每个请求按访问ip的hash结果分配,这样每个访客固定访问一个应用服务器,可以解决session共享的问题。
Ps.大家不要看这些东西挺蒙,其实就是在Nginx服务器配置上指定的参数即可实现。 例如配置反向代理地址:proxy_pass,配置转发算法以及session共享
什么是LVS?
LVS如何实现负载均衡?