HA Cluster 基础原理详解

作者: 4e8ea348373f | 来源:发表于2018-04-18 12:07 被阅读11次

一、高可用集群的定义

      高可用集群,英文原文为High Availability Cluster,简称HACluster,简单的说,集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源。这些单个的计算机系统 就是集群的节点(node)。
      高可用集群的出现是为了使集群的整体服务尽可能可用,从而减少由计算机硬件和软件易错性所带来的损失。如果某个节点失效,它的备援节点将在几秒钟的时间内接管它的职责。因此,对于用户而言,集群永远不会停机。
      高可用集群软件的主要作用就是实现故障检查和业务切换的自动化。只有两个节点的高可用集群又称为双机热备,即使用两台服务器互相备份。当一台服务器出现故障时,可由另一台服务器承担服务任务,从而在不需要人工干预的 情况下,自动保证系统能持续对外提供服务。双机热备只是高可用集群的一种,高可用集群系统更可以支持两个以上的节点,提供比双机热备更多、更高级的功能,更能满足用户不断出现的需求变化。

二、高可用集群的衡量标准

       HA(High Available), 高可用性群集是通过系统的可靠性(reliability)和可维护性(maintainability)来度量的。工程上,通常用平均无故障时间(MTTF)来度量系统的可靠性,用平均维修时间(MTTR)来度量系统的可维护性。于是可用性被定义为:HA=MTTF/(MTTF+MTTR)*100%

    具体HA衡量标准:
      99% 一年宕机时间不超过4天
      99.9% 一年宕机时间不超过10小时
      99.9;9% 一年宕机时间不超过1小时
      99.999% 一年宕机时间不超过6分钟

三、高可用集群的层次结构

      messaging layer 信息层 主要在集群节点之间传递心跳(单播,多播,广播)
      resoure manager 资源管理层(每个高可用都应该多个资源,服务+ip或者存储),全局事务决策
      local rm 本地资源管理 只负责本地操作 并把结果通知给rm
      resoure agent 启动一个服务 都是借助外部来实现的/etc/rc.d/init.d/或/usr/lib/systemd/ 不是直接启动程序包,而是通过外部的启动控制程序或脚本,通过代理启动, 主要负责start|stop|restart|status


HA层次结构

四、资源的分配

      资源只应该启动在活动节点,但有时候会出现网络分区(partition),此时要作出决策,双方只能有一方代表集群提供服务,通过仲裁(投票节点大于半数的一方),但是如果集群中有决不允许两个节点同时访问的资源时需要做隔离(存储)。一般不用做资源基本的隔离
      隔离有两种方式:stonith,fence
      特殊情况,二个节点集群,找中间件(仲裁盘),两个节点定期写数据 ,偶数集群也可能用到(也可以用仲裁节点,通过ping探测,pingnode)


网络partition.png

提高集群资源方式

      因为资源只能运行才活动节点,所以别的主机正常情况下就处于闲置状态,造成资源浪费
可以做成N-M型 n台服务器 高可用m个服务,最好n>m,当节点出现故障时,解决资源能够运行在哪个节点上有如下两种方式

      资源约束:位置约束(资源对节点的倾向性),排列约束(资源彼此倾向),顺序约束(资源启动先后)
      failover domain:
         fda:node1,node5
         fdb:node2,node5
         fdc:node3,node5

N-M架构图

vote system:

    原则quorum >total/2
        with quorum:拥有法定票数
        without quorum:不拥有法定票数

ps:故障解决,资源是否转回 failback 看实际情况,主要看服务器资源,如果n个节点运行n个服务(可以考虑转回,减轻被转节点压力),如果被转移到的主机为空有大量资源(可以考虑不转回,比较转移那一刻服务不可用)

每个层数的开源软件

    Messaging Layer
      heartbeat
      corosync
      cman

    CLuster Resource Manger(crm):
      heartbeat v1 haresources(配置接口:配置文件)
      heartbeat v2 crm(在每个节点有一个crmd守护进程,命令接口crmsh;GUI:hb_gui)
      hearteat v3,pacemaker(配置接口:crmsh,pcs;GUI:hawk(suse),LCMC,pacemaker-gui)
      rgmanager(配置接口cluster.conf,system-config-cluster,conga,cman_tool,clustat)

    组合方式
      heartbeat v1 (haresources)
      heartbeat v2 (crm)
      corosync+pacemaker
        corosync+pacemaker(plugin contos6)
        corosync + pacemaker(standalone service contos7)
      cman+rgmanager
      corosync v1+cman+pacemaker


    RHCS: Red Hat Cluster Suite
        RHEL5:cman+rgmanager+conga(ricci/luci)(web gui)
        RHEL6:cman+rgmanager+conga(ricci/luci)
            corosync+pacemaker
            corosync+cman+pacemaker
        RHEL7: corosync+pacemaker

    Resource Agent:
        heartbeat legacy:/etc/ha.d/haresources.d/
        LSB:/etc/rc.d/init.d
        OCF:Open Cluster Framework
        STONITH:高可用爆头设备,一般厂商提供
        Systemctl

    资源类型
        primitive:主资源,原始资源,在集群中只能运行一个实例
        clone:克隆资源,在集群中可以运行多个实例,比如stonith资源,三种(匿名克隆,全局唯一,状态克隆)
        multi-state(master/slave):克隆资源的特殊实现,主要是主从
        group:组资源,属性:启动,停止,监视,相关性
        资源属性:
          priority:优先级
          target-role:started,stopped,master;
          is-managed;是否允许集群管理此资源
          resource-stickiness:资源粘性(对当前节点,定义留在当前节点的倾向性)
          allow-migrate:是否允许迁移

    约束:score
      位置约束:资源对节点的倾向性(-oo,+oo)
      排列约束:资源之间的倾向性(-oo,+oo)
      顺序约束:资源对节点的倾向性(-oo,+oo) Mandatory(+oo强制)

感谢

    本文参考https://www.linuxidc.com/Linux/2013-08/88522.htm

相关文章

网友评论

    本文标题:HA Cluster 基础原理详解

    本文链接:https://www.haomeiwen.com/subject/oftvkftx.html