HA Cluster—Keepalived

HA Cluster

  • 集群类型:LB(lvs/nginx(http/upstream, stream/upstream))、HA、HP
  • 系统可用性的公式:A=MTBF/(MTBF+MTTR)
    • 系统故障:
      • 硬件故障:设计缺陷、wear out、自然灾害
      • 软件故障:设计缺陷
    • 提升系统高用性的解决方案之降低MTTR:
      • 解决方案:冗余(redundant)
        active/passive(主备),active/active(双主)
    • 在资源级别定义优先级,定义对资源的倾向性
    • Failover:故障切换,即某资源的主节点故障时,将资源转移至其它节点的操作;
    • Failback:故障移回,即某资源的主节点故障后重新修改上线后,将转移至其它节点的资源重新切回的过程;
  • HA Cluster实现方案:
    • vrrp协议的实现
      • keepalived
    • ais:完备HA集群
      • RHCS(cman)
      • heartbeat
      • corosync

keepalived

  • vrrp协议:Virtual Redundant Routing Protocol
    • 术语:
      • 虚拟路由器:Virtual Router:由一个Master路由器和多个Backup路由器组成。主机将虚拟路由器当作默认网关。
      • 虚拟路由器标识:VRID(0-255):有相同VRID的一组物理路由器构成一个虚拟路由器。用来标识路由器
      • 物理路由器:
        master:主设备 #虚拟路由器中承担报文转发任务的路由器。
        backup:备用设备 #master路由器出现故障时,能够代替master路由器工作的路由器。
        priority:优先级 #指的是物理节点的优先级,vrrp根据优先级来确定虚拟路由器中每台路由器的地位。
      • VIP:Virtual IP #虚拟路由器的IP地址。一个虚拟路由器可以拥有一个或多个IP地址。
      • VMAC:Virutal MAC 一个虚拟路由器拥有一个虚拟MAC地址。虚拟MAC地址的格式为(00-00-5e-00-01-VRID)。通常情况下,虚拟路由器回应ARP请求使用的是虚拟MAC地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实MAC地址。
      • 非抢占式:只有对方故障了,才可以抢; #如果Backup路由器工作在非抢占方式下,则只要master路由器没有出现故障,backup路由器即使随后被配置了更高的优先级也不会成为master路由器。
      • 抢占式:只要对方的优先级比自己的低,就抢; #如果backup路由器工作在抢占方式下,当它收到vrrp报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的master路由器的优先级高,就会主动抢占成为master路由器;否则,将保持backup状态。
    • 选举:比较优先级
    • 通告:心跳,优先级等;周期性;
      采用组播方式发送心跳,并且对信息进行认证
    • 认证:
      • 无认证
        简单字符认证
        MD5
    • 工作模式:
      • 主/备:单虚拟路由器;
        主/主:主/备(虚拟路由器1),备/主(虚拟路由器2)
  • keepalived:
    • vrrp协议的软件实现,原生设计的目的为了高可用ipvs服务:
      • 基于vrrp协议完成地址流动;
      • 为ipvs集群节点生成ipvs规则(在配置文件中预先定义);
      • 为ipvs集群的各RS做健康状态检测;基于检测结果完成节点管理;
      • 基于脚本调用接口通过执行脚本完成脚本中定义的功能,进而影响集群事务;
    • 组件:
      • 核心组件:
        vrrp stack
        ipvs wrapper
        checkers
      • 控制组件:
        配置文件分析器
        IO复用器
        内存管理组件
  • HA Cluster的配置前提:
    1. 各节点时间必须同步;
      ntp, chrony
    2. 确保iptables及selinux不会成为阻碍;
    3. 各节点之间可通过主机名互相通信(对keepalived非必须);建议使用/etc/hosts文件实现;
    4. 确保各节点的用于集群服务的接口支持MULTICAST通信;
      D类:224-239;
    5. 各节点之间的root用户可以基于密钥认证的ssh服务完成互相通信;(非必须)
  • keepalived安装配置:
    • 程序环境:
      • 主配置文件:/etc/keepalived/keepalived.conf
      • 主程序文件:/usr/sbin/keepalived
      • Unit File:keepalived.service
      • Unit File的环境配置文件:/etc/sysconfig/keepalived
    • 配置文件组件部分:
      • GLOBAL CONFIGURATION
        • Global definitions
        • Static routes/addresses
      • VRRPD CONFIGURATION
        • VRRP synchronization group(s):vrrp同步组;把两个虚拟路由器定义成一个同步组就能确保这两个必须把vip放在同一个节点上;
          nat服务集群时要求使用此功能;
        • VRRP instance(s):每个vrrp instance即一个vrrp路由器;
        • VRRP脚本
      • LVS CONFIGURATION
        • Virtual server group(s)
        • Virtual server(s):ipvs集群的vs和rs;
    • 配置语法:
      • 配置虚拟路由器:
        vrrp_instance <STRING> {
              ....
          }
        • state MASTER|BACKUP:当前节点在此虚拟路由器上的初始状态;只能有一个是MASTER,余下的都应该为BACKUP;
        • interface IFACE_NAME:绑定为当前虚拟路由器使用的物理接口;
        • virtual_router_id VRID:当前虚拟路由器的惟一标识,范围是0-255;
        • priority 100:当前主机在此虚拟路由器中的优先级;范围1-254;
        • advert_int 1:vrrp通告的时间间隔;主备间通告时间检查的时间间隔,单位为s,默认1s
        • 设置认证
          authentication {
            auth_type AH|PASS
            auth_pass <PASSWORD>
          }
        • 设置VIP即虚拟IP地址
          virtual_ipaddress {            
            <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE> label <LABEL>
            192.168.200.17/24 dev eth1
            192.168.200.18/24 dev eth2 label eth2:1
          }
        • 配置要监控的网络接口,一旦接口出现故障,则转为FAULT状态;
          track_interface {
            eth0
            eth1
            ...
          }
        • nopreempt:定义工作模式为非抢占模式;
        • preempt_delay 300:抢占式模式下,节点上线后触发新选举操作的延迟时长;
        • 定义通知脚本:
          • notify_master |:当前节点成为主节点时触发的脚本;
          • notify_backup |:当前节点转为备节点时触发的脚本;
          • notify_fault |:当前节点转为“失败”状态时触发的脚本;
          • notify |:通用格式的通知触发机制,一个脚本可完成以上三种状态的转换时的通知;
  •   双主模型示例:
! Configuration File for keepalived

  global_defs {
      notification_email {
          root@localhost
      }
      notification_email_from keepalived@localhost
      smtp_server 127.0.0.1
      smtp_connect_timeout 30
      router_id node1
  }

  vrrp_instance VI_1 {
      state MASTER
      interface ens33
      virtual_router_id 51
      priority 100
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 57ff97b2
      }
      virtual_ipaddress {
          192.168.1.80/24
      }
  }

  vrrp_instance VI_2 {
      state BACKUP
      interface ens33
      virtual_router_id 61
      priority 99
      advert_int 1
      authentication {
          auth_type PASS
          auth_pass 2222
      }
      virtual_ipaddress {
          192.168.1.90/24
      }
  }

原创文章,作者:nene,如若转载,请注明出处:http://www.178linux.com/88138

(1)
nenenene
上一篇 2017-10-30
下一篇 2017-10-30

相关推荐

  • find使用详解

    文件查找是根据文件的各种属性去找到相对应的文件。 文件查找分为实时查找和非实时查找。     非实时查找是根据索引来进行查找;虽然非实时查找查询速度快,但在构建索引时相当占用资源,只有在系统空闲时才能进行,这样有可能会造成索引内容与当前系统中文件的状态不一致的情况,所以查找结果有可能会不准确。   …

    Linux干货 2015-03-18
  • 初识shell脚本编程

    shell脚本基础 shell脚本是包含一些命令或声明,并符合一定格式的文本文件 一般格式要求: 1.首行shebang机制 #!/bin/bash #!/bin/python #!/usr/bin/perl 2.注释信息 以#开头,可写明脚本用途,作者,版本,时间等 3.脚本正文内容, 创建shell脚本 以bash为例 第一行定格#!/bin/bash …

    Linux干货 2016-08-15
  • Linux系统程序包的安装–RPM

           我们知道在操作系统上使用的程序都是有程序员通过开发工具得来的,程序员直接编写的纯文本的文件,我们称之为源代码,由于计算机识别的是二进制程序,因此在完成源代码编写之后,就必须要经过编译,使之成为操作系统可以“看得懂”的二进制程序,这里的编译是通过编译器来进行的操作,编译器的功能就是将源代码程序“转换”为二进…

    2017-04-23
  • 文本查找之find组合拳

    find命令不仅能帮助我们在数目众多的文件中快速找到满足条件的文本,我们还能通过find处理动作对查找到的文件进行进一步的处理。 一、find的特点:               遍历查找,因此查找速度略慢   &nbs…

    Linux干货 2016-08-15
  • ACL概述

    ACL概述 一、什么是ACL ACL是linux系统中一种被称为访问控制列表的权限控制方法,它是一种权限分配之外的普遍范式。在一般情况下,要确认三个权限组:owner、group和other。而使用ACL则可以增加权限给其他用户或组别,不再仅仅是在“other”中定义权限,可以允许指定的用户拥有不同于其所属组的权限。 ACL支持多种Linux文件系统,包括e…

    2017-07-29
  • 磁盘配额

        磁盘配额可以限制指定账户能够使用的磁盘空间,这样可以避免因某个用户的过度使用磁盘空间造成其他用户无法正常工作甚至影响系统运行。在服务器管理中此功能非常重要,但对单机用户来说意义不大。 配置配额系统:     综述:     &nbs…

    Linux干货 2016-09-06