前言

HA: 高可用集群
实现的方式有以下两个大分类:

vrrp: keepalived
AIS: hearbeat, OpenAIS, corosync/pacemaker, cmam/rgmanager(conga) RHCS

在高可用集群中主要故障:
硬件故障:

  • 设计缺陷
  • 使用过久,服务器自然损坏
  • 人为所致服务器故障

其实很多时候都是认为导致服务中断,一般来讲自然损坏几率较小。一般企业都会在一定的时间跟换服务器。

软件故障:

  • 设计缺陷
  • bug
  • 人为失误操作

计算高可用集群的可用性

A=平均无故障时间/(平均无故障时间+平均修复时间)
A=MTBF/(MTBF+MTTR)
取值范围: 0 < A < 1

MTBF: Mean Time Between Failure
MTTR: Mean Time To Repaier

AIS的三个层次以及实现方式

  1. 讯息层(Messaging Layer)

    主要功能:用于在各节点之间传递心跳信息,也称为心跳层。节点之间传递心跳信息可以通过广播,组播,单播等方式。(传递心跳和事务,处在最底层)
    实现方式:heartbeat v/1~3 corosync cman

  2. 集群资源管理器(Cluster Resource Manager(CRM))

    主要功能:真正实现集群服务的层。每个节点都运行一个资源管理器(Cluster Resource Manager),为实现高可用提供核心组件,包括资源定义,属性等。

    实现方式:

     heartbeat v1 haresoureces (配置接口:配置文件haresoureces)
     heartbeat v2 crm (在每个节点运行一个crmd(5560/tcp)守护进程,有命令行接口 crmsh;GUI hb_gui)
     heartbeat v3 + pacemaker (配置接口:crmsh,pcs; GUI:kawk(suse), LCMC, pacemaker-gui)
     rgmanager (配置接口:cluster.conf,system-config-cluster,conga(webgui),cman_tool,clustat)
  3. 资源代理(Resource Agent)
    主要功能:资源代理层,集群资源代理,能够管理本节点上的属于集群资源的启动,停止和状态信息的脚本。

    实现方式:

     hearbeat legacy: /etc/ha.d/haresources.d/目录下的脚本;
     LSB: /etc/rc.d/init.d/ 目录下的脚本;
     OCF:Open Cluster Framework
         provider:
     STONITH:
     Systemd:systemctl

组合方式

heartbeat v1 (haresources)
heartbeat v2 (crm)
heartbeat v3 + pacemaker
    corosync v1 + pacemaker (plugin 插件) # 以插件方式运行
    corosync V2 + pacemaker (standalone service) # 以一个独立的服务运行

cman + rgmanager
cman + packmaker
corosync v1 + cman + packmaker

投票系统

由于某个节点因为软硬件故障导致服务中断,此时其他节点将会争夺资源,发生脑裂现象。此时需要投票系统来顶一个主节点,对资源进行隔离等。
隔离

STONITH: shoot the other node on then head(直接停掉节点,kill) 节点级别隔离
Fence:资源级别隔离
资源倾向性

vote system
少数服从多数: quorum

with quorum:拥有法定票数
without quorum:不拥有法定票数

节点健康检测:

ping Node
qdisk   # 仲裁是被

!> qdisk: 多个节点每隔一段时间往通一个仲裁设备上写入数据,节点之间根据对方是否有写入数据判断对方是否在线。

资源类型/属性

资源类型

primitive:主资源,原始资源;在集群中只能运行一个实例;
clone:克隆资源,在集群中可以运行多个实例;
    匿名克隆、全局唯一克隆、状态克隆(主动,被动)
multi-state(master/slave):克隆资源的特殊实现:主/从(多状态资源)
group:组资源,特点是共进退,启动一起启动,相反同理

资源属性

priority:优先级
target-role:目标角色,started,stopped,master;
is-managed:是否允许集群管理此资源;布尔值
resource-stickiness:资源粘性;定义资源留在当前节点的粘性
allow-migrate:是否允许迁移;

资源粘性

表示资源乐意留在那个节点,用约束:score实现

  1. 位置约束:资源对节点的倾向性;

    取值范围(-∞,+∞)
    当值为负无穷时:表示有可选择的节点,就不会留在当前节点;
    当值为正无穷时:表示资源乐意留在当前节点;

    任何值+无穷大=无穷大
    任意值+负无穷大=负无穷大
    无穷大+负无穷大=负无穷大

  2. 排列约束:资源彼此间是否运行于同一个节点的倾向性;

    (-∞,+∞)
    无穷大:必须在一起
    负无穷大:不能在一起(一个节点)

  3. 顺序约束:多个资源启动顺序依赖关系

    (-∞,+∞)


Last modification:November 26th, 2019 at 04:21 pm
If you think my article is useful to you, please feel free to appreciate