Loading... ## 前言 **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. 顺序约束:多个资源启动顺序依赖关系 **(-∞,+∞)** ------------ 最后修改:2019 年 11 月 26 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 0 如果觉得我的文章对你有用,请随意赞赏