对软件实现负载均衡的几个软件,小D详细看了一下,从性能和稳定上仍是LVS最牛,基本达到了F5硬件设备的60%性能,其余几个10%都有点困难。html
不过就由于LVS忒牛了,配置也最麻烦了,并且健康检测须要另外配置Ldirector,其余HAPROXY和NGINX本身就用,并且配置超级简单。前端
因此小D建议,若是网站访问量不是门户级别的用HAPROXY或者NGINX就OK了,到了门户级别在用LVS+Idirector吧 哈哈mysql
lvs和nginx均可以用做多机负载的方案,它们各有优缺,在生产环境中须要好好分析实际状况并加以利用。具体的应用还得具体分析,若是是比较小的网站(日PV<1000万),用nginx就彻底能够了,若是机器也很多,能够用DNS轮询,lvs所耗费的机器仍是比较多的;大型网站或者重要的服务,机器不发愁的时候,要多多考虑利用lvs。linux
****************************************************************************************************************ios
Nginx的优势:
性能好,能够负载超过1万的并发。
功能多,除了负载均衡,还能做Web服务器,并且能够经过Geo模块来实现流量分配。
社区活跃,第三方补丁和模块不少
支持gzip proxy
缺点:
不支持session保持。
对后端realserver的健康检查功能效果很差。并且只支持经过端口来检测,不支持经过url来检测。
nginx对big request header的支持不是很好,若是client_header_buffer_size设置的比较小,就会返回400bad request页面。
Haproxy的优势:
它的优势正好能够补充nginx的缺点。支持session保持,同时支持经过获取指定的url来检测后端服务器的状态。
支持tcp模式的负载均衡。好比能够给MySQL的从服务器集群和邮件服务器作负载均衡。
缺点:
不支持虚拟主机(这个很傻啊)
目前没有nagios和cacti的性能监控模板
LVS的优势:
性能好,接近硬件设备的网络吞吐和链接负载能力。
LVS的DR模式,支持经过广域网进行负载均衡。这个其余任何负载均衡软件目前都不具有。
缺点:
比较重型。另外社区不如nginx活跃。nginx
*************************************************************************************web
如今网络中常见的的负载均衡主要分为两种:一种是经过硬件来进行进行,常见的硬件有比较昂贵的NetScaler、F五、Radware和Array等商用的负载均衡器,也有相似于LVS、Nginx、HAproxy的基于Linux的开源的负载均衡策略,算法
商用负载均衡里面NetScaler从效果上比F5的效率上更高。对于负载均衡器来讲,不过商用负载均衡因为能够创建在四~七层协议之上,所以适用 面更广因此有其不可替代性,他的优势就是有专业的维护团队来对这些服务进行维护、缺点就是花销太大,因此对于规模较小的网络服务来讲暂时尚未须要使用。sql
另外一种负载均衡的方式是经过软件:比较常见的有LVS、Nginx、HAproxy等,其中LVS是创建在四层协议上面的,而另外Nginx和HAproxy是创建在七层协议之上的,下面分别介绍关于数据库
LVS:使用集群技术和Linux操做系统实现一个高性能、高可用的服务器,它具备很好的可伸缩性(Scalability)、可靠性(Reliability)和可管理性(Manageability)。
LVS的特色是:
一、抗负载能力强、是工做在网络4层之上仅做分发之用,没有流量的产生;
二、配置性比较低,这是一个缺点也是一个优势,由于没有可太多配置的东西,因此并不须要太多接触,大大减小了人为出错的概率;
三、工做稳定,自身有完整的双机热备方案;
四、无流量,保证了均衡器IO的性能不会收到大流量的影响;
五、应用范围比较广,能够对全部应用作负载均衡;
六、LVS须要向IDC多申请一个IP来作Visual IP,所以须要必定的网络知识,因此对操做人的要求比较高。
Nginx的特色是:
一、工做在网络的7层之上,能够针对http应用作一些分流的策略,好比针对域名、目录结构;
二、Nginx对网络的依赖比较小;
三、Nginx安装和配置比较简单,测试起来比较方便;
四、也能够承担高的负载压力且稳定,通常能支撑超过1万次的并发;
五、Nginx能够经过端口检测到服务器内部的故障,好比根据服务器处理网页返回的状态码、超时等等,而且会把返回错误的请求从新提交到另外一个节点,不过其中缺点就是不支持url来检测;
六、Nginx对请求的异步处理能够帮助节点服务器减轻负载;
七、Nginx能支持http和Email,这样就在适用范围上面小不少;
八、不支持Session的保持、对Big request header的支持不是很好,另外默认的只有Round-robin和IP-hash两种负载均衡算法。
HAProxy的特色是:
一、HAProxy是工做在网络7层之上。
二、可以补充Nginx的一些缺点好比Session的保持,Cookie的引导等工做
三、支持url检测后端的服务器出问题的检测会有很好的帮助。
四、更多的负载均衡策略好比:动态加权轮循(Dynamic Round Robin),加权源地址哈希(Weighted Source Hash),加权URL哈希和加权参数哈希(Weighted Parameter Hash)已经实现
五、单纯从效率上来说HAProxy更会比Nginx有更出色的负载均衡速度。
六、HAProxy能够对Mysql进行负载均衡,对后端的DB节点进行检测和负载均衡。
***********************************************************************************************
如今网站发展的趋势对网络负载均衡的使用是随着网站规模的提高根据不一样的阶段来使用不一样的技术:
第一阶段:利用Nginx或者HAProxy进行单点的负载均衡,这一阶段服务器规模刚脱离开单服务器、单数据库的模式,须要必定的负载均衡,可是 仍然规模较小没有专业的维护团队来进行维护,也没有须要进行大规模的网站部署。这样利用Nginx或者HAproxy就是第一选择,此时这些东西上手快, 配置容易,在七层之上利用HTTP协议就能够。这时是第一选择
第二阶段:随着网络服务进一步扩大,这时单点的Nginx已经不能知足,这时使用LVS或者商用F5就是首要选择,Nginx此时就做为LVS或者 F5的节点来使用,具体LVS或者F5的是选择是根据公司规模,人才以及资金能力来选择的,这里也不作详谈,可是通常来讲这阶段相关人才跟不上业务的提 升,因此购买商业负载均衡已经成为了必经之路。
第三阶段:这时网络服务已经成为主流产品,此时随着公司知名度也进一步扩展,相关人才的能力以及数量也随之提高,这时不管从开发适合自身产品的定制,以及下降成原本讲开源的LVS,已经成为首选,这时LVS会成为主流。
最终造成比较理想的状态为:F5/LVS<—>Haproxy<—>Squid/Varnish<—>AppServer。