LVS Nginx和HAproxy的区别,怎么选择最好
LVS Nginx和HAproxy有什么区别呢?
LVS:Linux Virtual Server的简写,意即Linux虚拟服务器,是一个虚拟的服务器集群系统。
Nginx:Nginx是一款轻量级的web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like协议下发行。
HAproxy:HAproxy是一个使用C语言编写的自由及开放源代码软件[1],其提供高可用性,负载均衡,以及基于TCP和HTTP的应用程序代理。
通过概念方面,我们可以看得出来,都可以提供高可用和负载均衡等的服务,所以从概念方面,没有什么区别的呢?
LVS的优点是:
1,抗负载能力强,是工作在网络4层之上仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的,对内存和cpu资源消耗比较低。
2,配置较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率。
3,工作稳定,因为其本身抗负载均衡能力很强,自身有完整的双机热备方案,如LVS+Keepalived,不过我们在项目实施中用得最多的还是LVS/DR+Keepalived。
4,无流量,LVS只分发请求‘,而流量并不从它本身出去,这保证了均衡器IO的性能不会收到大流量的影响。
5,应用范围比较广,因为LVS工作在4层,所以它几乎可以所有应用做负载均衡,包括http,数据库,在线聊天室等等。
Nginx的优点是:
1,工作在网络的7层之上,可以针对http应用做一些分流的策略,比如针对域名,目录结构,它的正则规则比HAproxy更为强大和灵活,这也是它目前广泛流行的主要原因之一,Nginx单凭这点可利用的场合就远多余LVS了。
2,Nginx对网络稳定性的依赖非常小,理论上能ping通就能进行负载功能,这个是它的优势之一;相反LVS对网络稳定性依赖比较大,这点本人深有体会;
3,可以承担高负载压力且稳定,在硬件不差的情况下一般能支撑几万次的并发量,负载度比LVS相对小些。
4,Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码,超时等等,并且会把返回错误的请求重新提交到另一个节点,不过 其中缺点就是不支持url来检测。比如用户正在上传一个文件,而处理该上传的节点刚好在上传中出现故障,Nginx 会把上传切到另一台服务器重新处理,而LVS就直接断掉了,如果上传一个很大的文件或者很重要文件的话,用户可能因此不满。
5,Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP也是近几年非常流行的web架构,在高流量的环境中稳定性也很好。
6,Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,可以考虑用其作为反向代理加速器。
7,Nginx可作为中层反向代理用,这一层面Nginx基本上无对手,唯一可以对比Nginx的就只有lighttpd了,不过lighttpd目前还没有做到Nginx完全的功能,配置也不那么清晰易读,社区资料也远远没Nginx活跃。
8,Nginx也可作为静态网页和图片服务器,这方面的性能也无对手。还有Nginx社区非常活跃,第三方模块也很多。
HAproxy的特点是:
1,HAproxy也是支持虚拟主机的。
2,HAproxy的优点能够补充Nginx的一些缺点,比如支持Session的保持,Cookie的引导:同时支持通过获取指定的url来检测后端服务器的状态。
3,HAproxy跟LVS类似,本身就只是一款负载均衡软件;单纯从效率上来讲HAproxy会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的。
4,HAproxy支持TCP协议的负载均衡转发,可以对MySQL读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,大家可以用LVS+Keepalived对MySQL主从负载均衡。
现在对网络负载均衡的使用是随着网站规模的提升根据不同的阶段来使用不同的技术:
第一阶段:利用Nginx或HAproxy进行单点的负载均衡,这一阶段服务器刚脱离开单服务器,单数据库的模式,需要一定的负载均衡,但是仍然规模较小没有专业的维护团队来进行维护,也没有需要进行大规模的网站部署,这样利用Nginx或HAproxy就是第一选择,此时这些东西上手快,配置容易,在七层之上利用HTTP协议就可以。这时是第一选择。
第二阶段:随着网络服务进一步扩大,这时单点的Nginx已经不能满足,这时使用LVS或者商用Array就是首要选择,Nginx此时就作为LVS或者Array的节点来使用,具体LVS或Array的是选择是根据公司规模和预算来选择,Array的应用交付功能非常强大,本人在某项目中使用过,性价比也远高于FS,商用首选!但是一般来说这1阶段相关人才跟不上业务的提升,所以购买商业负载均衡已经成为了必经之路。
第三阶段:这时网络服务已经成为主流产品,此时随着公司知名度也进一步扩展,相关人才的能力以及数量也随之提升,这时无论从开发适合自身产品的定制,以及降低成本来讲开源的LVS,已经成为首选,这时LVS会成为主流。
最终形成比较理想的基本架构为:Array/LVS——Nginx/Haproxy——Squid/varnish——AppServer。
LVS Nginx和HAproxy的区别,怎么选择最好的更多相关文章
- Nginx与HAProxy的区别
对于做软负载,我们都知道主流的方案有LVS.Haproxy.Nginx!那么对于Haproxy和Nginx,我们如何选择呢?回答这个问题之前,我根据个人使用经验来讲下它们的特点! Haproxy特点 ...
- 高可用性的负载均衡方案之lvs+keepalived和haproxy+heartbeat区别
高可用性的负载均衡方案 目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障.那么他们为 ...
- lvs+keepalived和haproxy+heartbeat区别
最近一直在看一些高可用性的负载均衡方案,当然那些f5之类的硬件设备是玩不起也接触不到了.只能看这些for free的开源方案. 目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实 ...
- lvs(+keepalived)、haproxy(+heartbeat)、nginx 负载均衡的比较分析
目前使用比较多的就是标题中提到的这两者,其实lvs和haproxy都是实现的负载均衡的作用,keepalived和heartbeat都是提高高可用性的,避免单点故障.那么他们为什么这么搭配,而又有什么 ...
- LVS、Nginx和HAProxy区别
LVS.Nginx和HAProxy区别 LVS 优点: 高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力.单台LVS负载均衡器,可支持上万并发连接. 抗负载能力强:是工作在网络4 ...
- Nginx,LVS,HAProxy,负载均衡之选择
Nginx的优点:性能好,可以负载超过1万的并发.功能多,除了负载均衡,还能作Web服务器,而且可以通过Geo模块来实现流量分配.社区活跃,第三方补丁和模块很多支持gzip proxy缺点:不支持se ...
- LVS Nginx HAProxy 优缺点
搭建负载均衡高可用环境相对简单,主要是要理解其中原理.此文描述了三种负载均衡器的优缺点,以便在实际的生产应用中,按需求取舍. 目前,在线上环境中应用较多的负载均衡器硬件有F5 BIG-IP,软件有LV ...
- haproxy+keepalived(涵盖了lvs,nginx.haproxy比较)
文章转载自: haproxy+keepalived https://cloud.tencent.com/developer/article/1026385 网络四层和七层的区别 https: ...
- 【转】lvs、nginx、haproxy转发模式优缺点总结
原文地址: https://yq.aliyun.com/ziliao/78374 一.LVS转发模式 LVS是章文嵩博士写的一个工作于四层的高可能性软件.不像后两者支持七层转发,不过也正因为其简单,所 ...
随机推荐
- 软件测试工具LoadRunner常见问题二
1.一些Web虚拟用户脚本录制后立刻回放没有任何问题,但是当设置迭代次数大于1时,如果进行回放则只能成功迭代一次.为什么从第二次迭代开始发生错误? 这种现象多是由于在"Run-time Se ...
- BIO和NIO实现文件复制
普通文件复制 public void copyFile() throws Exception{ FileInputStream fis=new FileInputStream("C:\\Us ...
- 深入理解JS的事件绑定、事件流模型
一.JS事件 (一)JS事件分类 1.鼠标事件: click/dbclick/mouseover/mouseout 2.HTML事件: onload/onunload/onsubmit/onresi ...
- 开发者福利!请及时领取您的SpreadJS临时部署授权码
SpreadJS 于2015年发布,至今已有4年历史,作为一款基于 HTML5 的纯前端电子表格控件,在短短四年间,即在财税.金融.计算机软件与服务.工业制造.大数据应用.电力能源.交通.物流运输.医 ...
- 创建安全的 Netty 程序
1.使用 SSL/TLS 创建安全的 Netty 程序 SSL 和 TLS 是众所周知的标准和分层的协议,它们可以确保数据时私有的 Netty提供了SSLHandler对网络数据进行加密 使用Http ...
- 剑指offer42:数组和一个数字S,输出两个数的乘积最小的
1 题目描述 输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的. 输出描述: 对应每个测试案例,输出两个数,小的先输出. ...
- Python 线程&进程与协程
Python 的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承.Py ...
- java中的exception stack有时候不输出的原因
有时候,我们在看java错误日志时,只看到一个java.lang.NullPointerException,却没有看到错误的栈,原因是启动时候有一项参数可以选择配置:OmitStackTraceInF ...
- spring-cloud 学习三 服务提供者
基于spring-boot创建一个module提供服务 使用mysql数据库,dao使用mybatis,数据库连接池使用阿里的druid 添加maven依赖 <parent> <gr ...
- System performance tools
System performance tools ============ End