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

相关推荐

  • 七.Linux博客-2016年8月4日cat、cut、less、head、tail、wc、sort、uniq、grep

    格式说明: 操作 概念 命令 说明及举例 七.cat、cut、less、head、tail、wc、sort、uniq、grep cat cat -A a.txt 查看隐藏内容 cat -n a.txt 显示行号 cat -s a.txt 压缩空行,把多行空行压缩为一行 …

    Linux干货 2016-08-24
  • Nginx及其相关配置详解(二)

    与套接字相关的配置: 1、server { … }  #配置一个虚拟主机;         Default:—         Context:http server { # 配…

    2017-07-14
  • 磁盘管理

    磁盘管理     设备文件         I/O Ports: I/O设备地址         一切皆文件:     …

    Linux干货 2016-09-01
  • 管道:管道符;cat和more命令 重定向:文件标识符:I/O重定向符号及其用法;exec命令;代码块重定向 命令行处理:命令行处理流程;eval命令 管道: 管道是Linux编程中最常用的技术之一,Shell编程中竖杠符号:“|” command1 | command2 | command3 | … |commandn command1到commandn表…

    Linux干货 2016-08-05
  • Linux磁盘及文件系统管理

    Linux磁盘及文件系统管理 创建文件系统      mkfs.ext#     .xfs mke2fs 功能比mkfs强大的多 检测及修复     fsck      …

    Linux干货 2016-08-30
  • linux用户和组的配置文件

    1./etc/passwd:用户及其属性信息(用户名,密码,uid,gid,gecos注释性描述信息,家目录,登录shell)在/etc/passwd文件中每个用户都有一个对应的记录行,它记录了这个用户的一些基本属性。系统管理员经常会接触到这个文件的修改以完成对用户的管理工作。这个文件对所有用户都是可读的。      …

    2017-07-22