LVS,Nginx和HAProxy区别

LVS优缺点

LVS的优点:

1、抗负载能力强、工作在第4层仅作分发之用,没有流量的产生,这个特点也决定了它在负载均衡软件里的性能最强的;无流量,同时保证了均衡器IO的性能不会受到大流量的影响;
2、工作稳定,自身有完整的双机热备方案,如LVS+Keepalived和LVS+Heartbeat;
3、应用范围比较广,可以对所有应用做负载均衡;
4、配置性比较低,这是一个缺点也是一个优点,因为没有可太多配置的东西,所以并不需要太多接触,大大减少了人为出错的几率;

LVS的缺点:

1、软件本身不支持正则处理,不能做动静分离,这就凸显了Nginx/HAProxy+Keepalived的优势。
2、如果网站应用比较庞大,LVS/DR+Keepalived就比较复杂了,特别是后面有Windows Server应用的机器,实施及配置还有维护过程就比较麻烦,相对而言,Nginx/HAProxy+Keepalived就简单多了。

Nginx优缺点

Nginx的优点:

1.工作在OSI第7层,可以针对http应用做一些分流的策略。比如针对域名、目录结构。它的正则比HAProxy更为强大和灵活;
2.Nginx对网络的依赖非常小,理论上能ping通就就能进行负载功能,这个也是它的优势所在;
3.Nginx安装和配置比较简单,测试起来比较方便;
4.可以承担高的负载压力且稳定,一般能支撑超过几万次的并发量;
5.Nginx可以通过端口检测到服务器内部的故障,比如根据服务器处理网页返回的状态码、超时等等,并且会把返回错误的请求重新提交到另一个节点;
6.Nginx不仅仅是一款优秀的负载均衡器/反向代理软件,它同时也是功能强大的Web应用服务器。LNMP现在也是非常流行的web环境,大有和LAMP环境分庭抗礼之势,Nginx在处理静态页面、特别是抗高并发方面相对apache有优势;
7.Nginx现在作为Web反向加速缓存越来越成熟了,速度比传统的Squid服务器更快,有需求的朋友可以考虑用其作为反向代理加速器;

Nginx的缺点:

1、Nginx不支持url来检测。
2、Nginx仅能支持http和Email,这个它的弱势。
3、Nginx的Session的保持,Cookie的引导能力相对欠缺。

HAProxy

HAProxy的优点:

1、HAProxy是支持虚拟主机的,可以工作在4、7层(支持多网段);
2、能够补充Nginx的一些缺点比如Session的保持,Cookie的引导等工作;
3、支持url检测后端的服务器;
4、它跟LVS一样,本身仅仅就只是一款负载均衡软件;单纯从效率上来讲HAProxy更会比Nginx有更出色的负载均衡速度,在并发处理上也是优于Nginx的;
5、HAProxy可以对Mysql读进行负载均衡,对后端的MySQL节点进行检测和负载均衡,不过在后端的MySQL slaves数量超过10台时性能不如LVS;
6、HAProxy的算法较多,达到8种;

三者对比:

LVS: 是基于四层的转发
HAproxy: 是基于四层和七层的转发,是专业的代理服务器
Nginx: 是WEB服务器,缓存服务器,又是反向代理服务器,可以做七层的转发
区别: LVS由于是基于四层的转发所以只能做端口的转发
而基于URL的、基于目录的这种转发LVS就做不了

工作选择:

HAproxy和Nginx由于可以做七层的转发,所以URL和目录的转发都可以做
在很大并发量的时候我们就要选择LVS,像中小型公司的话并发量没那么大
选择HAproxy或者Nginx足已,由于HAproxy由是专业的代理服务器
配置简单,所以中小型企业推荐使用HAproxy

Cluster:集群,为解决某个特定问题将多台计算机组合起来形成的单个系统

Linux Cluster类型:

LB:Load Balancing,负载均衡

HA:High Availiablity,高可用,SPOF(single Point Of failure)

MTBF:Mean Time Between Failure 平均无故障时间
MTTR:Mean Time To Restoration( repair)平均恢复前时间
A=MTBF/(MTBF+MTTR) (0,1):99%, 99.5%, 99.9%, 99.99%, 99.999%

HPC:High-performance computing,高性能 www.top500.org

分布式系统:

分布式存储: Ceph,GlusterFS,FastDFS,MogileFS
分布式计算:hadoop,Spark
① 集群(cluster)技术是一种较新的技术,通过集群技术,可以在付出较低成本的情况下获得在性能、可靠性、灵活性方面的相对较高的收益,其任务调度则是集群系统中的核心技术。
② 集群是一组相互独立的、通过高速网络互联**的计算机,它们构成了一个组,并以单一系统的模式加以管理。一个客户与集群相互作用时,集群像是一个独立的服务器。
③ 集群组成后,可以利用多个计算机和组合进行海量请求处理(**负载均衡**),从而获得很高的处理效率,也可以用多个计算机做备份(高可用),使得任何一个机器坏了整个系统还是能正常运行。集群在目前互联网公司是必备的技术,极大提高互联网业务的可用性和可缩放性。

负载均衡集群技术

负载均衡(Load Balance):负载均衡集群为企业需求提供了可解决容量问题的有效方案。负载均衡集群使负载可以在计算机集群中尽可能平均地分摊处理

② 负载通常包括应用程序处理负载和网络流量负载。这样的系统非常适合向使用同一组应用程序的大量用户提供服务。每个节点都可以承担一定的处理负载,并且可以实现处理负载在节点之间的动态分配,以实现负载均衡。对于网络流量负载,当网络服务程序接受了高入网流量,以致无法迅速处理,这时,网络流量就会发送给在其它节点上运行的网络服务程序。也可根据服务器的承载能力,进行服务请求的分发,从而使用户的请求得到更快速的处理。

集群和分布式

(1)集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的。

(2)分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。

(3)分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

(4)对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪一台去完成响应,并且一台服务器垮了,其它的服务器 可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败。

集群设计原则

(1)可扩展性—集群的横向扩展能力

(2)可用性—无故障时间(SLA)

(3)性能—访问响应时间

(4)容量—单位时间内的最大并发吞吐量(C10K 并发问题)

基础设施层面

提升硬件资源性能—从入口防火墙到后端web server均使用更高性能的硬件资源
多域名—DNS 轮询A记录解析
多入口—将A记录解析到多个公网IP入口
多机房—同城+异地容灾
CDN(Content Delivery Network)—基于GSLB(Global Server Load Balance)实现全局负载均衡,如DNS

业务层面

分层:安全层、负载层、静态层、动态层、(缓存层、存储层)持久化与非持久化
分割:基于功能分割大业务为小服务
分布式:对于特殊场景的业务,使用分布式计算

分布式

(1)分布式应用-服务按照功能拆分,使用微服务

(2)分布式静态资源--静态资源放在不同的存储集群上

(3)分布式数据和存储--使用key-value缓存系统

(4)分布式计算--对特殊业务使用分布式计算,比如Hadoop集群

Cluster分类

负载均衡集群技术的实现

硬件

F5 Big-IP
Citrix Netscaler
A10 A10

软件

lvs:Linux Virtual Server,阿里四层SLB (Server Load Balance)使用
nginx:支持七层调度,阿里七层SLB使用Tengine
haproxy:支持七层调度
ats:Apache Traffic Server,yahoo捐助给apache
perlbal:Perl 编写
pound

基于工作的协议层次划分:

传输层(通用):DPORT

LVS:不支持应用层,不支持cookie
nginx:stream
haproxy:mode tcp

应用层(专用):针对特定协议,自定义的请求模型分类

proxy server:
http:nginx, httpd, haproxy(mode http), ...
fastcgi:nginx, httpd, ...
mysql:mysql-proxy, ...

Cluster相关

会话保持:负载均衡

(1) session sticky:同一用户调度固定服务器

Source IP:LVS sh算法(对某一特定服务而言)
Cookie

(2) session replication:每台服务器拥有全部session

session multicast cluster

(3) session server:专门的session服务器

Memcached,Redis

HA集群实现方案

keepalived:vrrp协议

Ais:应用接口规范

heartbeat
cman+rgmanager(RHCS)
coresync_pacemaker

LVS介绍

LVS:Linux Virtual Server,负载调度器,内核集成

官网:http://www.linuxvirtualserver.org/

VS: Virtual Server,负责调度
RS: Real Server,负责真正提供服务
L4:四层路由器或交换机
阿里的四层LSB(Server Load Balance)是基于LVS+keepalived实现
LVS是一种四层负载均衡
Nginx 七层负载,四层负载	 
Haproxy 四层七层都可以做
四层应用场景:
1. 四层负载抗压性能要强于七层
2. 公网ip不足,通过四层负载进行端口调度	
四层和七层区别:
1.四层不包含http协议,只做流量调度
2.根据我们的http请求主题,结合调度策略,向后转发
 LVS最高可支持10w并发

LVS软件作用:通过LVS提供的负载均衡技术和Linux操作系统实现一个高性能、高可用的服务器群集,它具有良好可靠性、可扩展性和可操作性。从而以低廉的成本实现最优的服务性能。

优点:

高并发连接:LVS基于内核网络层面工作,有超强的承载能力和并发处理能力。单台LVS负载均衡器,可支持上万并发连接。

稳定性强是工作在网络4层之上仅作分发之用,这个特点也决定了它在负载均衡软件里的性能最强,稳定性最好,对内存和cpu资源消耗极低。

成本低廉硬件负载均衡器少则十几万,多则几十万上百万,LVS只需一台服务器和就能免费部署使用,性价比极高。

配置简单LVS配置非常简单,仅需几行命令即可完成配置,也可写成脚本进行管理。

支持多种算法支持多种论调算法,可根据业务场景灵活调配进行使用

支持多种工作模型可根据业务场景,使用不同的工作模式来解决生产环境请求处理问题。

应用范围广:因为LVS工作在4层,所以它几乎可以对所有应用做负载均衡,包括http、数据库、DNS、ftp服务等等

缺点:工作在4层,不支持7层规则修改,机制过于庞大,不适合小规模应用。

posted @ 2021-03-06 22:59  上善若水~小辉  阅读(1981)  评论(1编辑  收藏  举报