keepalived配置手册(V1.2.24)中文版详解

创建本文的目的
笔者最近在详细研究keepalived软件,发现网上关于这方面的详细描述较少,需要案例配置参数在新版本中已经失效。keepalived官方网站提供的文档资料,虽然以案例为基础,提供了较为常用的参数配置,但是笔者发现许多参数并未提及。作为IT行业的人,似懂非懂只能做一个三流的技术人员,本着刨根问题的精神,创建了该篇文章。

本文以keepalived manual pages英文版为基础而创建的,你可以将该文件理解为manual pages中文。但笔者并不是单纯的文字翻译,对于文中的功能描述,笔者为验证其正确性,进行了大量实验,已确认其描述的正确性。笔者才疏学浅,难免有错误的地方,请广大网友给予批评指正,以便不断的完善。

注意:文中红色条目为笔者暂时不能确认其功能的部分

版本:keepalived  1.2.24

考拉先生




GLOBAL CONFIGURATION

Global definitions


global_defs
{
     notification_email
     {
         [email protected] 
     }
     notification_email_from [email protected]
     stmp_server 112.3.3.3. 25
     stmp_hole_name   #用于指定发送hole消息的主机,一般是mx记录的主机
     stmp_connect_timeout 30
     router_id my_hostname              #指定一个字符串给keepalived,不一定是主机名,默认为本地主机名
     vrrp_mcast_group4  224.0.0.18  #指定vrrp的多播ipv4地址,默认是224.0.0.18
     vrrp_mcast_group6  ff02::12      #指定vrrp的多播ipv6地址,默认是ff02::12
     default_interface  p33p1.3         # 设置用户static ipaddress的默认网络接口,如果系统没有eth0接口或者想为多个static ipaddress配置不同的接口时,使用该配置将会简化配置。
      lvs_sync_daemon [id ] [MAXLEN ] [port ]  [ttl ] [group
                                                            #该选项没有详细的官方文档说明,根据测试发现,该参数作用于ipvsad的sync daemon选项,lvs_sync的状态根据keepalived的状态一致,当kill掉master keepalived时,backup keepalive的state转变为master状态
     lvs_flush                                           #该功能新增于1.2.23版本。启动keepalived时刷新lvs配置,如果lvs没有配置,这不会刷新
     vrrp_garp_master_delay 10                  #设置当keepalived转变为master后,延迟多少秒发送第二组gratuitous arp。时间单位为秒,默认5秒,0表示不发送第二组gratuitous arp发送。
                                                                #注意第二组发送和第二次发送的区别
     vrrp_garp_master_repeat 1                  #keepalived状态转变为master后,每次发送多少组grntuitous APR 信息的数量,默认为5个
     vrrp_garp_lower_prio_repeat 1             #当master keepalived接收到一个较低优先级的广播后,一次发送gratuitous apr的数量组
     vrrp_garp_master_refresh 60               #master keepalived 每次发送gratuitous arp的最小时间间隔。默认是0,没有
     vrrp_garp_master_refresh_repeat 2      #master keepalived 每次发送gratuitous arp消息的组数量。
     vrrp_garp_interval  0.001                     #小数类型,单位秒,在一个网卡上每组gratuitous arp消息之间的延迟时间,默认为0,一个发送的消息=n组 arp报文
     vrrp_gna_interval    0.000001              #小数类型,单位秒, 在一个网卡上每组na消息之间的延迟时间,默认为0
      vrrp_lower_prio_no_advert                  #如果接收到一个低优先级的通告,只需要丢弃它,不用发送其他通告,字符类型:布尔值,false/true
     vrrp_version <2 or 3>                         #设置vrrp协议版本,默认是版本2
      vrrp_iptables                                        #该配置添加于1.2.21版本,添加vrrp_iptables全局配置选项。 iptables / ip6tables条目始终添加在INPUT链的末尾,但对于许多配置,这在处理中太晚了。 此修补程序允许指定要添加规则的链名称,              
                                                                 #并且还允许添加指定无规则的选项。 如果指定了链名称,则该链必须已经存在于iptables和/或ip6tables配置中,并且该链将从ip(6)表配置中的适当点调用。
                                                                 #默认是入站过滤
      vrrp_iptables keepalived_in keepalived_out          #或用于出站过滤。注意,出站过滤将不适用于IPv4,因为可以选择VIP作为出站连接的源地址。 对于IPv6,由于地址已过时,因此不太可能
      vrrp_iptables                                                     #不添加任何iptables规则
      vrrp_ipset [keepalived [keepalived_if [keepalived6 [keepalived_if6]]]]               #Keepalived可以选择将ipset与iptables结合使用。 如果是这样,则可以指定ipset名称,默认如下。如果没有指定名称,则不使用ipsets,否则将通过向先前指定的名称添加“_if”和/
                                                                                                                          #或“6”来构造任何省略的名称。ipset是iptables的扩展,它允许你创建匹配整个地址sets(地址集合)的规则。
     
     vrrp_check_unicast_src                        #该选项允许在unicast模式中,检查vrrp包的源ip地址是否是unicast peers中的一个
     vrrp_skip_check_adv_addr                    #检查vrrp报文中的所有地址比较耗时,设置此标志的意思是如果接收的到报文和上一个报文来至同一个路由器,则不执行检查。默认是跳过检查
     vrrp_strict                                             #严格遵守vrrp协议,下面这些功能将会禁止:1.   0 VIP   2. unicast(单播) peers    3. vrrp 版本2的ipv6功能
     

     #当vrrp或checker进程超时时,可以使用下面4个选项。这可以是备vrrp实例变为主vrrp状态。有时由于主或备系统太过繁忙,导致无法处理vrrp数据包,但这个时候主系统依然还在运行。 这时就需要使用下列四个选项来处理该问题。
     vrrp_priority <-20 to 19>                    #设置vrrp子进程优先级
     checker_priority <-20 to 19 >               #设置checker子进程优先级
     vrrp_no_swap                                        #设置vrrp子进程不可交换
     checker_no_swap                                   #设置checker子进程不可交换

      #keepalived已经构建了对SNMP的支持,keepalived,checker和RFC支持可以单独启用/禁用
     snmp_sockert udp:1.2.3.4:705           #用户指定连接到SNMP主代理的套接字(默认 unix:/var/agentx/master),除非使用的是网络空间名称,默认为udp:localhost:705
     enable_snmp_keepalived                    #enable keepalived MIB的vrrp元素的SNMP处理功能
     enable_snmp_checker                         #enable keepalived MIB的checker元素的SNMP处理功能
     enable_snmp_rfc                                  #enable RFC2787和RFC6527处理功能
     enable_snmp_rfcv2                              #enable RFC2787 vrrp MIB的处理功能
     enable_snmp_rfcv3                              #enable RFC6527 vrrp  MIB的处理功能
     enable_traps                                        #enable SNMP traps功能
}
     
net_namespace NAME                      #设置要运行的网络命名空间,/var/run/keepalived目录将被创建为非共享挂载点,例如pid文件.syslog条目将_NAME附加到ident。注意,不能在重新加载配置是更改命名空间
                                                          # 在Linux协议栈中引入网络命名空间,是为了支持网络协议栈的多个实例,而这些协议栈的隔离就是由命名空间来实现的(有点像进程的线性地址空间,协议栈不能访问其他协议栈的私有数据)。
                                                          #需要纳入命名空间的元素包括进程,套接字,网络设备。进程创建的套接字必须属于某个命名空间,套接字的操作也必须在命名空间内进行,网络设备也必须属于某个命名空间,但可能会改变,因为网络设备属于公共资源
instance NAME                                  #如果有多个keepalived实例运作在同一个命名空间,将会创建一个pid文件,将NAME作为文件名的一部分,在/var/run/keepalived。 注意:配置重启时无法更改实例名称
use_pid_dir                                         #在/var/run/keepalived中创建pid文件
linkbeat_user_poling                           #轮询以件车媒体链路故障,否则尝试使用ETHTOOL或MII接口



##Static routes/address/rules
#keepalived可以配置静态地址,路由和跪着,这些地址不会被vrrpd移除,他们留在服务器上。如果你的机器上已经有ip和路由,并且你的计算机可以相互ping通对方,则可以不需要这个部分。路由和规则的语法和 ip rule add /ip route add 相同。
#虚拟地址和虚拟路由的语法相同,如果没有指定dev元素,默认的接口为eth0
static_ipaddress
{
     192.168.1.1/24 dev eth0  scope  global                 ##指定192.168.1.1/24在eth0,范围为全局地址
     ......
}

static_routes
{
     192.168.2.0/24 via 192.168.1.100 dev eth0
     192.168.100.0/24 table 6909 nexthop     via 192.168.101.1 dev wlan0 onlink weight 1 nexthop via 192.168.101.2 dev wlan0 onlink weight 2
     192.168.200.0/24    dev p33p1.2 table 6909 tos 0x04 protocol bird scope link priority 12 mtu 1000 hoplimit 100 advmss 101 rtt 102 rttvar 103 reordering 104 window 105 cwnd
     106 ssthresh lock 107 realms PQA/0x14 rto_min 108 initcwnd 109 initrwnd 110 features ecn
     2001:470:69e9:1:2::4 dev p33p1.2 table 6909 tos 0x04 protocol bird scope link priority 12 mtu 100 hoplimit 100advmss 101 rtt 102 rttvar 103 reordering 104 window 105  cwnd           106 ssthresh
     lock 107 rto_min 108 initcwnd 109 initrwnd 110 features ecn
     ...
}

static_rules
{
     from 192.168.2.0/24 table 1
     to 192.168.2.0/24 table 1
     from 192.168.28.0/24 to 192.168.29.0/26 table small iff p33p1 oif wlan0 tos 22 fwmark 24/12 preference 39 realms 30/20 goto 40
     to 1:2:3:4:5:6:7:0/112 from 7:6:5:4:3:2::/96 table 6908
     ...
}


##VRRPD CONFIGURATION
     该选项包含4个子块: subblocks of VRRP script(s), VRRP synchronization group(s), VRRP gratuitous ARP and unsolicited neighbour advert delay group(s) and VRRP instance(s)

##VRRP script(s)
#添加一个用于定期指定的脚本,它的退出码将被所有的VRRP instance记录,它以非0的权重监视
vrrp_script {
     script   |   #执行脚本的路径
     interval    #调用脚本两次之间的间隔,默认为1秒
     timeout     #第二次调用脚本后多长时间没有回应的超时时间
     weight     #根据该权重,动态调整调用该脚本选项的vrrp实例优先级,默认是2. 当脚本执行码为0,权重大于0时,vrrp实例优先级增加;当脚本执行码为非0,权重小于0时,vrrp实例优先级减小,其他情况优先级不变。
                                                       #当该值为0时,不改变实例的优先级
     rise    ##设置脚本返回值连续为0的次数。加入该参数后,当脚本执行码连续为0的次数为rise次,且权重大于0时,vrrp实例优先级增加
     fall      ##设置脚本返回值连续为0的次数。加入该参数后,当脚本执行码连续为非0的次数为rfall次,且权重小于0时,vrrp实例优先级增加
}


##VRRP synchronization group(s)
 #字符串类型,共同故障转移的ip群组的名称
vrrp_sync_group VG_1 {
     group {
     inside_network      #每个vrrp_instance 的名称
     ouside_network      #每个vrrp_instance 的名称  暂没有查询到相关的详细文档,关于这两个选项的用户,网上的解释各有差异,在lvs的DR和NAT模式中,可能用法各不相同,后期验证
     }

     ##指定选项中带有参数是,需用引号,如“ notify_master /path/to_master.sh   master”
     notify_master /path/to_master.sh   #转换成master时,执行的脚本,网上的一种用法是,执行一个邮件发送脚本
     notify_backup /path/to_backup.sh   ##转换成backup时,执行的脚本,网上的一种用法是,执行一个邮件发送脚本
     notify_fault  /path/to_fault.sh    ##转换成fault状态是,执行的脚本,网上的一种用法是,执行一个邮件发送脚本
     

     #该一下几个选项,用户任何状态的转换。"notify“脚本在notify_* 之后调用,并使用keepalived提供的3个参数执行(所有notify中没有指定参数),如果使用下面选项,建议停用上面选项
     #$1        #"GROUP|INSTANCE",参数为GROUP或INSTANCE
     #$2        #指定GROUP或INSTANCE的名称
     #$3        #“MASTER"|"BACKUP"|"FAULT",指定转换的状态
     notify /path/notify.sh

     smtp_alter    #当状态发生变化后,发送通知邮件,使用配置文件上面”global_defs“定义的邮件地址
     
      global_tracking   #所有的VRRP共享相同的跟踪配置

}     #end of vrrp_sync_group VG_1


VRRP grantuitous ARP and unsolicited neighbour advert delay group(s)
#指定VRRP grantuitous ARP 和 unsolicited neighbour advert设置,这是用于当上游的角环境无法处理大量的ARPS/NAS流。
#当限制适用的接口为物理接口时,使用“interface”;当限制适用的接口为一组接口时,使用“interfaces”。
#如果已经设置了vrrp_grap_interval/vrrp_gna_interval,且在garp_group中没有指定的接口,将使用全局配置参数

garp_group {
     garp_interval   #设置发送gratuitous ARPs时,两次之间的延时时间。单位秒,分辨率微秒
     gna_interval      #设置两次unsolicited neighbour advers时间的延时时间。单位秒,分辨率微秒
     interface             #用于以上两个选项的物理接口
     interfaces {                          #用于以上两个选项的接口列表
         
        
          ...
     }
}   end of garp_group


VRRP instance(s)
#描述vrrp_sync_group中每个实例组的可移动ip。这里描述了两个ip(inside_network outsid和outside_network),在机器“my_host_name”,它们属于同一个组VG_1,并且在任何情况下都会一起转换状态。
#你将需要为“outside_network”写入另一个块中

vrrp_instance inside_network {
     state MASTER                #初始状态,MASTER|BACKUP ,一旦有其他机器加入,将会举行选举,具有最高优先级的机器将会成为MASTER,所以这个条目的并不重要
     interface eth0                #指定该实例用户vrrp的网卡,用于发送vrrp
     user_vmac []     #指定VRRP虚拟mac地址
     vmac_xmit_base          #从基本接口发送和接受vrrp消息,而不是VMAC接口
     native_ipv6                    #强制instance使用ipv6(当混合ipv4和ipv6的配置)
     dont_track_primary     #忽略VRRP接口错误
     track_interface {               #可选项,以下网卡中如果任意个网卡不通,所有的网卡都会进入FAULT状态
          eth0
          eth1
          eth2 weight <-254..254>
          ...
     }

     track_script {
            #增加一个跟踪脚本到网口上(是vrrp_script条目的名称)
          weight <-254..254>
     }
     
     #在网卡上,用于绑定vrrpd的默认ip是主ip,如果你想隐藏本地vrrpd,可以使用这个ip作为多播和单播vrrp报文的源地址(如果是多么,vrrpd将会接收到数据包,无论使用什么样的源IP地址)
     mcast_src_ip          #指定多播源ip地址
     unicast_src_ip          #指定单播源ip地址
     version <2 or 3>           #指定运行在这个网卡上的vrrp版本,默认使用的是全局配置的参数“vrrp_version”

     unicast_peer {           #不通过vrrp组播群组发送vrrp广播报文。相反,通过单播的方式将广告发送到一下ip列表中。在某些不支持多播的网络环境中
                    #使用VRRP  FSM(Finite State Machine有限状态机)和功能也是不错的。
          ...                         #指定的ip可以是IPV4 和IPV6
     }

     #指定网卡口设置,和全局参数一样,默认使用的是全局参数 
     garp_master_delay     10
     garp_master_repeat     1
     garp_lower_prio_delay     10
     garp_lower_prio_repeat     1
     garp_master_refresh     10
     garp_master_refresh_repeat     2
     garp_interval     100
     gna_interval      100

     lower_prio_no_advert []  

     #任意一个0-255之间的数字
     #用户区分运行在相同NIC(和相同套接字)上的vrrpd的多个实例
     virtual_router_id 51
     
     advert_int 1          #VRRP广告的时间间隔(e.g. 0.92)(使用默认值)
    
     #注意:2004年,RFC3768C从VRRPv2规范中删除了认证。使用此选项是不合规的,可能会导致一些问题。如果可能,尽量避免使用,除非使用单播是,他可能会有帮助。
     authentication {     #认证块
          #PASS|AH
          #PASS-Simple password(建议)
          #AH-IPSEC(不推荐)
          auth_type PASS
          auth_pass 12345668     #用户访问vrrpd的密码,在所有的机器上应该是相同的。只会使用前8个字符。
     }


     #指定状态在MASTER与BACKUP之间切换时,添加或删除的ip地址。其他与之有相同条目配置的机器,将会发送想法的状态转换。
     virtual_ipaddress {
          / brd dev scope label
          192.168.200.17/24 dev eth1
          192.168.200.18/24 dev eth2    label eth2:1
     }
 
 
    #重VRRP中排出一部分VRRP ip地址
    #
    #对于在同一个网口上具有大量ip(例如有200个)的情况。为了减少广告发送的数据包的数量,你可以重广告中排除一部分ip。
    #ip的添加或删除均为vritual_ipaddress中的。如果你希望能够添加ipv4和ipv6地址的混合,你也可以使用,因为virtual_ipaddress中所有的地址必须是同一系列。
    virtual_ipaddress_excluded {
         / brd dev scope
         / brd dev scope
     ...
    }

    #当状态改变时,增加或删除route

   virtual_routes {
       #src [to] / via|gw [ or<IPADDR>]  dev scope table
       src 192.168.100.1  to   192.168.109.0/24   via  192.168.200.254 dev eth1
       192.168.100.0/24 via 192.168.200.254 dev eth1
       192.168.111.0/24  dev   eth2
       192.168.112.0/24   via 192.168.100.254
       192.168.113.0/24   via  192.168.200.254 or  192.168.100.254 dev eth1
       blackole 192.168.114.0/24
       0.0.0./0 gw 192.168.0.1 table 100 #设置默认网关为表100
       }
      
   virtual_rules {     #vrrpd状态发生变化是,添加或删除rules
       from 192.168.2.0/24 table 1
       to 192.168.2.0/24 table 1 
     }
     
    accept           #允许非master所有者处理发送给VIP的数据包
    nopreempt    #当一台高优先级的机器出现后,vrrp通常会抢占低优先级的机器。“nopreempt”允许较低优先级的机器继续维持“master”角色,甚至当一台
                      #高优先级的机器恢复在线状态。注意:为了这个工作,这个初始化的条目必须为backup。
    preempt        #向后兼容

    skip_check_adv_addr [no|off|true|false|yes|no]     #当该选项中没有指定任何参数是,默认为on。没有指定该条目是,默认使用全局条目vrrp_skep_check_adv_addr.
                                                                             #详情查看   vrrp_skep_check_adv_addr
    strict_mode [on|off|true|false|yes|no]                    #如果该条目没有指定参数,默认为on

     #启动keepalive后或者发现了一个低优先级的master后,多少秒开始抢占
     #这里需禁用”nopreempt“功能,该选项才能生效
     #范围为:0-3000秒,默认0
     #注意:为使该选项工作,初始状态必须是BACKUP
     preempt_delay 300 #单位秒

    #调式等级,还没有实现,建议不使用该选项
    debug     #范围为:0-4

     #通知脚本
     notify_master  |
     notify_backup |
     notify_fault |
     notify_stop |
     notify |
     smtp_alert

}   #  end of instance 


#用于SSL_GET check的参数
SSL {
               password          #密码
               ca                    #ca文件
               certificate          #certificate文件
               key                    #key文件
    }

#########  end of instance  ##########


LVS CONFIGURATION
     包含子块:Virtual server group(s)和Virtual server(s)
     子块包含ipvsadm(8)的参数

Virtual server group(s)
     #可选
     #这个群组运行一个真实服务器的服务属于多个虚拟服务,并且只进行一次健康检查,仅用于大型lvs

 virtual_server_group {
          #VIP 端口
         
         
          ...

          #ip地址范围
          #e.g. 192.168.200.1-10
          #VIP范围
         
          ...
          fwmark  #fwmark
          fwmark
  ... }     #end of  virtual_server_group
######## end of  virtual_server_group #########

Virtual server(s)
# 一个virtual_server可以申明一个vip和port(ip和port是成对的)

fwmark
(virtual server ) group
virtual_server IP port  |  virtual_server fwmark int  |  virtual_server group string
     {
      delay_loop     #延迟轮询时间
     
     #LVS调度算法
     lb_algo rr|wrr|lc|wlc|lblc|sh|dh
      ops #暂未详细说明
     lb_kind NAT|DR|TUN     #LVS转发方法
     
    
     persistence_engine           #LVS persistence engine name
     persistence_timeout []              #LVS持续会话超时时间,默认6分钟,单位秒
     persistence_granularity #LVS颗粒度掩码
     protocol TCP|UDP|SCTP      #第四层网络协议
     ha_suspend            #加入虚拟服务的ip没有设置,则暂停healthchecker 
     lvs_sched                #lb_alog的同义词
     lvs_methlod            #lb_kind的同义词
     

     virtualhost     #用户HTTP_GET或SSL_GET的虚拟主机字符串,eg virtualhost www.firewall.loc
     alpha            #在启动daemon时,默认所有的RS是down状态,healthcheck健康检查failed。这有助于其启动时误报错误,默认情况下禁用alpha模式     
      omega          #开启omega模式,清除rs时会执行相应的脚本(rs的notify_up,quorum_up),默认为禁用模式     
     quorum 设置     #指定池中正常提供虚拟服务(VS)所需要的所有活动服务器的总weight的最小权重值。默认是1
      hysteresis          #延迟系数,与quorum配置使用
     quorum_up |           #当quorum增长时,设置执行该脚本。eg quorum_up " ip addr add 114.11x.9x.185/32 dev lo 
     quorum_down |      #quorum减小时,设置执行的脚本

     
      ip_family inet|inet6     #用于fwmark服务的ip系列,可选
     sorry_server   #当时所有的真实服务器down后,增加一个sorry服务器
     sorry_server_inhibit           #将inhibit_on_faulure做用户指令sorry_server

     #为每个正式服务器配置说明
     real_server
       {
          weihht                              #权重,默认:1
          inhibit_on_failure                                        #当时weight为0时,健康检查侦测失效
          notify_up |                #指定服务器up时,执行的脚本
          notify_down |           #指定服务器down时,执行的脚本
          uthreshold                 #设置连接到这台RS的最大连接数
          lthreshlod                   #设置这台RS的最小连接数
          
          #设置健康检查
          #HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

          #HTTP SSL healthchecker
          HTTP_GET|SSL_GET
          {
             #一个url用于测试,你可以配置多个条目测试
              url {
                     path         #eg path  /,or path /mrtg2/
                     digest       #健康检查需要状态码或需要状态码和摘要,摘要是通过genhash计算出来的,eg digest 9b3a0c85a887a256d6939da88aabd8cd
                     status_code    #HTTP标头中返回的状态码,eg status_code 200,默认是任何2xx值
                      }
              nb_get_retry       #最大重试次数
              delay_befor_retry #每次重试间隔时间
               
              connect_ip     #可选,用于连接的ip,默认是realserver的ip
              connect_port               #可选,用于连接的端口,默认是realserver的端口
              bindto               #可选,指定用于发起连接的网口
              bind_port                    #可选,用于发起连接的源端口
              connect_timeout     #可选,指定连接超时时间
              fwmark                    #可选,用于fwmark所有外出的检查包
             
              warmup  #可选,用于指定随机延迟开始的初始检查时间,最大N秒。用于分散到同一个时刻多个到同一台RS的检查。
                                        #最大时间为delay_loop的值,指定为0时,禁用该功能。
                                        #如果后端有众的realserver时,如果按精确时间发送检测报文,可能会造成本机的网络堵塞,因此使用该参数,指定一个时间,将发送检测的报文时间时间差
                                        #错开一点,以免造成本机的堵塞。
          }

     TCP_CHECK
     {
           connect_ip           #可选,用于连接的ip,默认是realserver的ip
           connect_port                #可选,用于连接的端口,默认是realserver的端口
           bindto                #可选,指定用于发起连接的网口
           bind_port                     #可选,用于发起连接的源端口
           connect_timeout      #可选,指定连接超时时间
           fwmark                     #可选,用于fwmark所有外出的检查包         
         
           warmup  #可选,用于指定随机延迟开始的初始检查时间,最大N秒。用于分散到同一个时刻多个到同一台RS的检查。
                                     #最大时间为delay_loop的值,指定为0时,禁用该功能。
                                        #如果后端有众的realserver时,如果按精确时间发送检测报文,可能会造成本机的网络堵塞,因此使用该参数,指定一个时间,将发送检测的报文时间时间差
                                            #错开一点,以免造成本机的堵塞。
           retry               #检测到一台活动服务器失败,重新检查的次数。默认:1
           delay_before_retry     #重新检查前的延迟时间,默认:1
     }

     SMTP_CHECK
     {
           connect_ip      #可选,用于连接的ip,默认是realserver的ip
           connect_port           #可选,用于连接的端口,默认是25
           bindto           #可选,指定用于发起连接的网口
           bind_port                #可选,用于发起连接的源端口
           connect_timeout           #可选,指定连接超时时间
           fwmark                #可选,用于fwmark所有外出的检查包 
           
          #一个可选的主机接口检查。如果没有该指令,这只检查realserver的ip地址
          host {     
                connect_ip       #可选,用于连接的ip,默认是realserver的ip
                connect_port           #可选,用于连接的端口,默认是25
                bindto           #可选,指定用于发起连接的网口
                bind_port                     #可选,用于发起连接的源端口
                connect_timeout     #可选,每个主机的连接超时时间。默认是outer-scope(外部范围)的超时连接
                fwmark                #可选,用于fwmark所有外出的检查包 
                }
       
           retry #检测到一台活动服务器失败,重新检查的次数。
           delay_before_retry                     #重新检查前的延迟时间
           helo_name |     #可选,用户SMTP HELO请求的字符
           warmup                 #可选,用于指定随机延迟开始的初始检查时间,最大N秒。用于分散到同一个时刻多个到同一台RS的检查。
                                                    #最大时间为delay_loop的值,指定为0时,禁用该功能。
                                                    #如果后端有众的realserver时,如果按精确时间发送检测报文,可能会造成本机的网络堵塞.
                                                          #因此使用该参数,指定一个时间,将发送检测的报文时间时间差错开一点,以免造成本机的堵塞。     
      } #end of  SMTP_CHECK


     
     #混合检查
     MISC_CHECK
     {
      misc_path |    #外部脚本或程序
      misc_timeout     #脚本执行超时时间
      warmup  #可选,用于指定随机延迟开始的初始检查时间,最大N秒。用于分散到同一个时刻多个到同一台RS的检查。
                                 #最大时间为delay_loop的值,指定为0时,禁用该功能。
                                 #如果后端有众的realserver时,如果按精确时间发送检测报文,可能会造成本机的网络堵塞,因此使用该参数,指定一个时间,将发送检测的报文时间时间差
                                #错开一点,以免造成本机的堵塞。     
      misc_dynamic     #如果设置,使用来是healthchecker的推出发动态调整权重如下:
                               #exit status 0:svc检查成功,权重不变
                               #exit status 1:svc检查失败
                               #exit status 2-255:svc检查成功,权重更改为退出状态码减去2.(eg:退出状态码为255,权重为255-2=253)
    
     }
  } # end of  realserver
} #end of virtual

     
     






你可能感兴趣的:(linux)