CHAPTER 1 Linux 集群

news2025/1/11 21:41:27

集群

    • 1 集群介绍
    • 2 集群分类
      • 1. 高可用性集群(High Availability Cluster)HA
      • 2. 负载均衡集群(Load Balance Cluster)LB
      • 3. 高性能集群(High Performance Computing Cluster)HPC
    • 3 HA集群逻辑架构
      • 1. 信息层/基础架构层(Messaging/Infrastructure)
      • 2. 成员关系层(Membership)
      • 3. 资源分配层(Resource Allocation layers)
      • 4. 资源层(Resource Layer)/资源代理层(Resource Agents)
    • 4 HA集群软件
        • 1. Messaging and Membership Layer(信息与关系层)
        • 2. Cluster Resource Manager Layer(资源管理层,CRM)
        • 3. 常用组合
    • 5 HA集群的衡量标准
    • 6 HA集群术语

1 集群介绍

计算机集群简称集群(Cluster)是一种计算机系统, 它通过一组松散集成的计算机软件/硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多。

而所谓高可用集群(High Availability Cluster,简称HA Cluster),即当前服务器出现故障时,可以将该服务器中的服务、资源、IP等转移到另外一台服务器上,从而满足业务的持续性;这两台或多台服务器构成了服务器高可用集群。

2 集群分类

1. 高可用性集群(High Availability Cluster)HA

运行于两个或多个节点上,目的是在系统出现某些故障的情况下,最大限度地减少服务中断时间,保障应用程序持续提供服务的能力。这类集群中比较著名的有keepalived、TurbolinuxTurboHA、Heartbeat、Kimberlite 等。对于此类集群还有很多通俗的名称,如“双机热备”, “双机互备”等。
高可用集群是服务的可用性比较高,当我们某台服务器死机后不会造成我们的服务不可用。其工作模式则是将一个具有故障的服务转交给一个正常工作的服务器,从而达到服务不会中断。一般来说我们集群中工作在前端(分发器)的服务器都会对我们的后端服务器做一个健康检查,如果发现我们服务器宕机就不会对其在做转发,衡量标准:可用性=在线时间/(在线时间+故障处理时间),就是通常我们说的可用性99%、99.9%、99.99%等等,在业内常见开源解决方案有heartbeat、keepalived等等;

2. 负载均衡集群(Load Balance Cluster)LB

提供和节点个数成正比的负载能力,这种集群适合需要提供大负载访问量的服务,如Web。这类集群中比较著名的有Turbolinux Cluster Server、Linux Virtual Server。此类集群把负载压力根据某种算法合理分配到集群中的每一台计算机上,以减轻主服务器的压力,降低对主服务器的硬件和软件要求。
负载均衡集群中有一个分发器或者叫调度器,我们将其称之为Director,它处在多台服务器的上面,分发器根据内部所定义的规则或调度方式从下面的服务器群中选择一个以此来响应客户端发送的请求,从而解决高并发的问题。在扩展中可非常容易的使用scale out扩展,从而实现集群的伸缩性,在业内常见开源解决方案有lvs、haproxy、nginx、ats;

3. 高性能集群(High Performance Computing Cluster)HPC

利用计算集群软件将多个节点的计算机联结在一起,完成通常只有超级计算机才能完的计算任务。
HP:高性能的集群是当某一个任务量非常大的时候,我们做一个集群共同来完成这一个任务。这种处理方式我们称为并行处理集群,并行处理集群是将大任务划分为小任务,分别进行处理的机制,常常用于大数据分析,海量资源整合,目前比较出名的就是Hadoop。

总之,在实际生产环境中我们都可以根据实际情况来挑选合适的集群解决方案,3种集群的侧重各有不同,LB集群着重在于提供服务并发处理能力,HA集群以提升服务在线的能力实现服务不间断,HP集群着重用于处理一个海量任务

3 HA集群逻辑架构

在这里插入图片描述
可以看出一个高可用集群分为四层架构(Architecture Layers) :

  1. 信息层/基础架构层(Messaging/Infrastructure)
  2. 成员关系层(Membership)
  3. 资源分配层(Resource Allocation layers)
  4. 资源层(Resource Layer)

1. 信息层/基础架构层(Messaging/Infrastructure)

传递心跳信息,集群事务信息,是一个高可用集群最基本最底层非常重要的子层,靠一个单独的服务组件来实现。 类似于TCP/IP协议的物理层,真正的通讯是靠该层实现。

主要的作用是传递当前节点的心跳信息,并告知给对方,这样对方就知道其他节点是否在线。如果不在线,则可以实现资源转移,这样另一台节点就可以充当主节点,并正常提供服务。传递心跳信息一般使用一根心跳线连接,该线接口可以使用串行接口也可以是以太网接口来连接。每一个节点上都包含信息层。

可以提供该组件的软件有

  • heartbeat
  • corosync(openAIS的子项目)
  • keepalive
  • cman

Heartbeat 是比较常用的软件,Keepalived配置相对比较简单,而ultramonkey好像不怎么常用,Corosync比heartbeat功能还要强大,功能更加丰富。

heartbeat有三个版本即heartbeat v1、heartbeat v2和heartbeat v3,heartbeat v1是比较老的版本,heartbeat v2是目前稳定的版本,在做实验的时候使用该版本。

2. 成员关系层(Membership)

法定票数的计算与统计,重新收敛生成状态信息的层次,为上层进行资源分配提供依据的基础

这层最重要的作用是通过CCM(Cluster Consensus Menbership Service)服务由Messaging层提供的信息,来产生一个完整的成员关系

组件有

  • CCM

核心工具CCM(Cluster Consensus Membership)服务的作用:承上启下,监听底层接受的心跳信息,当监听不到心跳信息的时候就重新计算整个集群的票数和收敛状态信息,并将结果转递给上层,让上层做出决定采取怎样的措施,CCM还能够生成一个各节点状态的拓扑结构概览图,以本节点做为视角,保证该节点在特殊情况下能够采取对应的动作

3. 资源分配层(Resource Allocation layers)

这层主要是实现资源管理,包含组件有:

  • CRM(集群资源管理器,Cluster Resource Manager)
  • CIB(集群信息基库,Cluster Information Base)
  • LRM(本地资源管理器,Local Resource Manager)
  • PE(策略引擎,Policy Engine)
  • TE(实施引擎,Transition Engine)

组件详细介绍

  • CRM(集群资源管理器,Cluster Resource Manager)
    用来实现资源的分配,资源分配的每个动作都要通过CRM来实现,是核心组件,每个节点上的CRM都维护一个CIB(集群信息基库 ,Cluster Information Base)。定义资源特定的属性,哪些资源定义在同一个节点上
    • 每一个动作都要通过CRM来实现,很多资源的定义都可以通过CRM定义
    • 在每一个节点上每一个节点都维护着一个CIB,只有工作在DC(Designated Coordinator指定协调员,主节点挂掉会选出新的DC)上的才可以修改
  • CIB(集群信息基库,Cluster Information Base)XML格式的主配置文件,在内存中的一个XML格式的集群级别的配置文件,只是保存在文件中,工作的时候常驻内存并且需要通知给其它节点,只有DC上的CIB才能进行修改,其他节点上的CIB都是拷贝DC上
  • LRM(本地资源管理器,Local Resource Manager),获取本地某个资源的状态,并且实现本地资源的管理,如当检测到对方没有心跳信息时,来启动本地的服务进程等
  • PE(策略引擎,Policy Engine),来定义资源转移的一整套转移方式,但只是做策略者,并不亲自来参加资源转移的过程,而是让TE来执行自己的策略,只能在DC上运行
  • TE(Transition Engine): 将决策结果传递给其他被选中的节点来进行资源的转移或者动作,只能在DC上运行

资源:在集群中构成一个完整服务的每一部分都叫资源,都需要配置和管理。以web应用为例:vip是资源,web服务器是资源,存储也是资源。不同的服务的资源也不尽相同,其中存储资源的选择、配置、管理是高可用集群中的难点问题。

第三层的主要作用就是实现资源管理,真正提供资源的要靠资源本身 如:IP地址,httpd ,共享存储

4. 资源层(Resource Layer)/资源代理层(Resource Agents)

集群资源代理,能够管理本节点上的属于集群资源的某一资源的启动,停止和状态信息的脚本,只有对资源应用以后进行管理后才算是提供了高可用服务。资源代理分为:LSB(/etc/init.d/*),OCF(比LSB更专业,更加通用)。

任何资源代理都要使用同一种风格,接收四个参数:{start|stop|restart|status},每个种资源的代理都要完成这四个参数据的输出。

核心工具有以下几种

  • LSB(Linux Standard Base),这是一种我们常见的如/etc/init.d/下的标准linux脚本风格
  • OCF(开放式集群框架,Open Clustering Framework) OCF脚本是比LSB更强大的一种脚本,支持更多的参数
  • heartbeart 早期提供的资源管理机制
  • 特定集群服务开发人员自定义的资源代理 如:DRBD

工作机制:PE根据CIB获取资源的配置信息(集群上的所有信息都会收集到DC的CIB,同步到其它节点),而后做出决策,一旦做得决策就会进行资源的管理。PE借助于本地的CCM通知给其它节点CIB来实现对某些资源管理信息的传递,比如说通告其它CRM要启动某一资源了,收到信息后CRM并不负责启动,转由LRM(Local Resource Manager本地资源管理)启动,而并发资源又借助于RA(Resource Agent资源代理)实现资源管理。

4 HA集群软件

1. Messaging and Membership Layer(信息与关系层)

① heartbeat (v1,v2,v3)
② corosync
③ cman
④ keepalived
⑤ ultramokey

2. Cluster Resource Manager Layer(资源管理层,CRM)

① haresource,crm (heartbeat v1/v2)
② pacemaker (heartbeat v3/corosync)
③ rgmanager (cman)

3. 常用组合

① heartbeat v2+haresource(或crm) (一般常用于CentOS 5.X)
② heartbeat v3+pacemaker (一般常用于CentOS 6.X)
③ corosync+pacemaker (现在最常用的组合)
④ cman + rgmanager (红帽集群套件中的组件,还包括gfs2,clvm)
⑤ keepalived+lvs (常用于lvs的高可用)

5 HA集群的衡量标准

高可用性群集(High Available), 是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。
通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。

故:HA=MTTF/(MTTF+MTTR)*100%

具体HA衡量标准:

  • 99% 一年宕机时间不超过4天
  • 99.9% 一年宕机时间不超过10小时
  • 99.99% 一年宕机时间不超过1小时
  • 99.999% 一年宕机时间不超过6分钟

6 HA集群术语

  1. 集群节点
    集群存在所有主机都称为节点,每个HA集群最低要求需有2个节点;正常来说,节点数最好为奇数。在生产环境中,HA集群的节点数至少为3个,可以降低发生脑裂的概率。
  2. 集群服务与资源
    集群服务通常包括多个资源,多个资源组成某种集群服务。如mysql高可用服务,其资源包括vip、mysqld、共享存储等。资源是启动一个服务需要的子项目。例如启动一个httpd服务,需要ip,也需要服务脚本,还需要文件系统(用来存储数据的),这些我们都可以统称为资源。对于集群服务的管理,实际上就是对资源的管理。
  3. 脑裂
    脑裂是指因某种特殊原因造成集群分裂成两个小集群,而这两个小集群互相不能正常通信,此时,就会发生脑裂(Brain Split)现象。
  4. 共享存储
    高可用集群多节点都需要访问数据,如果各节点访问同一个数据文件都是在同一个存储空间内的,就是说数据共享的就一份,而这个存储空间就共享存储。如Web或Mysql高可用集群,他们的数据一般需要放在共享存储中,主节点能访问,从节点也能访问。
  5. STONITH(Shoot The Other Node in the Head,“爆头”)组件
    这种机制直接操作电源开关,控制故障节点的电源开关,通过暂时断电又上电的方式,使故障节点重启,这种方式需要硬件支持。
    主节点在某一段时间由于某种原因,没时间传递心跳信息,这个时候集群会选取新的DC,重新分配资源提供服务,如果主节点服务器还没有宕掉,这样就会导致服务器分隔、资源争用,这种情况被称为脑裂(brain-split)。此时,用户能访问,一旦有写的操作,就会导致文件系统崩溃,损失惨重。为避免这种情况,新的DC一旦产生,第一时间对主节点执行stonith,这种操作叫做资源隔离。
  6. 资源隔离
    节点级别:这种就叫STONITH,直接把对方的电源给切断,一般这种主机都是连接到电源交换机上的。
    资源级别:同样需要依赖一些硬件设备来完成。比如节点通过光纤交换机连接到共享存储,通过把需要踢除出去的节点的光纤接口屏蔽来实现资源隔离。
  7. 仲裁设备
    ping node:两个节点的模式下,一旦其中一个节点发生故障,发生集群分隔以后,无法判定哪个节点不正常,但工作正常的节点一定是可以连到互联网,故正常的节点是可以跟前端路由通信,所以可以把前端路由当成第三个节点,如果可以ping通,那就说明自己是正常的,可以将对方隔离掉。
    qdisk: RHCS(红帽官方提供的集群套件)不是使用ping节点来判断,而是使用一个共享存储的设备,节点按照心跳信息频率每隔一个信息频率时间就往磁盘里写一个数据位,如果设备每隔一个心跳时间间隔就更新一次数据位,就说明这个设备处于活动状态的,可以将对方隔离掉。

下一篇 CHAPTER 2 Web HA集群部署 - Heartbeat

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/379817.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt页面菜单栏、工具栏、状态栏

1、菜单栏 QMenu *editMenu ui->menuBar->addMenu("编辑(&E)");2、编辑菜单栏及工具栏内容 QAction *action_copy editMenu->addAction(QIcon("copy.png"),QString("复制(&c)"));action_copy->setShortcut(QKeySequence(…

数学建模竞赛的一些心得体会

1.数学建模经验首先简要的介绍一下我的情况。数学建模我也是在大一暑假开始接触的,之前对其没有任何的了解。我本身对数学也有相对较厚的兴趣,同时我也是计算机专业的学生,因此,我觉得我可参加数学建模的这个比赛。大一的暑假参加…

Linux->进程终止和等待

目录 1. 进程终止场景 1.1 进程退出码 1.2 进程常见退出方式 2. 进程等待 2.1 进程等待的必要性 2.2 进程等待的方式 wait()方式 waitpid()方式 options参数 status参数 1. 进程终止场景 代码运行完毕,结果正确 代码运行完毕,结果不正确 代码异…

【编程架构实践】关于技术栈和架构

架构是什么?老生常谈了。那就看看ChatGPT怎么说:软件架构是软件工程师在设计一个软件系统时,定义系统架构结构的一种科学方法。它指的是软件系统在软件工程师关注功能、性能和安全等质量属性的条件下,组织系统的方式。换句话说&am…

Flask源码篇:wsgi、Werkzeug与Flask启动工作流程

目录1 wsgi介绍2 使用wsgi实现一个web应用3 Werkzeug介绍4 Flask工作流程分析(1)创建Flask app(2)启动Falsk app(3)分析run_simple方法(4)分析make_server方法(5&#xf…

内容分发网络

介绍 CDN 内容分发网络(英语:Content Delivery Network 或 Content Distribution Network,缩写:CDN)是建立并覆盖在承载网上,由不同区域的服务器组成的分布式网络。将源站资源缓存到全国各地的边缘服务器&…

【数据库视图】简单学习视图,了解一些视图的简单功能

前言: 大家好,我是良辰丫🍅🍅🍅,今天我想带大家去了解一下数据库的视图,虽然视图这个东西在很多地方(各种公司以及项目)已经不再用了,但是许多大学生在考试的时候涉及,🛴🛴&#x1f…

【c++】STL常用容器5—list容器

文章目录list基本概念list构造函数list赋值和交换list大小操作list插入和删除list数据存取list反转和排序list基本概念 功能:将数据进行链式存储。 链表(list)是一种物理存储单元上非连续的存储结构,数据元素的逻辑顺序是通过链…

京东物流实时风控实践

摘要:本文整理自京东风控数据产品组架构师周文跃,在 FFA 2022 实时风控专场的分享。本篇内容主要分为六个部分:1. 京东物流业务介绍2. 物流风控场景概括3. 物流风控平台建设4. Flink 赋能5. 技术挑战6. 未来规划Tips:点击「阅读原…

操作系统权限提升(二十)之Linux提权-计划任务提权

系列文章 操作系统权限提升(十八)之Linux提权-内核提权 操作系统权限提升(十九)之Linux提权-SUID提权 计划任务提权 计划任务提权原理 linux计划任务提权是因为权限配置不当,计划任务以root权限运行,低权限的用户可以修改计划任务的文件,…

docker启动容器服务之后访问失败

关于docker启动容器服务之后,宿主机访问失败(解决方法) 注:在进行docker容器启动宿主机进行容器访问时,无需进行网络的配置,docker容器在启动时会自动解决 第一种原因及修改方法 在进行启动的时候&#…

JVM虚拟机概述(1)

1.JVM概述 1.1为什么要学习JVM 通过学习JVM ( java Virtual Machine )可以帮助我们理解java程序运行的过程,了解虚拟机中各种机制的实现原理。为后期写出优质的代码做好准备,为向更高的层次提升打好基础。 1.2虚拟机 虚拟机的本质就是在windows中&…

深入浅出的学习傅里叶变换

学习傅里叶变换需要面对大量的数学公式,数学功底较差的同学听到傅里叶变换就头疼。事实上,许多数学功底好的数字信号处理专业的同学也不一定理解傅里叶变换的真实含义,不能做到学以致用! 事实上,傅里叶变换的相关运算…

敏捷-期末

什么是敏捷开发? 敏捷开发(Agile Development)是一种以人为核心、迭代、循序渐进的开发方法。 怎么理解呢?它不是一门技术,它是一种开发方法,也就是一种软件开发的流程,它会指导我们用规定的环节去一步一步完成项目的开…

阿里云服务器ECS的功能特性有哪些?

本文介绍云服务器ECS的功能特性,帮助您更好地了解和使用云服务器ECS。 1、实例 实例是云上的虚拟计算服务器,内含vCPU、内存、操作系统、网络、磁盘等基础组件。您可以使用阿里云提供的控制台、API等管理工具创建和管理ECS实例,像使用本地服…

常用的 JVM 参数(第三章)

《实战Java虚拟机:JVM故障诊断与性能优化 (第2版)》 第三章 常用的 JVM 参数 3.1. 掌握跟踪调试参数 - 一切运行都有迹可循 参数类型参数作用备注GC 参数-JVM 提供了一些跟踪系统状态的参数,使用给定的参数执行 JVM,就可以在系统运行时打印…

基于ssm框架实现家庭理财收支系统(源码+数据库+文档)

一、项目简介 本项目是一套基于ssm框架实现家庭理财收支系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Java学习者。 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试&#xff0c…

【谷粒学院】微信扫码登录(199~206)

199.OAuth2介绍 OAuth2是什么? OAuth2是针对特定问题的一种解决方案 主要可以解决两个问题:开放系统间授权、分布式访问问题 一、OAuth2解决什么问题 1、OAuth2提出的背景 照片拥有者想要在云冲印服务上打印照片,云冲印服务需要访问云存储服…

_Linux (HTTP协议)

文章目录1. 认识URL2. urlencode和urldecode3. HTTP协议格式3-1. HTTP请求3-1. HTTP响应4. HTTP的方法5. HTTP的状态码6. TTP常见Header7. 最简单的HTTP服务器虽然我们说, 应用层协议是我们程序猿自己定的但实际上, 已经有大佬们定义了一些现成的, 又非常好用的应用层协议, 供我…

Java基础:JDK7-时间Date

JDK7以前时间相关类 1.Date Date date new Date(); , sout(date)得到的是现在所处位置的时间 Date date new Date(0L); , sout(date)得到的是时间原点也就是1970年1月1日08:00(东八区). date.setTime(1000L); sout(date)得到的是时间原点后一秒钟的时间 long time date.g…