Chinaunix

标题: 讨论关于现有LB和HA优点与缺点,你所用的软件有哪些? [打印本页]

作者: stay_sun    时间: 2015-06-03 10:33
标题: 讨论关于现有LB和HA优点与缺点,你所用的软件有哪些?
获奖详情:http://bbs.chinaunix.net/thread-4187697-1-1.html

作为运维行业ha lb 基本是最基本的技能了。现在lb ha 的软件比较多,今天我们来聊一聊现在的lb ha。
现在我起个头先。

介绍:
HA
HA(High Available), 高可用性群集,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。通常把正在执行业务的称为活动节点,而作为活动节点的一个备份的则称为备用节点。当活动节点出现问题,导致正在运行的业务(任务)不能正常运行时,备用节点此时就会侦测到,并立即接续活动节点来执行业务。从而实现业务的不中断或短暂中断。

LB
负载均衡,英文名称为Load Balance,其意思就是分摊到多个操作单元上进行执行,例如Web服务器、FTP服务器、企业关键应用服务器和其它关键任务服务器等,从而共同完成工作任务

目前我了解集群件:
HA
keeplived
heartbeat
LB
LVS
HAproxy

原来还用过rose的ha,那阵子没怎么了解过,反正是收费的。



现在我们讨论下:
1. ha lb 软件的优点与缺点?
2.还有什么我们不知道的好用的软件,求各路大牛放招补充。



讨论时间:2015-08-3至2015-09-3



活动奖励:
活动结束后将选取4名讨论精彩的童鞋,每人赠送一本《Linux性能优化大师》作为奖励。



奖品简介:

作者:赵永刚 著
ISBN :978-7-121-26472-6
出版日期:2015年8月出版
定价:59.00元
页码:296页
开本:16开



内容介绍:
      性能调优有时被称为“黑色艺术”,因为有时有效地调整一个系统,要求具有更深层次的知识,且需要了解一个系统的硬件和软件组成,以及系统之间的相互作用。性能优化是针对特定环境来定制系统的配置过程,或者是让某个特定的应用程序得到更好的响应时间或吞吐量的过程。
      《Linux性能优化大师》首先对Linux 操作系统进行了深入剖析,并对最常用的企业监控工具Benchmark 及其他监控工具进行了详细的介绍,此外分析了系统中识别和分析瓶颈的过程,最后阐述如何使用性能衡量工具,以及如何对系统的4 大子系统进行调整,使系统以最优状态应对不同的工作环境。
      《Linux性能优化大师》适合广大Linux 用户深入学习,并适合计算机专业本科、硕士等专业的学生学习参考。



样章试读:
Linux性能优化大师 试读样章.pdf (787.33 KB, 下载次数: 65)
Linux性能优化大师 试读样章(1).pdf (787.33 KB, 下载次数: 48)
作者: lsstarboy    时间: 2015-08-03 16:55
本帖最后由 lsstarboy 于 2015-08-03 17:04 编辑

1. ha lb 软件的优点与缺点?
两个本来就不是一路的,应该不好比较优缺点。

从目的上来说:
ha的目的是不中断服务,lb的目的是为了提高接入能力,虽然经常放一起用,但确实是两个不同的领域。

从手段上来说:
HA是有备胎;LB大型货车的一轴四胎。

从功能上来说:
HA在一条路不通的时候提供另一条路可走;LB是春运时的多个窗口。

从包含关系上说:
HA不一定提供LB;但LB或多或少有点HA。

2.还有什么我们不知道的好用的软件,求各路大牛放招补充。

FreeBSD的CARP,还有lagg,这两个还是比较好用的。
其中lagg有好几种模式,failover对应于ha,loadbalance和roundrobin对应于LB。


另外我实际用:

上网接入,PPPoE接入服务器应该可以算个天然的LB。
中小型网站,用nginx做LB足够了。






作者: lyhabc    时间: 2015-08-03 20:54
failover对应于ha,loadbalance和roundrobin对应于LB。
作者: laputa73    时间: 2015-08-04 07:24
HA
用过keepalived,搭配后端的nginx,haproxy,redis都没问题。
其实我很想知道keepalived和heartbeat有何不同,但是搜了很多都语焉不详。
keepalived本身是lvs的ha套件,基于二层的vrrp,所以要求两台主机必须二层可达。
脚本比较简单。
这两个都是通过虚ip实现的。
ps.象ZooKeeper这种,也算HA吧。
LB:
lvs也用过,不过部署不够简单,如果是一般的http/tcp场合,用nginx/haproxy可以应付了。
HA和LB作用不同,但是都有一套检测fail的脚本。
作者: wsysx    时间: 2015-08-04 15:42
围观一下
作者: jinanlead    时间: 2015-08-04 17:25
我觉得最大的不同就是 HA有点资源浪费,而LB会在提高资源利用率的同时兼顾HA。新人一枚,观点可能不对,请多包涵 。
作者: niao5929    时间: 2015-08-05 08:20
本帖最后由 niao5929 于 2015-08-05 09:01 编辑

1. ha lb 软件的优点与缺点?
HA热备模式资源使用率有点浪费;切机实际上会造成应用的中断。LB架构让人感觉MASTER很容易成为性能瓶颈。
2.还有什么我们不知道的好用的软件,求各路大牛放招补充。
Linux Cluster Management Console
分布式系统协调 ZooKeeper
Memcached
作者: heguangwu    时间: 2015-08-05 10:08
1. ha lb 软件的优点与缺点?
HA的主要用途是高可用,而LB的用途偏向可扩展,不知道我的这个理解对不对

2.还有什么我们不知道的好用的软件,求各路大牛放招补充。
对HA还可以使用Zookeeper,优点是不会产生如keepalived之类的脑裂问题,缺点是需要做一定的开发适配
LB好像也没有其它的好工具,利用kafka可以搭建出来,缺点是要开发且性能有影响,优点是可用性和可扩展性更好
作者: zymh_zy    时间: 2015-08-05 10:16
个人认为,HA和LB是不同技术概念吧。 HA是高可用,表示一台机停了,另外一台机立即接起来,继续提供访问服务了。而LB,是负载均衡,是将外部访问平均分配到各个后台服务器,致使访问不会过度集中到一台机器上面,从而造成某台机负载过高,应用反应过慢。。
作者: cjfeii    时间: 2015-08-06 15:43
顶一个,赞一个
作者: hiyachen    时间: 2015-08-06 23:41
本帖最后由 hiyachen 于 2015-08-06 23:52 编辑

1. ha lb 软件的优点与缺点?

ha和lb确实不是一个概念。解决方案的侧重点完全不同。
ha偏重于备用资源。切机时会有业务的断开的。保证了数据的安全,但造成资源的浪费。
lb侧重于资源的充分应用。没有主备的概念。只有资源的最大限度的加权平均应用。基本不会业务的中断。

好的集群软件这两个方面都要实现的。
譬如RAC(如Oracle RAC),RHCS(红帽集群套件)都有比较好的实现方法。
目的是为了保证业务不间断。资源充分利用。

以下是RAC的上层应用(应用层)。
1. HA
HA的是通过故障转移failover来实现的,而failover有三种方式:
1> 客户端基于连接的failover:在RAC环境下,tnsnames.ora中有多个listener的地址串。通过tnsnames.ora中的failover=on来控制,默认是开启的。其提供的功能为:默认使用第一个地址来连接,如果没有连接成功,则使用下一个地址。所以他是基于连接的failover,仅仅在连接时起作用。
2> 客户端的TAF(transparent application failover):通过tnsnames.ora中的failover_mode参数来控制。
3> 服务器端的TAF:通过service的属性来实现。

2. LB
负载均衡的实现也有三种方式:
1> 客户端的基于连接的负载均衡:在tnsnames.ora中通过参数load_balance=on来开启。其实现方式是:将多个连接随机均衡的分配到tnsnames.ora中的多个地址串。所以其实质是session数目的均衡,而不是真实负载的均衡。
2> 服务端的负载均衡:如果是通过DBCA来创建的数据库,则默认是开启了服务端的负载均衡。它是通过pmon进程搜集实例的负载信息。反馈给监听器listener,然后监听器根据自己的负载来选择:连接自己的实例,还是转发请求给其他的监听器。所以监听器可以转发连接请求,我们可以从监听器的日志文件中看到转发动作。另外:最好开启load balancing advisory,不然服务端的负载均衡不是很理想。而开启load balancing advisory要通过service.
3> 基于service的负载均衡:这是oracle所推荐的方式,也应该是我们所选择的方式。

RHCS(红帽集群套件)的·HA是基于共享存储的主备。
RHCS的HA集群由两个结点构成,其中一台为主服务器,运行服务,另一台服务器为从服务器为主服务器提供备份。主从方式中主服务器可运行一个或多个服务,从服务器随时监视主服务器软硬件状态,如果主服务器发生故障则主服务器上运行的服务会由主服务器迁移至从服务器继续运行。主从方式能够提供较高级别的可用性但由于从服务器专门用于备份,正常时不对外提供服务所以资源利用率较低。

RHCS的LB:负载均衡集群通常采用专门的负载均衡路由设备将基于TCP/IP协议的服务请求分发至实际提供服务的服务器中并由这些服务器为客户端提供真实的服务。

2.还有什么我们不知道的好用的软件,求各路大牛放招补充。
我研究的是linux kernel级的。
liunx用的较多的是pacemaker、clvm,红帽的gfs。
kernel内核级的底层操作系统层次的应用。
lvs,zookeeper基本上是基于这些技术的。
作者: ccjsj1    时间: 2015-08-06 23:54
1.ha lb软件的优点与缺点?
ha实现热备功能,常用于部署到server上的软件,只有1台server提供服务,使用率低,空闲50%的server;
lb实现负载均衡功能,逻辑上部署在server前端软件,所有server都提供服务,使用率高,100%的server都提供服务;

2.还有什么我们不知道的好用的软件,求各路大牛放招补充。
其它集群软件有rhcs,nginx,pacemaker;
作者: everlasting_188    时间: 2015-08-07 09:05
以前使用lvs,keepalived脚本运行老检查的不准确,后来更换为F5。检测脚本的正确性很重要,不清楚Nginx和Haproxy的稳定性和keepalived脚本怎么样。
作者: xdsnet    时间: 2015-08-07 11:08
1. ha lb 软件的优点与缺点?
HA和LB完全都不是一路的啊,真的不好比较的。
HA核心目的是系统的可用性保证
LB的目的是增强应用处理能力,是高效性

二者的技术路线和逻辑都不一样的。由此HA的核心是所有可能失效的地方都有冗余/备份,并且保证及时的恢复,而LB仅仅是在瓶颈部分增加冗余分流负载。二者的失效影响也不一样,HA失效可以算是严重事故,而LB失效仅仅是一般性故障。

前面有人提到LB或多或少包含HA,这个在一定层度上理解用户可用性是算,但区别还是蛮大的,所以其实完整的HA的投入更大,这主要表现在一些高安全等级要求的系统场景中,如银行核心系统,对HA要求很高,对LB要求相对要低一些。毕竟一旦业务处理不了,仅仅是业务没有处理,如果HA失效造成业务数据错乱才是大麻烦。

2.还有什么我们不知道的好用的软件,求各路大牛放招补充。
对于HA和LB还有什么好用的软件,楼上提到了很多了,我也不再累述。
这里插一个题外的,就是无论HA和LB,好的软件其实还是要从业务来说探讨,不一定通用的就适合,还是要看具体的业务、环境等等综合考虑。
作者: xjhns    时间: 2015-08-07 11:13
最近正好再搞一个双活数据中心的项目,其中比较关键的设备就是负载均衡设备。

1.关于HA与LB的优缺点,上面的说的很清楚,不是一个领域的东西。HA就是简单的解决服务器高可用问题,而LB不但可以HA,重要的是负载均衡。感觉HA是上一代的技术了,现在客户用的越来越少,除了设备闲置的问题,随着大数据和云计算时代的来临,性能问题很难解决。而LB是这一代的技术,通过负载均衡策略、会话保持和健康检测能较好的适应不断增长的需求。
不过LB会对运维人员的要求较高,作为一个4~7层的软硬件设备,你不但要有较深的网络知识,尤其是OSPF或BGP动态路由,还需要对业务层也需要较深的理解。

2.好用的软件其实不多,很多人说Nginx不错,尤其是反向代理这块。
LB我还是推荐F5、A10这样的硬件解决方案,用了才知道好,跟软件解决方案完全不是一个层面

作者: laputa73    时间: 2015-08-07 11:40
通常HA和LB都会结合使用。

服务器集群本身最好是无中心的。便于LB.
但是访问的入口,则最好是统一的,保证HA.

例如硬件方案,F5做LB,但是F5成了单点。就需要2台F5做HA。
nginx做proxy实现LB, nginx成了单点。实现HA需要2个nginx。
为了保证客户端访问的唯一入口,又需要引入keepalived或者heartbeat来作vip.

zookeeper这种集群方案,则是需要在客户端支持设置多个服务地址。增加了客户端的复杂度。


作者: niao5929    时间: 2015-08-08 12:29
HA对性能的浪费比较大,其实如果真能实现一套标准的数据中心标准来将硬件资源进行抽象对于应用来说却是非常好。OPENSTACK正在做这样的事情。尽管还有很多工作要求
作者: twc3033552378    时间: 2015-08-09 07:33
顶一个,请大神继续发言,让我等学习姿势
作者: guobaofu    时间: 2015-08-09 13:05
赞一个,请大神继续跟帖。。
作者: stay_sun    时间: 2015-08-09 20:48
回复 17# niao5929


    niao  哥  最近学习 openstack 好有劲啊
作者: niao5929    时间: 2015-08-10 09:38
蜗觉得HA和LB在架构设计上都有先天的弱点。一个资源浪费太大。另一个让人最担心的依然是MASTER的问题,经管MASTER可以使用VRRP但毕竟热切还是会对应用造成实际上的中断影响。我觉得memcached 的那种架构如果能适用在细胞节点机上,那多活应该就相对高效和稳定的多。目前DOCKER以及OPENSTACK好像都没有很好的解决细胞节点的资源抽象问题。应用和硬件的彻底解耦还只是个传说。但自由开源软件可以承载更多的思想和技术,想法有了,实现是时间问题。回复 20# stay_sun


   
作者: Evansss    时间: 2015-08-11 22:49
首先,HA用过keepalived和heartbeat。keepalived通过vrrp协议,虚拟出IP及MAC,只对IP做高可用,并没有对服务做高可用,搭配Haproxy或者Nginx时,如果要做到服务高可用,需要使用track_script检测服务并以此调节优先级。heartbeat则是真正的服务级别的高可用,无论是v1版本的haresource还是之后版本搭配pacemaker做资源转移配置都很麻烦,相对而言,keepalived更加轻量级。
LB的话,用过LVS,haproxy,nginx。LVS做四层负载,性能极佳,甚至都能媲美硬件负载均衡器了。haproxy和nginx做七层负载,可以实现根据请求资源的不同,分配到不同后端,可以做读写分离之类的。haproxy和nginx比较而言,haproxy作为一个单纯的调度器,性能更优秀一点,并且提供很棒的监控页面,后端健康检测也不错,nginx这方面要弱一点,开源版本的nginx后端健康监测很弱,使用第三方模块或者商业版本会好点。还有就是重载的问题,两者机制不同,nginx重载非常平滑,在高并发下也几乎不丢包,而haproxy就不行,一般采取的是使用iptables丢弃SYN包的做法,但部分请求的响应会延时。目前而言,haproxy和nginx的稳定性都很好,宕机的可能性很小。

PS. 看到奖品书的名字时还是很有兴趣的,但去查了目录后发现此书严重抄袭,绝大部分章节抄袭 IBM Redbook <<Linux Performance and Tuning Guidelines>>,并且网上已经有网友翻译了。下载前言看了下,作者并没有提到这点,应该坚决抵制这类书。
作者: niao5929    时间: 2015-08-12 16:14
如果确实是这样,我觉得作者需要站出来澄清一下,我觉得抄袭可以,但必须注明原文出处,我也非常讨厌那种网站引用直接删除原文的行为。太不符合GPL原则了。GPL原则首先就讲到了对原作者的尊重回复 22# Evansss


   
作者: bun    时间: 2015-08-12 22:05
提示: 作者被禁止或删除 内容自动屏蔽
作者: stay_sun    时间: 2015-08-13 11:31
回复 21# niao5929


    其实最近觉得  多活的难点还是在数据库里   最近研究谷歌已经做了 一个全球多活数据库   粒子钟技术  中国现在拿不到啊
作者: niao5929    时间: 2015-08-13 22:01
落地的技术才是真技术呀。自由开源软件要努力回复 25# stay_sun


   
作者: stay_sun    时间: 2015-08-14 08:50
回复 26# niao5929


    努力学习吧  哈哈
作者: niao5929    时间: 2015-08-16 10:32
自由开源软件可以承载更多的新思想和技术成长。科学的进化本身也源自自由开放的环境和状态。。。
作者: niao5929    时间: 2015-08-18 20:24
在OPENSTACK集群系统中对资源的利用率如何计算那
作者: niao5929    时间: 2015-08-19 09:50
传统的HA对资源的利用率确实非常低,但LB又比较容易陷入骆驼背水的悖论。不过更好的方案和技术必然可以解决高可用性、和低时延的要求。目前DOCKER正在成长期,加上K8S的集群编排器就更了不起。不过易用性依然需要继续推动才好。
作者: goofyivan    时间: 2015-08-19 10:03
楼上举的一个例子比较不错,HA其实就是春运一共有八个窗口售票,但是大家就都集中到一号窗口,一号窗口累趴下了后,大家一起去二号,二号不行去三号,这样就造成了闲置资源的一种浪费,但是LB就相当于八个窗口同时开放,均衡负载,不会使一个窗口(服务器)的压力过大。LB通常采用在负载比较重的网络服务中。一些比较大型的网站和邮件服务,并发量比较大的情况

个人觉得比较顺手的工具
Zookeeper roundrobin


作者: 251744647    时间: 2015-08-19 10:53
回复 1# stay_sun 试读样章,二个PDF文件,内容都是一样的?
另外有人读过此书的完整版吗?如何评价?


   
作者: goofyivan    时间: 2015-08-24 09:47
那个只是试读样品,书才刚上市没多久吧。
作者: rickcafe    时间: 2015-08-25 10:03
回复 22# Evansss


    请问网友翻译的Linux Performance and Tuning Guidelines在哪里能找到?谢谢。
作者: rickcafe    时间: 2015-08-25 10:08
回复 1# stay_sun

目前我了解集群件:
HA
keeplived
heartbeat
LB
LVS
HAproxy


楼主提到过的软件很多听说过,但不了解,也没用过,希望楼主方便的话介绍一下它们的特色和区别。

   
作者: rickcafe    时间: 2015-08-25 11:20

现在我们讨论下:

1. ha lb 软件的优点与缺点?

前面很多网友说了,这个问题比较含糊,HA和LB是两个概念的问题,一般来说没有谁优谁劣的标准,只有在特定的环境下,谁更适合的问题。

表面看LB一般都包含了高可用性,比HA功能更强,性能更好,但这只是概念上的“先进”,实际中很多场合HA是优选,如下列情况:

1.        用户主要关注高可用性,对性能要求不高;如某些重要的前端应用,核心业务系统,数据量和业务量都不大,重要的是可靠性。
2.        应用只支持HA配置,不支持LB模式;如用户自开发的一些应用程序,多是支持单机运行的或通过集群软件实现HA模式,本身不支持LB。
3.        对系统稳定性有较高要求,LB通常都比HA复杂。
4.     要求部署简单,维护简单,管理简单。

单纯从概念上来,除了资源利用率、性能的优势外,LB对业务的影响相对较小,业务中断时间短,一般都是秒级或毫秒级的,甚至当前网络连接可能都不会断掉;不像HA,一般是分钟级的故障转移时间,对业务有一定影响,但这个问题在大多数场合不是致命的影响,大部分客户可接受分钟级的业务中断。

现实中能做LB的场合也不太多,如Oracle RAC、WEB服务器负载均衡、自成体系的中间件软件、服务器网络负载均衡之类,但对于其它应用,负载均衡实现就很少了(HPC那些专用架构不在讨论范围)

但对于HA,基本上所有应用都可以配置成HA模式,一般靠集群软件就可以实现,即便是没有进程通信,信号输出,支持集群软件的状态检测功能,完全靠进程的死活与监测也可以实现HA。

2.还有什么我们不知道的好用的软件,求各路大牛放招补充。

我接触的HA、LB的软件不多,

操作系统级的:
windows下的mscs/故障转移集群
solaris下的sun cluster
aix下的hacmp
hp的serviceguard (没实际用过)
oracle的clusterware
veritas的cluster server(vcs) (没实际用过)
rose-ha

数据库/应用的:
oracle RAC
sql server集群(没实际用过)
web应用集群
微软的NLB

其它硬件的:
citrix的netscaler(链路、服务器、站点(全局)LB)
交换机的集群/堆叠
交换机和各类安全设备的HA

至于什么是“好用”,还是那句话,不好说,要看具体环境、应用和价格,没有绝对的好。

作者: demilich    时间: 2015-08-28 15:32
1. ha lb 软件的优点与缺点?
HA和LB都属于集群技术的一种,目的都是用相对廉价的硬件实现:高性能,高并发,高可靠性。但是HA和LB的侧重点不同,所以应用场景也就不同了。
HA:目的是为了高可用性,就是一台机器挂了,另外一台备用机器能提供完全相同的服务。最常见就是主备,两台机器具备相同的数据,一台挂了另外一台提供服务,然后除了1+1,还有N+1,以及其他多种方案。当然,在一台维护/升级的时候,可以升级一台,另外一台提供服务。通过这种集群技术,可以提供24*7不间断的服务,这是HA的主要目的。

LB: 目的是为了解决高并发压力,避免一个时间段内的业务,超过一台机器的容量。如果单单只使用LB,其中一台机器挂了,是会影响到这台机器服务的用户,就像最常见的早期web服务器,挂了一台,那么存储于这台机器用户的session信息就没有了 ... 当然,LB在一定程度上也解决了提高可用性,一台机器挂了,至少还有其他机器可以提供服务啊

2.还有什么我们不知道的好用的软件,求各路大牛放招补充。
- RHCS
- F5
- zookeeper
- 还有现在成熟的云计算平台也提供了LB和HA的方案,比如阿里云的SLB ..


补充一点:
为了提供高可用性和高并发性,可以把HA和LB组合起来用,RHCS就有。LB本身也要提供高可用性,所以也可以做个LB的备份出来 ...

再补充一点:
其实集群除了HA,LB还有一个方向,就是:HP,high performance ... 主要用作,数学计算啊大数据一类的,最著名的HP集群就是Hadoop ..
作者: albert-liao    时间: 2016-01-07 10:45
努力学习中  哈哈




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2