- 集群简介,什么是集群?
简单的说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统、每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。这些服务器之间可以彼此通信,协同向用户提供应用程序、系统资源和数据,并以单一系统的模式加以管理。当用户客户机请求集群系统时,集群给用户的感觉就是一个单一独立的服务器,而实际上用户请求的是一组集群服务器。
打开谷歌、百度的页面,相信你会觉得看起来好简单啊,也许你用几分钟就可以制作出相似的网页,而实际上,这个页面是由成千上万台服务器集群协同工作的结果。那么,这么多的服务器维护和管理,以及相互协调工作就是读者你的工作职责了。
一句话,集群就是一堆服务器做同一件事,这些机器可能需要整个技术团队架构、设计、统一协调管理,这些机器可以分布在一个机房,也可以分布在全国全球各个地区的多个机房。
- 集群的基本特点
高性能(Performance)
一些国家重要的计算密集型应用(如:天气预报、核试验模拟等),需要计算机有很强的运算处理能力。以全世界现有的技术,即使是大型机,其计算能力也是有限的,很难单独完成此任务。因为计算时间可能会相当长,也许几天,甚至几年或更久。因此,对于这类复杂的计算业务,一般都会使用计算机集群技术,集中有几十上百台,甚至成千上万台计算机。
大家耳熟能详的大型网站谷歌、百度、淘宝等,都不是几台大型机可以搞定的,都有成千上万台服务器组成的高性能集群,分布于不同的地点。
假如你配一个LNMP环境,每次只需要服务10个并发请求,那么单台服务器一定会比多个服务器集群要快。只有当并发或总请求数量超过单台服务器的承受能力时,服务器集群才会体现出优势。
价格有效性(Cost-effectiveness)
通常一套系统集群架构,只需要几台或数十台服务器主机即可。与动则价值上百万的专用超级计算机相比便宜了很多。在达到同样性能需求的条件下,采用计算机集群架构比采用同等运算能力的大型计算机具有更高的性价比。
可伸缩性(Scalability)
当服务负载、压力增长时,针对集群系统进行较简单的扩展即可满足需求,且不会降低服务质量。通常情况下,硬件设备若想扩展性能能力,不得不购买增加新的CPU和存储器设备,如果加不上去了,就不得不购买更高性能的服务器,就拿我们现有的服务器来讲,可以增加的设备总是有限的。如果采用集群技术,则只需要将新的单个服务器加入现有集群架构中即可,从访问的客户角度来看,系统服务无论是连续性还是性能上都几乎没有变化,系统在不知不觉中完成了升级,加大了访问能力,轻松地实现了扩展。集群系统中的结点数目可以增长到几千乃至上万个,其伸缩性远超过单台超级计算机。
高可用性(Availability)
单一的计算机系统总会面临设备损毁的问题,例如:CPU、内存、主板、电源、硬盘等,只要一个部件坏掉,这个计算机系统就可能会宕机,无法正常提供服务。在集群系统中,尽管部分硬件和软件也还是会发生故障,但整个系统的服务可以是每天24×7可用的。集群架构技术,可以使得系统在若干硬件设备故障发生时仍可以继续工作,这样就将系统的停机时间减少到了最小。集群系统在提高系统可靠性的同时,也大大减小了系统故障带来的业务损失,目前几乎100%的互联网的网站都要求7*24小时提供服务的。
- 集群的分类
- 集群的常见分类
计算机集群架构按功能和结构可以分成以下几类:
- 负载均衡集群(load balancing clusters),简称LBC或者LB。
- 高可用性集群(High-availiability(HA) clusters),简称HAC。
- 高性能计算集群(High-performance(HPC) clusters),简称HPC。
- 网格计算(Grid computing)
提示:负载均衡集群和高可用性集群是互联网行业常用的集群架构模式
- 不同种类的集群介绍
- 负载均衡集群
负载均衡集群为企业提供了更为实用、性价比更高的系统架构解决方案。负载均衡集群可以把很多客户集中的访问请求负载压力尽可能平均地分摊在计算机集群中处理。客户访问请求负载通常包括应用程序处理负载和网络流量负载。这样的系统非常适合使用同一组应用程序为大量用户提供服务的模式,每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。
负载均衡集群运行时,一般通过一个或多个前端负载均衡器将客户访问请求分发到后端的一组服务器上,从而达到整个系统的高性能和高可用性。这样的计算机集群有时也被称为服务器群(ServerFarm)。一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用和负载均衡的特点
负载均衡集群的作用:
- 分担用户访问请求或数据流量(负载均衡)。
- 保持业务连续性,即7*24小时服务(高可用性)。
- 应用web业务,以及数据库从库.当然也包括其他应用业务
负载均衡集群典型的开源软件:Ivs,nginx,haproxy,lighttpd
- 高可用性集群
一般是指在集群中任意一个节点失效的情况下,该节点上的所有任务会自动转移到其他正常的节点上。此过程并不影响整个集群的运行。
提示:不同的业务会有若干秒的切换时间,db业务明显长于web业务切换时间。
当集群中的一个节点系统发生故障时,运行着的集群服务会迅速做出反应,将该系统的服务分配到集群中其他正在工作的系统上运行。考虑到计算机硬件和软件的容错性,高可用性集群的主要目的是为了使集群的整体服务尽可能可用。如果高可用性集群中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像。当它代替主节点时,它可以完全接管主节点(包括正地址及其他资源),因此,使集群系统环境对于户来说是一致的,即不会影响用户的访问
高可用性集群使服务器系统的运行速度和响应速度会尽可能地快。它们经常利用在多台机器上运行的冗余节点和服务来相互跟踪。如果某个节点失败,它的替补者将在几秒钟或更短时间内接管它的职责。因此对于用户而言,集群里的任意一台机器宕机,业务都不会受影响(理论情况下)
高可用性集群的作用:
- 当一台机器宕机时,另外一台机器接管(IP资源和服务资源)
- 负载均衡器之间,主数据库及主存储之间。
高可用性集群典型常用开源软件:keepalived、heartbeat
建议:能做负载均衡就不做高可用。
- 常用的集群软硬件介绍及选型
- 常见的集群软硬件产品
互联网企业常用的开源集群软件有:nginx,lvs,haproxy,keepalived,heartbeat。
互联网企业常用的商业集群硬件有:F5,Netscaler,Radware,A10等,工作模式相当于haproxy的工作模式。
- 集群软硬件产品如何选型
当企业业务重要,技术力量又薄弱,并且希望出钱购买产品及更好的服务时,可以选择硬件负载均衡产品,如FS、Netscaler、Radware等,此类公司多为传统的大型非互联网企业,如银行、证券、金融、宝马、奔驰等。
对于门户网站来说,大多会并用软件及硬件产品来分担单一产品的风险,如淘宝、腾讯、新浪等。融资了的企业会购买硬件产品,如赶集、58等网站。
中小型互联网企业,由于起步阶段无利润可赚或者利润很低,会希望通过使用开源免费的方案来解决问题,并且会雇佣专门的运维人员进行维护。例如:51cto.com等
相比较而言,商业的负载均衡产品成本高,性能好,更稳定,缺点不能二次开发,特别是大型网站,而且开源的负载均衡软件对运维人员的运维能力要求较高,如果运维开发、优化能力强,那么开源软件的负载均衡也是可以用的。
- 企业运维中如何选择开源集群软件产品
中小企业互联网公司网站并发访问和总访问量不是很大的情况下,建议首选nginx负载均衡,理由是nginx负载均衡配置简单、使用方便,安全稳定,社区活跃,使用的人逐渐增多,曾流行趋势,另外一个实现负载均衡的类位产品为Haproxy(支持L4和L7负载,同样优秀,但社区不如Nginx活跃)。
如果要考虑nginx负载均衡的高可用功能,建议首选keepalived软件,理由是安装、配置简覃令使用方便,安全稳定,和keepalived服务类似的高可用软件还有heartbeat。