高可用集群相关术语扫盲篇

简介: 关于高可用集群相关术语的扫盲篇,涵盖了集群类型、系统可用性、系统故障、提升系统高可用性的解决方案、高可用服务的组件、共享存储、网络分区、双节点集群、HA Cluster实现方案和高可用集群后端存储等多个方面的内容。

作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。

一.集群类型

1>.负载均衡(Load Balance,简称LB)

  目前有以下三代开源负载均衡软件:  
    LVS(tcp)  
    HAProxy(tcp/http)  
    Nginx(http/upstream,stream/upstream)

2>.高可用性(High Availability,简称HA)

  高可用性的集群主要解决了一个单点故障(Single Point of Failure,简称SPoF)的问题。

3>.高性能集群(High Performance Computing,简称HPC)

  高性能集群一般不会在民营企业或者上市公司使用,高性能集群一般用在国家的重要单位,用来计算数据量非常大的场景,比如国防,气象统计,模拟导弹的运行轨迹等。因此一般的民营企业压根也不会耗资购买如此高性能的设备(这需要国家特有的CPU,操作系统等。说白了这已经不是钱的问题了,尽管你再有钱也买不到这些核心技术)。  

  如下图所示,在2017年之前(https://www.top500.org/lists/2017/11/),我们中华人民共和国计算机位列与世界第一,可惜,从2018年起就被美国占据第一了。  

  博主推荐阅读:
    https://www.top500.org/

二.系统可用性

  可能有的运行小伙伴进入公司需要签一个服务水平协议(Service-Level Agreement,简称SLA),这个协议可能会直接和绩效挂钩,比如公司的工资是由"基本工资 + 绩效",如果你所维护的服务出现了问题,在规定的时间内没有恢复,可能公司会拿这个说事来扣你的绩效,这样你到账的薪资也会减少。  
    
  那怎么计算这个SLA呢?其实就是将每小时转换成分钟(60 * 24),再按月(比如一个月30天)统计出总时间,假如你们公司要求你的系统服务可用性在99.95%之上,那么你每个月可以出现故障的时间如下图所示。  

  大多数服务器重启一次大概在5分钟左右甚至有的服务器会更耗费时间(此处我们不谈论重启后操作系统起不来的情况哈),有的服务就算重启服务器服务依旧是无法立即恢复(比如Hadoop集群)。因此光靠重启不是解决问题的根本办法,为了提高服务的可用性,我们生产环境最好对服务做高可用,避免单点故障,从而提高SLA的值。

三.系统故障

  硬件故障:  
    设计缺陷(比如某手机更换了某种材质后客户使用手机一段时间手机就开始"发烧",生产环境中服务器硬件涉及故障相对较少,可以选择大品牌,比如dell服务器)  
    wear out(损耗,比如三年以上的机械硬盘很很大可能性会坏掉,如果磁盘写入次数较频繁也会降低磁盘寿命)  
    自然灾害(比如机房断电,火灾,战争之类的,因此需要做异地灾备)  
    ……  
  软件故障:  
    设计缺陷(比如系统故障,软件故障等)

四.提升系统高用性的解决方案之降低MTTR(平均故障时间)

解决方案:
  建立冗余机制,常见的冗余机制如下所示:
    active/passive(主/备,比如Hadoop的namenode角色active/standby)
      active --> HEARTBEAT(心跳检测机制) --> passive
    active/active(双主,比如zookeeper)      
      active <--> HEARTBEAT(心跳检测机制) <--> active

五.高可用的是"服务"

  HA nginx service:
    为每个nginx节点配置一个vip,每个nginx要实现心跳机制,当一个节点挂掉后另一个节点能立马响应服务,而且这两个nginx的数据应该是共享的(shared storage)。
    
  资源:组成一个高可用服务的"组件"
    (1)passive node的数量
    (2)资源切换

六.shared storage

  NAS(Network Attached Storage):  
    网络附加存储,基于网络(TCP/IP)的共享文件系统,典型的开源网络共享服务如NFS,SAMBA。

  SAN(Storage Area Network):  
    存储区域网络,基于网络的块级别的共享,一般都是光纤网络(需要单独购买HBA卡,HBA卡的接口光纤接口),其性能要比NAS更快。

七.网络分区(Network partition)

  quorum:法定人数
    with quorum:> total/2
      可用的节点数量要大于总集群数量的一半,一半以上的节点要存活并提供正常的服务,比如一个集群由3个节点,那么最少得有2台节点可用提供正常服务。
    without quorum: <= total/2
      故障的机器要小于等于总集群数量的一半,比如一个集群有3个节点组成,那么最多有一个节点出现故障。  
  隔离设备:fence(管理服务器的状态,以防止服务出现脑裂的情况,一般情况下该设备得单独购买)
    node:STONITH = Shooting The Other Node In The Head(强制下线/断电),官方连接:https://access.redhat.com/documentation/zh-cn/red_hat_enterprise_linux/7/html/high_availability_add-on_reference/s1-unfence-haar

八.双节点集群(TWO nodes Cluster)

  辅助设备:  
    ping node(可用自定义脚本实现)  
    quorum disk(仲裁设备,需要花钱购买)

  Failover:  
    故障切换,即某资源的主节点故障时,将资源转移至其它节点的操作。

  Failback:  
    故障移回,即某资源的主节点故障后重新修改上线后,将之前已转移至其它节点的资源重新切回的过程。

九.HA Cluster实现方案

  AIS(ApplicaitonInterface Specification)  
    应用程序接口规范,比较常见的有以下几种方案:
      RHCS:Red Hat Cluster Suite  
        红帽集群套件
      heartbeat:  
        基于心跳监测实现服务高可用
      pacemaker+corosync:  
        资源管理与故障转移
      vrrp(Virtual Router Redundancy Protocol):  
        虚拟路由冗余协议,解决静态网关单点风险
        软件层:  
          keepalived
        物理层:  
          路由器、三层交换机

十.高可用集群-后端存储

  JBOD(Just a Bunch Of Disks)不是标准的RAID等级,它通常用来表示一个没有控制软件提供协调控制的磁盘集合,JBOD 将多个物理磁盘串联起来,提供一个巨大的逻辑磁盘,JBOD的数据存放机制是由第一块磁盘开始按顺序往后存储,当前磁盘存储空间用完后,再依次往后面的磁盘存储数据,JBOD 存储性能完全等同于单块磁盘,而且也不提供数据安全保护,它只是简单提供一种扩展存储空间的机制,JBOD 可用存储容量等于所有成员磁盘的存储空间之和。

目录
相关文章
|
开发工具 数据安全/隐私保护 C++
[笔记] 编译bit7z踩坑记录
[笔记] 编译bit7z踩坑记录
1064 0
|
运维 Linux
CentOS操作系统常见的故障处理
本文分享了CentOS操作系统网卡启动失败的故障处理方法,包括使用命令查看日志和禁用NetworkManager服务。
377 4
CentOS操作系统常见的故障处理
|
人工智能 异构计算 Python
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
572 1
解锁视频生成新时代! 探索智谱CogVideoX-2b:轻松生成6秒视频的详细指南
|
弹性计算 Linux iOS开发
Python 虚拟环境全解:轻松管理项目依赖
本文详细介绍了 Python 虚拟环境的概念、创建和使用方法,包括 `virtualenv` 和 `venv` 的使用,以及最佳实践和注意事项。通过虚拟环境,你可以轻松管理不同项目的依赖关系,避免版本冲突,提升开发效率。
672 3
|
存储 NoSQL 调度
|
网络安全 数据安全/隐私保护
JumpServer的用户管理
本文介绍了JumpServer的用户管理,包括创建用户组、用户,以及使用普通用户登录的步骤。
227 4
JumpServer的用户管理
|
NoSQL 关系型数据库 数据库
JumpServer的Docker部署实战案例
JumpServer的Docker部署实战案例,详细介绍了JumpServer的概述、环境准备、基于Docker的快速部署步骤,以及如何访问JumpServer的WebUI。
1532 0
|
存储 Kubernetes 测试技术
k8s使用pvc,pv,sc关联ceph集群
文章介绍了如何在Kubernetes中使用PersistentVolumeClaim (PVC)、PersistentVolume (PV) 和StorageClass (SC) 来关联Ceph集群,包括创建Ceph镜像、配置访问密钥、删除默认存储类、编写和应用资源清单、创建资源以及进行访问测试的步骤。同时,还提供了如何使用RBD动态存储类来关联Ceph集群的指南。
462 7
|
运维 监控 测试技术
自动化运维工具的设计与实现
【8月更文挑战第31天】在现代软件开发中,自动化运维是提高效率、减少错误的关键。本文将探讨如何设计并实现一个自动化运维工具,通过具体代码示例展示其构建过程。我们将从需求分析入手,逐步深入到工具的设计思路、核心功能实现以及最终的部署与测试。文章旨在为读者提供清晰的自动化运维工具开发指导和实践参考。
|
网络协议 安全 网络安全
软考软件设计师必背100题(上)
软考软件设计师必背100题(上)
543 0