keepalived原理及常用的配置参数

  • ------本文大纲

    简介

    keepalived原理

    keepalived配置文件注解

    ---------------------------------

    一、简介Keepalived:它的诞生最初是为ipvs(一些服务,内核中的一些规则)提供高可用性的,最初最主要目的是能够自主调用ipvsadm来生成规则,并且能够自动实现将用户访问的地址转移到其他节点上进行实现的。Keepalived:核心包含两个ckeckers和VRRP协议。

    ckeckers

    检查服务检查reserved的健康状况的,基于脚本也可检查服务本身的健康状况。这里是实现ipvs后端健康状况的检测的。

    VRRP

    是一种容错协议,它保证当主机的下一跳路由器出现故障时,由另一台路由器来代替出现故障的路由器进行工作,从而保持网络通信的连续性和可靠性。VRRP中每个节点之间都有优先级的一般为0-255(0,255有特殊用法)数字越大优先级越高。

    • keepalived也是模块化设计,不同模块复杂不同的功能,下面是keepalived的组件core check vrrp libipfwc libipvs-2.4 libipvs-2.6

      core

      是keepalived的核心,复杂主进程的启动和维护,全局配置文件的加载解析等

      check

      负责healthchecker(健康检查),包括了各种健康检查方式,以及对应的配置的解析包括LVS的配置解析

      vrrp

      VRRPD子进程,VRRPD子进程就是来实现VRRP协议的

      libipfwc

      iptables(ipchains)库,配置LVS会用到

      libipvs*

      配置LVS会用到

      进程

    • global_defs区域主要是配置故障发生时的通知对象以及机器标识

       

       

      01.global_defs {

      02.notification_email {

      03.[email protected]

      04.[email protected]

      05.[email protected]

      06.}

      07.notification_email_from [email protected]

      08.smtp_server 192.168.200.1

      09.smtp_connect_timeout 30

      10.router_id LVS_DEVEL

      11.}

      notification_email

      故障发生时给谁发邮件通知

      notification_email_from

      通知邮件从哪个地址发出

      smpt_server

      通知邮件的smtp地址

      smtp_connect_timeout

      连接smtp服务器的超时时间

      router_id

      标识本节点的字条串,通常为hostname,但不一定非得是hostname。故障发生时,邮件通知会用到

    • 脚本结果导致的优先级变更:2表示优先级+2;-2则表示优先级-2

      vrrp_instance

      用来定义对外提供服务的VIP区域及其相关属性

       

      state

      可以是MASTER或BACKUP,不过当其他节点keepalived启动时会将priority比较大的节点选举为MASTER,因此该项其实没有实质用途

       

      interface

      节点固有IP(非VIP)的网卡,用来发VRRP包

       

      virtual_router_id

      取值在0-255之间,用来区分多个instance的VRRP组播。

      注意: 同一网段中virtual_router_id的值不能重复,否则会出错。

      priority

      用来选举master的,要成为master,那么这个选项的值最好高于其他机器50个点,该项取值范围是1-255(在此范围之外会被识别成默认值100)

      advert_int

      检查间隔,默认为1秒

      authentication

      这里设置认证

      auth type

      认证方式,可以是PASS或AH两种认证方式

      auth pass认证密码

      track_script

      对vrrp_script定义的脚本进行追踪

      switch

      对那一个区域进行追踪

      notify_master /path/to/to_master.sh

      切换到主状态要发的通知

      notify_backup /path_to/to_backup.sh

      切换到备状态要执行的通知

      notify_fault "/path/fault.sh VG_1"

      故障时要执行的通知(如果路径中有空格,需要加双引号引用)

      注:

      以上三个参数指的脚本要自定义

      virtual_server区域

      01.virtual_server 192.168.200.100 443 {

      02.delay_loop 6

      03.lb_algo rr

      04.lb_kind NAT

      05.nat_mask 255.255.255.0

      06.persistence_timeout 50

      07.protocol TCP

      08.real_server 192.168.201.100 443 {

      09.weight 1

      10.SSL_GET {

      11.url {

      12.path /

      13.digest ff20ad2481f97b1754ef3e12ecd3a9cc

      14.}

      15.url {

      16.path /mrtg/

      17.digest 9b3a0c85a887a256d6939da88aabd8cd

      18.}

      19.connect_timeout 3

      20.nb_get_retry 3

      21.delay_before_retry 3

      22.}

      23.}

      24.}

      virtual_server 192.168.200.100 443

      对外通过ip地址192.168.200.100 提供443端口的服务

      delay_loop

      延迟轮询时间(s)

      lb_algo

      后端指定的调度算法

      lb_kind

      调度模式

      nat_mask

      网络地址

      persistence_timeout

      会话保持时间(秒为单位),用户在50秒内被分配到同一个后端realserver

      protocol TCP

      健康检查用的是TCP还是UDP

       

      real_server <IPADDR> <PORT>

      后端真实节点主机的权重等设置,主要,后端有几台这里就要设置几个

      weight

      每一台realserver的权重

      SSL_GET

      健康检查方式

      url

       

      要坚持的URL,可以有多个

      path

      具体的路径

      digest

      表示用genhash算出的结果

       

      connect_timeout

      超时时长

      nb_get_retry

      重试次数

      delay_before_retry

      下次重试的时间延迟

      在realserver也可自定义服务器状态发生变化后所执行的脚本

      notify_up <STRING> | <QUOTED-STRING>

      检查服务器正常(UP)后,要执行的脚本notify_down <STRING> | <QUOTED-STRING>

      检查服务器失败(down)后,要执行的脚本

      以上则常用到的参数,更多参数及用法请man keepalived.conf

    • vrrp_instance区域

       

      01.vrrp_script  switch {

      02.script "[[ -f /etc/keepalived/down ]] && exit 1 || exit 0"

      03.interval 1

      04.weight 2

      05.}

      06.vrrp_instance VI_1 {

      07.state MASTER

      08.interface eth0

      09.virtual_router_id 51

      10.priority 100

      11.advert_int 1

      12.authentication {

      13.auth_type PASS

      14.auth_pass 1111

      15.}

      16.track_script {

      17.switch

      18.}

      19.virtual_ipaddress {

      20.192.168.200.16

      21.192.168.200.17

      22.192.168.200.18

      23.}

      24.notify_master /path/to/to_master.sh

      25.notify_backup /path_to/to_backup.sh

      26.notify_fault "/path/fault.sh VG_1"

      27.}

      vrrp_script

      定义vrrp_script 区域名称

      script

      所要执行的脚本

      interval

      脚本执行间隔时间

      weight

       

    • keepalived启动后会有三个进程父进程:内存管理,子进程管理等等子进程:VRRP子进程

      子进程:checkers子进程

      wKioL1NkAtXT2YBkAAHdTUCBUMc227.jpg

      两个子进程都被系统WatchDog看管,两个子进程各自复杂自己的事,checkers子进程复杂检查各自服务器的健康程度,例如HTTP,LVS等等,如果checkers子进程检查到MASTER上服务不可用,就会通知本机上的兄弟VRRP子进程,让他删除通告,并且去掉虚拟IP,转换为BACKUP状态

      三、keepkeepalived配置文件介绍

      安装

      1.[root@essun yum.repos.d]# yum install -y keepalived

      只有一个配置文件/etc/keepalived/keepalived.conf,里面主要包括以下几个比较常用的配置区域,分别是global_defs、vrrp_script、vrrp_instance和virtual_server。

    • 相关术语解析

      虚拟路由器

      由一个Master路由器和多个Backup路由器组成。主机将虚拟路由器当作默认网关;

      VRID

      虚拟路由器的标识。有相同VRID的一组路由器构成一个虚拟路由器;

      Master路由器

      虚拟路由器中承担报文转发任务的路由器;

      Backup路由器

      Master路由器出现故障时,能够代替Master路由器工作的路由器;

      虚拟IP 地址

      虚拟路由器的IP 地址。一个虚拟路由器可以拥有一个或多个IP地址;

      IP地址拥有者

      接口IP地址与虚拟IP地址相同的路由器被称为IP地址拥有者;

      虚拟MAC地址

      一个虚拟路由器拥有一个虚拟MAC地址。通常情况下,虚拟路由器回应ARP请求使用的是虚拟MAC地址,只有虚拟路由器做特殊配置的时候,才回应接口的真实MAC地址;

      优先级

      VRRP根据优先级来确定虚拟路由器中每台路由器的地位;

      非抢占方式

      如果Backup路由器工作在非抢占方式下,则只要Master路由器没有出现故障Backup路由器即使随后被配置了更高的优先级也不会成为Master路由器;

      抢占方式

      如果Backup路由器工作在抢占方式下,当它收到VRRP报文后,会将自己的优先级与通告报文中的优先级进行比较。如果自己的优先级比当前的Master路由器的优先级高,就会主动抢占成为Master路由器;否则,将保持Backup状态.

      二、Keepalived原理

      组成模块


    你可能感兴趣的:(keepalived原理及常用的配置参数)