lvs,nginx,haproxy负载均衡分析

如今网络中常见的的负载均衡主要分为两种:一种是经过硬件来进行进行,常见的硬件有比较昂贵的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。

相关文章
相关标签/搜索