zoukankan      html  css  js  c++  java
  • 【大话存储II】学习笔记(15章),集群概论

    随着应用程序对服务器、存储系统的系统要求越来越高,单台设备有时已经无法满足需求了,此时我们有两种方法可以解决:

    • 使用性能更高的机器,但是成本以及维护成本非常高,而且不见得适合所有的应用。

    • 多台设备联合起来对外提供服务,这就是集群。

    主机可以形成集群,存储设备也可以形成集群。目前中高端存储设备自身就有双控制器。

    一些NAS设备可以在多台独立设备之间形成集群,并实现单一命名空间,即用户访问目录路径就像访问一台机器一样。屏蔽了后端访问的过程,实际上,可能是由集群中不同的节点来提供服务的。

    集群概述

    上面讲到了为什么要用集群,首先用多个节点来代替一个节点完成任务,处理能力可以得到提高,其实还可以获得高可用性,即一个节点发生故障,另外的节点可以接替故障节点。

    我们可以把集群分为三种:

    • 高可用集群

      在HA集群中,节点分为活动节点和备份节点,当活动节点故障了以后,备份节点立即接替任务。

      那怎么实现切换的呢?HA集群的实现是基于资源切换。资源指的是备份节点要接管的所有东西,比如IP地址、磁盘卷、上下文等。

      那怎么知道需要主节点挂了呢?需要依靠操作系统上安装的HA软件。它可以监控对方节点状态,一旦发现故障,则强行将资源占有。

    • 负载均衡集群

      负载均衡节点中,所有节点都参与工作。每个节点的地位相同,但是工作量怎么分配呢?可以有两种方式:

      • 由单独的节点来分配运算量

      • 也可以由节点通过网络通信来协商。

    • 高性能集群

      又称科学计算集群,其实与负载均衡集群本质上是一样的 ,不过主要用于科学计算而已,所以这种集群主要面向与CPU消耗型的应用。

      如何把任务平均分配到每个CPU核心上呢?如果在一台计算机上则非常简单,操作系统会自动将多个线程平摊到多个CPU核心上

      但是在集群里面,则可以通过网络来进行协商。为了方便编程,还开发出很多API,可以屏蔽很多编程复杂度。所以节点收到任务数据之后,再由节点操作系统自行将任务数据分派到多个CPU核心上。

    image.png

    系统路径上的集群各论

    集群可以在系统路上的任何点实现。比如CPU、内存、显卡等硬件可以形成集群,软件上,应用程序、文件系统、卷管理系统也可以形成集群。

    什么时候需要集群呢?

    • 当需要系统高可用的时候,也就是某处故障不会影响系统的可用,可选择使用高可用性集群

    • 当单个系统的处理能力不能满足性能要求的时候,可使用负载均衡集群

    • 当需要运算的数据量很大的时候,运算周期很长的时候,可使用高性能集群。

    下面我们一一谈一下硬件层面和软件层面的集群。

    硬件层面的集群

    image.png

    • 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等

    • 卷管理系统集群

      本机的卷和本机和远程的卷进行镜像等协同操作,形成集群。
      image.png

  • 相关阅读:
    python爬虫第二天
    sqlite3 数据库创建表
    python 中的nonlocal
    python中 random.seed()函数
    每日一题6/5
    竞赛191
    二进制操作, ~按位取反, | 或, & 与, ^异或, >倍数
    竞赛190
    css BFC
    css动画 Vs js动画
  • 原文地址:https://www.cnblogs.com/dy2903/p/8448907.html
Copyright © 2011-2022 走看看