随着应用程序对服务器、存储系统的系统要求越来越高,单台设备有时已经无法满足需求了,此时我们有两种方法可以解决:
使用性能更高的机器,但是成本以及维护成本非常高,而且不见得适合所有的应用。
多台设备联合起来对外提供服务,这就是集群。
主机可以形成集群,存储设备也可以形成集群。目前中高端存储设备自身就有双控制器。
一些NAS设备可以在多台独立设备之间形成集群,并实现单一命名空间,即用户访问目录路径就像访问一台机器一样。屏蔽了后端访问的过程,实际上,可能是由集群中不同的节点来提供服务的。
集群概述
上面讲到了为什么要用集群,首先用多个节点来代替一个节点完成任务,处理能力可以得到提高,其实还可以获得高可用性,即一个节点发生故障,另外的节点可以接替故障节点。
我们可以把集群分为三种:
-
高可用集群
在HA集群中,节点分为活动节点和备份节点,当活动节点故障了以后,备份节点立即接替任务。
那怎么实现切换的呢?HA集群的实现是基于资源切换。资源指的是备份节点要接管的所有东西,比如IP地址、磁盘卷、上下文等。
那怎么知道需要主节点挂了呢?需要依靠操作系统上安装的HA软件。它可以监控对方节点状态,一旦发现故障,则强行将资源占有。
-
负载均衡集群
负载均衡节点中,所有节点都参与工作。每个节点的地位相同,但是工作量怎么分配呢?可以有两种方式:
由单独的节点来分配运算量
也可以由节点通过网络通信来协商。
-
高性能集群
又称科学计算集群,其实与负载均衡集群本质上是一样的 ,不过主要用于科学计算而已,所以这种集群主要面向与CPU消耗型的应用。
如何把任务平均分配到每个CPU核心上呢?如果在一台计算机上则非常简单,操作系统会自动将多个线程平摊到多个CPU核心上。
但是在集群里面,则可以通过网络来进行协商。为了方便编程,还开发出很多API,可以屏蔽很多编程复杂度。所以节点收到任务数据之后,再由节点操作系统自行将任务数据分派到多个CPU核心上。
系统路径上的集群各论
集群可以在系统路上的任何点实现。比如CPU、内存、显卡等硬件可以形成集群,软件上,应用程序、文件系统、卷管理系统也可以形成集群。
什么时候需要集群呢?
当需要系统高可用的时候,也就是某处故障不会影响系统的可用,可选择使用高可用性集群
当单个系统的处理能力不能满足性能要求的时候,可使用负载均衡集群
当需要运算的数据量很大的时候,运算周期很长的时候,可使用高性能集群。
下面我们一一谈一下硬件层面和软件层面的集群。
硬件层面的集群
CPU集群:体现在多CPU的计算机系统,比如对称多处理系统,多个CPU共享物理内存相互协作。
内存集群:多条内存组成更大的容量空间。比如通过双通道提高性能(相当于条带化RAID0)
以太网卡集群:将多块以太网卡绑定在一起,向上提供虚拟网卡,底层则可以通过ARP轮询负载均衡,或者HA方式的多路径访问。
以太网集群:多台设备协作转发,实现了负载均衡和HA,体现在路由器和以太网交换机上。
显卡集群:将插在总线上的多块显卡连接起来,实现对大型3D数据渲染负载均衡,性能可以得到很大的提升。
FC卡的集群:通过与主机上的多路径软件配合,多块FC卡之间可以实现流量的负载均衡和HA,或者通过FC网络中的ISL链路负载均衡、HA方式实现流量分摊
FC网络设备的集群:一般来说FC网络设备没有向以太网交换机那样实现了负载均衡和HA 。
控制器集群:几乎中高端磁盘阵列的控制器都是双控的,可以是HA关系,或者是负载均衡关系。
磁盘集群:典型的集群是RAID系统,
软件层面的集群
应用程序的集群:一个应用程序可以同时启动多个实例(进程),共同完成工作 。不同实例可以运行在同一机器上,也可运行在不同的机器上,通过网络交互信息。
-
文件系统的集群:文件系统的集群是一个比较独立的课题。可以实现集群功能的文件系统叫集群文件系统,比如NFS、CIFS等网络文件系统,就是最简单的集群文件系统。
集群文件系统主要为了解决:容量、性能、共享
- 解决容量问题:比如说分布式文件系统,文件的存储其实是分散在各个节点上的,但是对外呈现统一的命名空间,也即目录。
也就是说分布式文件系统将每个节点的可用空间进行虚拟的整合,形成虚拟目录,对外屏蔽细节,对外根据多种策略来判断数据流向,将数据写入实际的空间里面。
- 解决性能问题。
同样的,可以使用多个节点来获得高性能。集群文件系统使得每个节点不必连接昂贵的磁盘阵列,就可以获得较高的文件IO性能。
在分布式文件系统的虚拟整合目录之上,采用了类似条带RAID 0的方式,依据负载均衡策略,将每次IO写入的数据,负载分担到所有节点上,节点获得的性能越多提升就越大。
但是实际上,集群文件系统实施起来不那么容易,需要经过长时间的调优。
- 解决共享访问的问题。
这是集群文件系统要解决的最重要的问题,也就是多节点共同访问相同目录和相同文件时一致性的问题。
集群文件系统需要考虑多个节点同时读写相同文件,保证所有节点都能读到一致性的数据,并利用分布式锁机制保证允许的性能下,节点之间不会写冲突。
常用的集群文件系统有PVFS,GFS,DFS,Lustre等
-
卷管理系统集群
本机的卷和本机和远程的卷进行镜像等协同操作,形成集群。