转自:http://www.blogjava.net/ivanwan/archive/2013/12/25/408014.htmlhtml
LVS的特色是:
前端
Nginx的特色是:
java
HAProxy的特色是:
web
一、Nginx工做在网络的7层,因此它能够针对http应用自己来作分流策略,好比针对域名、目录结构等,相比之下LVS并不具有这样的功能,所 以 Nginx单凭这点可利用的场合就远多于LVS了;但Nginx有用的这些功能使其可调整度要高于LVS,因此常常要去触碰触碰,由LVS的第2条优势 看,触碰多了,人为出问题的概率也就会大。
二、Nginx对网络的依赖较小,理论上只要ping得通,网页访问正常,Nginx就能连得通,Nginx同时还能区份内外网,若是是同时拥有内外网的 节点,就至关于单机拥有了备份线路;LVS就比较依赖于网络环境,目前来看服务器在同一网段内而且LVS使用direct方式分流,效果较能获得保证。另 外注意,LVS须要向托管商至少申请多一个ip来作Visual IP,貌似是不能用自己的IP来作VIP的。要作好LVS管理员,确实得跟进学习不少有关网络通讯方面的知识,就再也不是一个HTTP那么简单了。站长教学网 eduyo.com
三、Nginx安装和配置比较简单,测试起来也很方便,由于它基本能把错误用日志打印出来。LVS的安装和配置、测试就要花比较长的时间了,由于同上所述,LVS对网络依赖比较大,不少时候不能配置成功都是由于网络问题而不是配置问题,出了问题要解决也相应的会麻烦得多。
四、Nginx也一样能承受很高负载且稳定,但负载度和稳定度差LVS还有几个等级:Nginx处理全部流量因此受限于机器IO和配置;自己的bug也仍是难以免的;Nginx没有现成的双机热备方案,因此跑在单机上仍是风险较大,单机上的事情全都很难说。
五、Nginx能够检测到服务器内部的故障,好比根据服务器处理网页返回的状态码、超时等等,而且会把返回错误的请求从新提交到另外一个节点。目前LVS中 ldirectd也能支持针对服务器内部的状况来监控,但LVS的原理使其不能重发请求。重发请求这点,譬如用户正在上传一个文件,而处理该上传的节点刚 好在上传过程当中出现故障,Nginx会把上传切到另外一台服务器从新处理,而LVS就直接断掉了,若是是上传一个很大的文件或者很重要的文件的话,用户可能 会所以而恼火。
六、Nginx对请求的异步处理能够帮助节点服务器减轻负载,假如使用apache直接对外服务,那么出现不少的窄带连接时apache服务器将会占用大 量内存而不能释放,使用多一个Nginx作apache代理的话,这些窄带连接会被Nginx挡住,apache上就不会堆积过多的请求,这样就减小了相 当多的内存占用。这点使用squid也有相同的做用,即便squid自己配置为不缓存,对apache仍是有很大帮助的。LVS没有这些功能,也就没法能 比较。
七、Nginx能支持http和email(email的功能估计比较少人用),LVS所支持的应用在这点上会比Nginx更多。在使用上,通常最前端所 采起的策略应是LVS,也就是DNS的指向应为LVS均衡器,LVS的优势令它很是适合作这个任务。重要的ip地址,最好交由LVS托管,好比数据库的 ip、webservice服务器的ip等等,这些ip地址随着时间推移,使用面会愈来愈大,若是更换ip则故障会接踵而至。因此将这些重要ip交给 LVS托管是最为稳妥的,这样作的惟一缺点是须要的VIP数量会比较多。Nginx可做为LVS节点机器使用,一是能够利用Nginx的功能,二是能够利 用Nginx的性能。固然这一层面也能够直接使用squid,squid的功能方面就比Nginx弱很多了,性能上也有所逊色于Nginx。Nginx也 可做为中层代理使用,这一层面Nginx基本上无对手,惟一能够撼动Nginx的就只有lighttpd了,不过lighttpd目前尚未能作到 Nginx彻底的功能,配置也不那么清晰易读。另外,中层代理的IP也是重要的,因此中层代理也拥有一个VIP和LVS是最完美的方案了。具体的应用还得 具体分析,若是是比较小的网站(日PV<1000万),用Nginx就彻底能够了,若是机器也很多,能够用DNS轮询,LVS所耗费的机器仍是比较 多的;大型网站或者重要的服务,机器不发愁的时候,要多多考虑利用LVS算法