keepalived配置手冊(V1.2.24)中文版

創建本文的目的

筆者最近在詳細研究keepalived軟件,發現網上關於這方面的詳細描述較少,需要案例配置參數在新版本中已經失效。keepalived官方網站提供的文檔資料,雖然以案例爲基礎,提供了較爲常用的參數配置,但是筆者發現許多參數並未提及。作爲IT行業的人,似懂非懂只能做一個三流的技術人員,本着刨根問題的精神,創建了該篇文章。


本文以keepalived manual pages英文版爲基礎而創建的,你可以將該文件理解爲manual pages中文。但筆者並不是單純的文字翻譯,對於文中的功能描述,筆者爲驗證其正確性,進行了大量實驗,已確認其描述的正確性。筆者才疏學淺,難免有錯誤的地方,請廣大網友給予批評指正,以便不斷的完善。

注意:文中紅色條目爲筆者暫時不能確認其功能的部分。如果51cto上不顯示其顏色,請前往筆者CSDN博客查看


版本: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 <INTERFACE> <VRRP_INSTANCE> [id <SYNC_ID>] [MAXLEN <LEN>] [port <PORT>]  [ttl <TTL>] [group <IP ADDR>] 

                                                            #該選項沒有詳細的官方文檔說明,根據測試發現,該參數作用於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_NAME> {

     script   <STRING>|<QUOTED-STRING>   #執行腳本的路徑

     interval <INTEGER>    #調用腳本兩次之間的間隔,默認爲1秒

     timeout <INEGER>     #第二次調用腳本後多長時間沒有迴應的超時時間

     weight  <INTEGER:-254..254>   #根據該權重,動態調整調用該腳本選項的vrrp實例優先級,默認是2. 當腳本執行碼爲0,權重大於0時,vrrp實例優先級增加;當腳本執行碼爲非0,權重小於0時,vrrp實例優先級減小,其他情況優先級不變。

                                                       #當該值爲0時,不改變實例的優先級

     rise <INTEGER>    ##設置腳本返回值連續爲0的次數。加入該參數後,當腳本執行碼連續爲0的次數爲rise次,且權重大於0時,vrrp實例優先級增加

     fall  <INTEGER>    ##設置腳本返回值連續爲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 <DECIMAL>   #設置發送gratuitous ARPs時,兩次之間的延時時間。單位秒,分辨率微秒

     gna_interval  <DECIMAL>    #設置兩次unsolicited neighbour advers時間的延時時間。單位秒,分辨率微秒

     interface <STRING>             #用於以上兩個選項的物理接口

     interfaces {                          #用於以上兩個選項的接口列表

         <STRING>

         <STRING>

          ...

     }

}   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 [<VMAC_INTERFACE>]     #指定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 {

          <SCRIPT_NAME>   #增加一個跟蹤腳本到網口上(<SCRIPT_NAME>是vrrp_script條目的名稱)

          <SCRIPT_NAME> weight <-254..254>

     }

     

     #在網卡上,用於綁定vrrpd的默認ip是主ip,如果你想隱藏本地vrrpd,可以使用這個ip作爲多播和單播vrrp報文的源地址(如果是多麼,vrrpd將會接收到數據包,無論使用什麼樣的源IP地址)

     mcast_src_ip <IPADDR>          #指定多播源ip地址

     unicast_src_ip <IPADDR>          #指定單播源ip地址

     version <2 or 3>           #指定運行在這個網卡上的vrrp版本,默認使用的是全局配置的參數“vrrp_version”

     unicast_peer {           #不通過vrrp組播羣組發送vrrp廣播報文。相反,通過單播的方式將廣告發送到一下ip列表中。在某些不支持多播的網絡環境中

         <IPADDR>           #使用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 [<BOOL>]  

     #任意一個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 {

          <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

     }

 

 

    #重VRRP中排出一部分VRRP ip地址

    #

    #對於在同一個網口上具有大量ip(例如有200個)的情況。爲了減少廣告發送的數據包的數量,你可以重廣告中排除一部分ip。

    #ip的添加或刪除均爲vritual_ipaddress中的。如果你希望能夠添加ipv4和ipv6地址的混合,你也可以使用,因爲virtual_ipaddress中所有的地址必須是同一系列。

    virtual_ipaddress_excluded {

         <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE>

         <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPE>

     ...

    }

    #當狀態改變時,增加或刪除route

   virtual_routes {

       #src <IPADDR> [to] <IPADDR>/ <MASK> via|gw <IPADDR> [ or<IPADDR>]  dev <STRING> scope <SCOPE> table <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  <LEVEL>   #範圍爲:0-4

     #通知腳本

     notify_master  <STRING>|<QUOTED-STRING>

     notify_backup <STRING>|<QUOTED-STRING>

     notify_fault <STRING>|<QUOTED-STRING>

     notify_stop <STRING>|<QUOTED-STRING>

     notify <STRING>|<QUOTED-STRING>

     smtp_alert

}   #  end of instance 

#用於SSL_GET check的參數

SSL {

               password <STRING>          #密碼

               ca <STRING>                    #ca文件

               certificate <STRING>          #certificate文件

               key <STRING>                    #key文件

    }

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

LVS CONFIGURATION

     包含子塊:Virtual server group(s)和Virtual server(s)

     子塊包含ipvsadm(8)的參數

Virtual server group(s)

     #可選

     #這個羣組運行一個真實服務器的服務屬於多個虛擬服務,並且只進行一次健康檢查,僅用於大型lvs

 virtual_server_group <STRING> {

          #VIP 端口

          <IPADDR> <PORT>

          <IPADDR> <PORT>

          ...

          #ip地址範圍

          #e.g. 192.168.200.1-10

          <IPADDR RANGE> <PORT> #VIP範圍

          <IPADDR RANGE> <PORT>

          ...

          fwmark <INT>  #fwmark

          fwmark <INT>

  ... }     #end of  virtual_server_group

######## end of  virtual_server_group #########

Virtual server(s)

# 一個virtual_server可以申明一個vip和port(ip和port是成對的)

fwmark<INT>

(virtual server ) group <STRING>

virtual_server IP port  |  virtual_server fwmark int  |  virtual_server group string

     {

     delay_loop <INT>     #延遲輪詢時間

     

     #LVS調度算法

     lb_algo rr|wrr|lc|wlc|lblc|sh|dh

     ops #暫未詳細說明

     lb_kind NAT|DR|TUN     #LVS轉發方法

     

    

     persistence_engine <STRING>           #LVS persistence engine name

     persistence_timeout [<INT>]              #LVS持續會話超時時間,默認6分鐘,單位秒

     persistence_granularity <NETMASK> #LVS顆粒度掩碼

     protocol TCP|UDP|SCTP      #第四層網絡協議

     ha_suspend            #加入虛擬服務的ip沒有設置,則暫停healthchecker 

     lvs_sched                #lb_alog的同義詞

     lvs_methlod            #lb_kind的同義詞

     

     virtualhost <STRING>     #用戶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 <INT> 設置     #指定池中正常提供虛擬服務(VS)所需要的所有活動服務器的總weight的最小權重值。默認是1

     hysteresis <INT>          #延遲係數,與quorum配置使用

     quorum_up <STRING>|<QUOTED-STRING>           #當quorum增長時,設置執行該腳本。eg quorum_up " ip addr add 114.11x.9x.185/32 dev lo 

     quorum_down <STRING>|<QUOTED-STRING>      #quorum減小時,設置執行的腳本

     

     ip_family inet|inet6     #用於fwmark服務的ip系列,可選

     sorry_server <IPADDR> <PORT>   #當時所有的真實服務器down後,增加一個sorry服務器

     sorry_server_inhibit           #將inhibit_on_faulure做用戶指令sorry_server

     #爲每個正式服務器配置說明

     real_server <IPADDR> <PORT>

       {

          weihht <INT>                              #權重,默認:1

          inhibit_on_failure                                        #當時weight爲0時,健康檢查偵測失效

          notify_up <STRING>|<QUOTED-STRING>                #指定服務器up時,執行的腳本

          notify_down <STRING>|<QUOTED-STRING>           #指定服務器down時,執行的腳本

          uthreshold <INTERGER>                 #設置連接到這臺RS的最大連接數

          lthreshlod   <INTERGER>                 #設置這臺RS的最小連接數

          

          #設置健康檢查

          #HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK

          #HTTP SSL healthchecker

          HTTP_GET|SSL_GET

          {

             #一個url用於測試,你可以配置多個條目測試

              url {

                     path <STRING>         #eg path  /,or path /mrtg2/

                     digest <STRING>       #健康檢查需要狀態碼或需要狀態碼和摘要,摘要是通過genhash計算出來的,eg digest 9b3a0c85a887a256d6939da88aabd8cd

                     status_code <INT>    #HTTP標頭中返回的狀態碼,eg status_code 200,默認是任何2xx值

                      }

              nb_get_retry <INT>       #最大重試次數

              delay_befor_retry <INT> #每次重試間隔時間

               

              connect_ip <IP ADDRESS>     #可選,用於連接的ip,默認是realserver的ip

              connect_port <PORT>               #可選,用於連接的端口,默認是realserver的端口

              bindto <IP ADDRESS>               #可選,指定用於發起連接的網口

              bind_port    <PORT>                #可選,用於發起連接的源端口

              connect_timeout <INTEGER>     #可選,指定連接超時時間

              fwmark  <INTEGER>                  #可選,用於fwmark所有外出的檢查包

             

              warmup <INT>  #可選,用於指定隨機延遲開始的初始檢查時間,最大N秒。用於分散到同一個時刻多個到同一臺RS的檢查。

                                        #最大時間爲delay_loop的值,指定爲0時,禁用該功能。

                                        #如果後端有衆的realserver時,如果按精確時間發送檢測報文,可能會造成本機的網絡堵塞,因此使用該參數,指定一個時間,將發送檢測的報文時間時間差

                                        #錯開一點,以免造成本機的堵塞。

          }

     TCP_CHECK

     {

           connect_ip <IP ADDRESS>           #可選,用於連接的ip,默認是realserver的ip

           connect_port <PORT>                #可選,用於連接的端口,默認是realserver的端口

           bindto <IP ADDRESS>                #可選,指定用於發起連接的網口

           bind_port <PORT>                     #可選,用於發起連接的源端口

           connect_timeout <INTEGER>      #可選,指定連接超時時間

           fwmark <INTEGER>                     #可選,用於fwmark所有外出的檢查包         

         

           warmup <INT>  #可選,用於指定隨機延遲開始的初始檢查時間,最大N秒。用於分散到同一個時刻多個到同一臺RS的檢查。

                                     #最大時間爲delay_loop的值,指定爲0時,禁用該功能。

                                        #如果後端有衆的realserver時,如果按精確時間發送檢測報文,可能會造成本機的網絡堵塞,因此使用該參數,指定一個時間,將發送檢測的報文時間時間差

                                            #錯開一點,以免造成本機的堵塞。

           retry <INT>               #檢測到一臺活動服務器失敗,重新檢查的次數。默認:1

           delay_before_retry <INT>     #重新檢查前的延遲時間,默認:1

     }

     SMTP_CHECK

     {

           connect_ip <IP ADDRESS>      #可選,用於連接的ip,默認是realserver的ip

           connect_port <PORT>           #可選,用於連接的端口,默認是25

           bindto <IP ADDRESS>           #可選,指定用於發起連接的網口

           bind_port <PORT>                #可選,用於發起連接的源端口

           connect_timeout <INTEGER>           #可選,指定連接超時時間

           fwmark <INTEGER>                #可選,用於fwmark所有外出的檢查包 

           

          #一個可選的主機接口檢查。如果沒有該指令,這隻檢查realserver的ip地址

          host {     

                connect_ip <IP ADDRESS>      #可選,用於連接的ip,默認是realserver的ip

                connect_port <PORT>           #可選,用於連接的端口,默認是25

                bindto <IP ADDRESS>           #可選,指定用於發起連接的網口

                bind_port <PORT>                     #可選,用於發起連接的源端口

                connect_timeout <INTEGER>     #可選,每個主機的連接超時時間。默認是outer-scope(外部範圍)的超時連接

                fwmark <INTEGER>                #可選,用於fwmark所有外出的檢查包 

                }

       

           retry <INT> #檢測到一臺活動服務器失敗,重新檢查的次數。

           delay_before_retry <INT>                     #重新檢查前的延遲時間

           helo_name <STRING>|<QUOTED-STRING>     #可選,用戶SMTP HELO請求的字符

           warmup <INT>                 #可選,用於指定隨機延遲開始的初始檢查時間,最大N秒。用於分散到同一個時刻多個到同一臺RS的檢查。

                                                    #最大時間爲delay_loop的值,指定爲0時,禁用該功能。

                                                    #如果後端有衆的realserver時,如果按精確時間發送檢測報文,可能會造成本機的網絡堵塞.

                                                          #因此使用該參數,指定一個時間,將發送檢測的報文時間時間差錯開一點,以免造成本機的堵塞。     

      } #end of  SMTP_CHECK

     

     #混合檢查

     MISC_CHECK

     {

      misc_path <STRING>|<QUOTED-STRING>    #外部腳本或程序

      misc_timeout <INT>     #腳本執行超時時間

      warmup <INT>  #可選,用於指定隨機延遲開始的初始檢查時間,最大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

     

     


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章