前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >玩转企业集群运维管理系列(九):企业集群高可用架构详解

玩转企业集群运维管理系列(九):企业集群高可用架构详解

作者头像
民工哥
发布2023-12-12 14:51:01
5410
发布2023-12-12 14:51:01
举报
文章被收录于专栏:民工哥技术之路

什么是集群

集群是一组协同工作的服务集合,用来提供比单一服务更稳定、更高效、更具扩展性的服务平台。

在集群的内部,有两个或两个以上的服务实体在协调、配合完成一系列复杂的工作。

  • 集群一般由两个或两个以上的服务器组建而成。每个服务器称为一个集群节点,集群节点之间可以相互通信。
  • 集群应该具有节点间服务状态监控功能,同时还必须具有服务实体的扩展功能,可以灵活地增加和剔除某个服务实体。
  • 集群应该具有故障自动切换功能:在集群中,同样的服务可以由多个服务实体提供。因而,当一个节点出现故障时,集群的另一个节点可以自动接管故障节点的资源,从而保证服务持久、不间断运行。
  • 一个集群系统必须拥有共享的数据存储 :因为集群对外提供的服务是一致的,任何一个集群节点运行一个应用时,应用的数据都集中存储在节点共享空间内。而每个节点的操作系统上仅运行应用的服务,同时存储应用程序文件。

什么是高可用

高可用(High availability,缩写为 HA),是指系统无中断地执行其功能的能力,代表系统的可用性程度。高可用的主要目的是为了保障“业务的连续性”,即在用户眼里,业务永远是正常对外提供服务的。

高可用是一种控制风险的能力,是一种面向风险设计,使系统具备控制风险,提供更高的可用性的能力。简单可以理解为通过种种措施使系统对外不间断地提供服务,保证服务的响应时间,减少因软件、硬件、人为造成的故障对服务的影响,在故障发生时,访问服务的用户并不会感觉到。核心就是自动检测,自动切换,自动恢复,模式有主从、双主、集群方式。

更多关于企业集群运维管理系列的学习文章,请参阅:玩转企业集群运维管理专栏,本系列持续更新中。

为什么要高可用

高可用的大前提:所有事物都不是100%可靠的
  • 所有事物都是变化的(唯一不变的是变化)。
  • 所有变化的都不是100%可靠的。
  • 结论:所有事物都不是100%可靠的。
内因:人、物都不是100%可靠的
  • 从人的层面:人都是有可能犯错的。
  • 从软件层面:软件都是有可能有BUG的。
  • 从硬件层面:硬件都是有可能会坏的。

从概率学角度分析,凡是有可能会出错的,只要变化次数足够多,最终出错的概率会无限趋向于1。

外因:无高可用,对外影响面是很大的
  • 从客户角度:无高可用,客户服务可能会中断。
  • 从股东层面:无高可用,股价可能会下跌。
  • 从社会角度:无高可用,社会秩序可能受影响。
根因(本质):控制风险

从公司自身角度:控制风险,保障公司价值,避免伤及根本。

控制风险的几个因素
  • 减少风险源
  • 减少风险发生的概率
  • 减小风险影响的范围
  • 缩短风险持续的时间

高可用集群的衡量标准

通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均故障维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%,具体HA衡量标准:

高可用设计的七大原则

少依赖原则

能不依赖的,尽可能不依赖,由于所有事物都不是100%可靠的,当2个事物之间有了关系,那么就会相互影响,就互为对方的一个风险,一个出问题可能会影响另外一个。

弱依赖原则

一定要依赖的,尽可能弱依赖,事物a强依赖事物b,一旦b出问题时,那么a也会出问题,所以任何强依赖都要尽可能的转化成弱依赖,可以直接降低出问题的概率。

分散原则

鸡蛋不要放一个篮子,分散风险,资源应该打散拆分成N份;避免全局只有1份,否则一有问题影响范围就是100%。

均衡原则

均匀分散风险,最好N份中的每份都是均衡的;避免某个份额过大,否则过大的那份一有问题就影响范围会比较大。

隔离原则

控制风险不扩散,不放大,每份之间是相互隔离的;避免一份有问题影响其他的也有问题,传播扩散了影响范围。另外隔离是有级别的,隔离级别越高,风险传播扩散的难度就越大,容灾能力越强。

隔离原则是一个极其重要的原则,它是前面4个原则的前提。没有做好隔离,前面4个原则都是脆弱的,风险很容易传播扩散开,破坏前面4个原则的效果。大量真实系统故障是因为隔离性做得不好导致的,如:线下影响线上,离线影响在线,预发影响生产,一条烂SQL影响整个库(或整个集群)等等。

分散,均衡,隔离是控制风险影响范围的3个核心原则。打散拆分成N份,每一份都是均衡的,且相互隔离,一份有问题,影响范围为1/N。

无单点原则

架构设计应考虑“冗余”,快速止血的方式是切换,回滚,扩容等;回滚和扩容属于特殊的切换,回滚指的是切换到某个版本,扩容指的是将流量切换到新扩容的机器上。

切换的前提是有备份,所以不能有单点(这里特指强依赖的单点,弱依赖的可以降级),要有冗余备份或其他版本;单点会限制整体的可靠性。

自我保护原则

外部的输入都不是100%可靠的,有时候是无意的错误,有时候甚至是恶意的破坏,因此针对外部输入要有防错设计,给自己多一些保护,手段如削峰、限流等。

更多关于企业集群运维管理系列的学习文章,请参阅:玩转企业集群运维管理专栏,本系列持续更新中。

高可用集群实现原理

自动侦测(Auto-Detect)/ 故障检查

自动侦测阶段由主机上的软件通过冗余侦测线,经由复杂的监听程序,逻辑判断,来相互侦测对方运行的情况。常用的方法是:集群各节点间通过心跳信息判断节点是否出现故障。

当有节点(一个或多个)和另外节点互相接收不到对方心跳信息时,如何决定哪一部分节点是正常运行的,而哪一部分是出现故障需要隔离的(避免集群脑裂),这时候通过法定票数(quorum)决定,即当有节点故障时,节点间投票决定哪个节点是有问题的,票数大于半数为合法。

一般组成集群的节点数量为单数台(2n+1),当集群分区脑裂时,节点数量小于一半(>n+1)的分区自动停止对外提供服务。

自动切换/故障转移(FailOver)

自动切换阶段某一主机如果确认对方故障,则正常主机除继续进行原来的任务,还将依据各种容错备援模式接管预先设定的备援作业程序,并进行后续的程序及服务。

通俗地说,即当A无法为客户服务时,系统能够自动地切换,使B能够及时地顶上继续为客户提供服务,且客户感觉不到这个为他提供服务的对象已经更换。通过上面判断节点故障后,将高可用集群资源(如VIP、httpd等)从该不具备法定票数的集群节点转移到故障转移域(FailoverDomain,可以接收故障资源转移的节点)。

自动恢复/故障回转(FailBack)

自动恢复阶段在正常主机代替故障主机工作后,故障主机可离线进行修复工作。在故障主机修复后,透过冗余通讯线与原正常主机连线,自动切换回修复完成的主机上。

常见的高可用集群

常说的双机热备、双机互备、多机互备等都属于高可用集群的范畴,这类集群一般都由两个或两个以上节点组成。

双机冷备

冷备是指当目标设备发生故障或停机后,冷备设备才开始由停机等待状态进入启动运转状态,并承担起故障设备的工作任务。

比如,有两台业务服务器:主服务器和备用服务器。在主服务器运行时候,通过定时任务自动将数据定时同步到备用服务器上。

当主服务器发生故障时,人工方式手动切换到备用服务器上(临时把备份数据库机器的IP改过来用)保障系统的连续运行和服务。主服务器恢复功能后,只需要将备用服务器上的数据拷贝回来,重新启动主服务器即可。

双机热备

典型的双机热备结构如下:

双机热备是最简单的应用模式,即经常说的active/standby方式。它使用两台服务器,一台作为主服务器(action server),负责运行应用程序并对外提供服务,另一台作为备用服务器(standby server),安装和主服务器一样的应用程序,但是并不启动服务,处于待机状态。

主机和备机之间通过心跳技术相互监控,监控的资源可以是网络、操作系统,也可以是服务。可以根据自己的需要,选择需要监控的资源。

当备机监控到主机的某个资源出现故障时,根据预先设定好的策略,首先将IP切换过来,然后将应用程序服务也接管过来,接着就由备机对外提供服务。

由于切换过程时间非常短,因此用户根本感觉不到程序出了问题,而且还进行了切换,从而保障了应用程序持久、不间断地服务。

双机互备

双机互备是在双机热备的基础上,两个相互独立的应用在两个机器上同时运行,互为主备,即两台服务器既是主机也是备机,当任何一个应用出现故障时,另一台服务器都能在短时间内将故障机器的应用接管过来,从而保障了服务的持续、无间断运行。

  • 优点:双机互备的好处是节省了设备资源,两个应用的双机热备至少需要四台服务器,而双机互备仅需两台服务器即可完成高可用集群功能。
  • 缺点:双机互备也有自身的缺点:在某个节点故障切换后,另一个节点上就同时运行了两个应用的服务,有可能出现负载过大的情况。
多机互备

多机互备是双机热备的技术升级,通过多台机器组成一个集群,可以在多台机器之间设置灵活的接管策略。

高可用集群不能保证应用程序数据的安全性,它仅仅解决的是对外提供持久不间断的服务,把由于软件、硬件、网络、人为因素造成的故障而对应用造成的影响降低到最底程度。

更多关于企业集群运维管理系列的学习文章,请参阅:玩转企业集群运维管理专栏,本系列持续更新中。

高可用集群软件

高可用集群一般是通过高可用软件来实现的。在Linux下常用的高可用软件有开源 Keepalived、Heartbeat、DRBD、corosync+pacemaker。

HA集群中的相关术语
节点

运行Heartbeat进程的一个独立主机,称为节点(node)。

节点是HA集群的核心组成部分,每个节点上运行着操作系统和Heartbeat软件服务。在Heartbeat集群中,节点有主次之分,分别称为主节点和备用/备份节点,每个节点拥有唯一的主机名,并且拥有属于自己的一组资源,例如,磁盘、文件系统、网络地址和应用服务等。

主节点上一般运行着一个或多个应用服务。而备用节点一般处于监控状态。

资源

资源(resource)是一个节点可以控制的实体,并且当节点发生故障时,这些资源能够被其他节点接管。在Heartbeat集群中,可以当做资源的实体有以下几种。

  • 磁盘分区、文件系统
  • IP地址
  • 应用程序服务
  • NFS
事件

事件(event)也就是集群中可能发生的事情。例如,节点系统故障、网络连通故障、网卡故障、应用程序故障等。这些事件都会导致节点的资源发生转移,HA集群的测试也是基于这些事件来进行的。

动作

动作(action)是事件发生时HA的响应方式,动作是由shell脚步控制的。例如,当某个节点发生故障后,备份节点将通过事先设定好的执行脚本进行服务的关闭或启动,进而接管故障节点的资源。

更多关于企业集群运维管理系列的学习文章,请参阅:玩转企业集群运维管理专栏,本系列持续更新中。

参考链接:https://blog.csdn.net/RayChiu757374816 /article/details/127805749 https://blog.csdn.net /yangshangwei/article/details/129106004

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-12-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 民工哥技术之路 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是集群
  • 什么是高可用
  • 为什么要高可用
  • 高可用集群的衡量标准
  • 高可用设计的七大原则
    • 少依赖原则
      • 弱依赖原则
        • 分散原则
          • 均衡原则
            • 隔离原则
              • 无单点原则
                • 自我保护原则
                • 高可用集群实现原理
                  • 自动侦测(Auto-Detect)/ 故障检查
                    • 自动切换/故障转移(FailOver)
                      • 自动恢复/故障回转(FailBack)
                      • 常见的高可用集群
                        • 双机冷备
                          • 双机热备
                            • 双机互备
                            • 高可用集群软件
                              • HA集群中的相关术语
                              相关产品与服务
                              云服务器
                              云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                              领券
                              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档