目录
一、集群的概念
服务器集群简称集群是一种服务器系统,它通过一组松散集成的服务器软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台服务器。
集群系统中的单个服务器通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群服务器通常用来改进单个服务器的计算速度和/或可靠性。一般情况下集群
服务器比单个服务器,比如工作站或超级服务器性能价格比要高得多。集群就是一组独立的服务器,通过网络连接组合成一个组合来共同完一个任务。
说的直白点,集群就是一组相互独立的服务器,通过高速的网络组成一个服务器系统,每个集群节点都是运行其自己进程的一个独立服务器。对网络用户来讲,网站后端就是一个单一的系统,协同起来向用户提供系统资源,系统服务。
二、为什么要使用集群?
1、集群的特点
- 高性能performance
一些需要很强的运算处理能力比如天气预报,核试验等。这就不是几台服务器能够搞定的。这需要上千台一起来完成这个工作的。
- 价格有效性
通常一套系统集群架构,只需要几台或数十台服务器主机即可,与动则上百万的专用超级服务器具有更高的性价比。
- 可伸缩性
当服务器负载压力增长的时候,系统能够扩展来满足需求,且不降低服务质量。
- 高可用性
尽管部分硬件和软件发生故障,整个系统的服务必须是7*24小时运行的。
2、集群的优势
- 透明性
如果一部分服务器宕机了业务不受影响,一般耦合度没有那么高,依赖关系没有那么高。比如NFS服务器宕机了其他就挂载不了了,这样依赖性太强。
- 高性能
访问量增加,能够轻松扩展。
- 可管理性
整个系统可能在物理上很大,但很容易管理。
- 可编程性
在集群系统上,容易开发应用程序,门户网站会要求这个。
3、集群分类及不同分类的特点
计算机集群架构按照功能和结构一般分成以下几类:
- 负载均衡集群(Load balancing clusters)简称LBC
- 高可用性集群(High-availability clusters)简称HAC
- 高性能计算集群(High-perfomance clusters)简称HPC
- 网格计算(Gridcomputing)
就集群分类而言, 网络上面一般认为是有三个,负载均衡和高可用集群式我们互联网行业常用的集群架构。
三、集群分类介绍
1、负载均衡集群
负载均衡集群为企业提供了更为实用,性价比更高的系统架构解决方案。负载均衡集群把很多客户集中访问的请求负载压力可能尽可能平均的分摊到计算机集群中处理。
客户请求负载通常包括应用程度处理负载和网络流量负载。这样的系统非常适合向使用同一组应用程序为大量用户提供服务。每个节点都可以承担一定的访问请求负载压力,并且可以实现访问请求在各节点之间动态分配,以实现负载均衡。
负载均衡运行时,一般通过一个或多个前端负载均衡器将客户访问请求分发到后端一组服务器上,从而达到整个系统的高性能和高可用性。这样集群有时也被称为服务器群。
一般高可用性集群和负载均衡集群会使用类似的技术,或同时具有高可用性与负载均衡的特点。
负载均衡集群的作用:
a)分担访问流量(负载均衡)
b)保持业务的连续性(高可用)
2、高可用性集群
一般是指当集群中的任意一个节点失效的情况下,节点上的所有任务自动转移到其他正常的节点上,并且此过程不影响整个集群的运行,不影响业务的提供。
类似是集群中运行着两个或两个以上的一样的节点,当某个主节点出现故障的时候,那么其他作为从 节点的节点就会接替主节点,继续上面的任务。从节点可以接管主节点的资源(IP地址,架构身份等),此时用户不会发现提供服务的对象从主节点转移到从节点。
高可用性集群的作用:当一台机器宕机另一台进行接管。比较常用的高可用集群开源软件有:keepalive,heardbeat。
3、高性能计算集群
高性能计算集群采用将计算任务分配到集群的不同计算节点儿提高计算能力,因而主要应用在科学计算领域。
比较流行的HPC采用Linux操作系统和其它一些免费软件来完成并行运算。这一集群配置通常被称为Beowulf集群。这类集群通常运行特定的程序以发挥HPCcluster的并行能力。这类程序一般应用特定的运行库, 比如专为科学计算设计的MPI库。HPC集群特别适合于在各计算节点之间发生大量数据通讯的计算作业,比如一个节点的中间结果或影响到其它节点计算结果的情况。
四、集群与分布式区别
集群是个物理形态,分布式是个工作方式
- 分布式:一个业务拆分成多个子业务,每个子业务分别部署在不同的服务器上
- 集群:同一个业务,部署在多个服务器上
1)分布式是指将不同的子业务分布在不同的地方。而集群指的是将几台服务器集中在一起,实现同一业务。
2)分布式中的每一个节点,都可以做集群。而集群并不一定就是分布式的。
举例:就比如新浪网,访问的人多了,他可以做一个群集,前面放一个响应服务器,后面几台服务器完成同一业务,如果有业务访问的时候,响应服务器看哪台服务器的负载不是很重,就将给哪一台去完成。
3)而分布式,从窄意上理解,也跟集群差不多,但是它的组织比较松散,不像集群,有一个组织性,一台服务器垮了,其它的服务器可以顶上来。
4)分布式的每一个节点,都完成不同的子业务,一个节点垮了,那这个业务就不可访问了。
简单说,分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响。
1、分布式图解
将一个大的系统划分为多个业务模块,业务模块分别部署到不同的机器上,各个业务模块之间通过接口进行数据交互。区别分布式的方式是根据不同机器不同业务。
上面:service A、B、C、D 分别是业务组件,通过API Geteway进行业务访问。
注:分布式需要做好事务管理
2、集群模式图解
集群模式是不同服务器部署同一套服务对外访问,实现服务的负载均衡。区别集群的方式是根据部署多台服务器业务是否相同。
注:集群模式需要做好session共享,确保在不同服务器切换的过程中不会因为没有获取到session而中止退出服务。
一般配置Nginx*的负载容器实现:静态资源缓存、Session共享可以附带实现,Nginx支持5000个并发量。
五、分布式与微服务区别
另外,还有一个概念和分布式比较相似,那就是微服务。
微服务是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成。系统中的各个微服务可被独立部署,各个微服务之间是松耦合的。每个微服务仅关注于完成一件任务并很好地完成该任务。在所有情况下,每个任务代表着一个小的业务能力。
1、分布式是否属于微服务?
分布式一定是微服务,微服务不一定是分布式
分布式的定义:把一个服务拆分成多个子服务,分别放在不同的服务器上。微服务可以放在同一个服务器上,也可以放在不同的服务器上。
2、微服务架构
微服务的设计是为了不因为某个模块的升级和BUG影响现有的系统业务。微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。