负载均衡Nginx、LVS、HAProxy对比

LVS:是基于四层(tcp)的转发

HAproxy:是基于四层和七层的转发,是专业的代理服务器

Nginx:是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发(http,https)

区别:LVS由于是基于四层的转发所以只能做端口的转发而基于URL的、基于目录的这种转发LVS就做不了

工作选择:
HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做。

在很大并发量的时候我们就要选择LVS,并发量没那么大选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器配置简单,所以中小型企业推荐使用HAproxy。

对于一个大型后台系统来说,LVS、HAProxy和Nginx常常可以配合使用在不同的层级,LVS用在接入层的最前端,承担最大规模的流量分发;HAProxy负责按域名分流;而Nginx只需要作为Web服务器负责单机内多实例的负载均衡,或负责目录结构分流和静态资源缓存等需求。

四层与七层负载均衡,就是在对后台服务器进行负载均衡时,依据OSI四层的信息或七层的信息来决定怎么样转发流量。四层负载均衡通过报文中的目标IP地址和端口,七层负载均衡通过报文中的应用层信息(URL、HTTP头部等信息),选择到达目的的内部服务器。四层负载均衡在解包上的消耗更少,可以达到更高的性能。而七层负载算法可以通过更多的应用层信息分发请求,功能性上更强大。

LVS 性能最好,其次是 haproxy,最后是 nginx。但是LVS不支持动静分离,这方面Nginx/HAProxy+Keepalived更有优势,并且在大型的网站应用中,LVS/DR+Keepalived实施难度也更大。

Nginx也是功能强大的Web应用服务器,仅能支持http、https和Email协议,对后端服务器的健康检查,只支持通过端口来检测,不支持通过url来检测,不支持Session的直接保持,需要通过ip_hash和cookie的引导来解决

HAProxy:不支持POP/SMTP协议、不支持SPDY协议、不支持HTTP cache功能,重载配置的功能需要重启,虽然也是soft restart,但没有Nginx的reload更为平滑和友好,多进程模式支持不够好

目前关于网站架构一般比较合理流行的架构方案: Web 前端采用Nginx/HAProxy+Keepalived 作负载均衡器;后端采用 MySQL 数据库一主多从和读写分离,采用 LVS+Keepalived 的架构。

About sun 83 Articles
85后青年,自诩为伪文艺青年