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 11:00
下一篇 2017-10-30 20:00

相关推荐

  • 马哥教育网络班22期+第1周课程练习

    1、描述计算机的组成及其功能。     计算机由五大功能部分组成(冯诺依曼体系):运算器、控制器、储存器、输入设备、输出设备,对应到具体的硬件设备如下:     CPU    :    包含运算器、控…

    Linux干货 2016-08-15
  • 如何修复Ubuntu 12.04上时间不正确的问题

    大家好: 今天跟大家分享下如何修复ubuntu 12.04上时间不正常的问题。 1–首先打date查看系统的时间是否正常 martell@cnux10:~/sistes/sha-mmb-o2o2o$ date  Thu Dec  1 09:15:47 UTC 2016 martell@cnux10:~/sistes/sha-m…

    Linux干货 2016-12-04
  • 网络基础知识

    网络基础知识: 网络设备 TCP/IP协议 ARP协议 网络设备:     HUB集线器: 工作在物理层,没有学习能力,作用在于把各种节点汇聚在以它为中心的节点上,同时也有传输数据的作用,由于没有学习能力,只能以广播的形式将数据发送给与它相连的所有节点。 特点:共享带宽,半双工     &…

    Linux干货 2016-09-02
  • 第二周博客作业

    1.Linux上的文件管理类命令都有那些,其常用的使用方法及其相关示例演示。
    2.Bash的工作特性之命令执行状态返回值和命令行展开所涉及的内容及其示例演示。
    3.请使用命令行展开功能来完成以下的练习。
    4.文件的元数据信息有哪些,分别表示什么含义,如何查看?如何修改文件的时间戳信息。
    5.如何定义一个命令的别名,如何在命令中引用另一个命令的执行结果?
    6.显示/var目录下所有以1开头,以一个小写字母结尾,且中间至少出现一位数字(可以有其他字符)的文件或目录。
    7.显示/etc目录下,以任意一个数字开头,且以非数字结尾的文件或目录。
    8.显示/etc目录下,以非字母开头,后面跟了一个字母以及其他任意长度任意字符的文件或目录。
    9.在/tmp目录下创建以tgile开头,后跟当前日期和时间的文件,文件名形如:tfile-2016-05-27-09-32-22
    10.复制/etc目录下所有以p开头,以非数字结尾的文件或目录到/tmp/mytest1目录中。
    11.复制/etc目录下所有以.d结尾的文件或目录到/tmp/mytest2目录中。
    12.复制/etc目录下所有以l或m或n开头,以.conf结尾的文件至/tmp/mytest3目录中。

    2018-03-22
  • 系统自动化安装和SELinux

    一、知识整理 1、anaconda系统安装程序:默认图形启动; 使用光盘启动,在选择模式界面tab键在后面增加text或按下ESC键,输入lnux text进入字符界面安装。 2、创建kickstart文件: 直接手动编辑:依据模板修改,/root目录下的anaconda.cfg 使用创建工具创建:system-config-kickstart,图形化工具:…

    Linux干货 2016-09-26
  • Linux基础系列(用户,组管理)

       Linux是一个多用户操作系统多任务的分时操作系统,平时的日常使用离不开用户登录以及用户组的管理,熟练管理用户和用户组,会提升我们的工作效率。   Linux用户管理:   Linux包括系统管理员,普通用户。普通用户又分为系统用户和登录用户。系统用户一般不会登陆系统,其shell类型一般为/etc/nologi…

    Linux干货 2016-08-04