Keepalived配置文件詳解

Keepalived的全局配置詳解

Keepalived的配置文件都是以塊(block)的形式組織的,每個塊的內容都包含在{}中,以“#”和“!”開頭的行都是註釋。全局配置就是對整個Keepalived都生效的配置

! Configuration File for keepalived

global_defs {

   notification_email {

     [email protected]

     [email protected]

   }

   notification_email_from Keepalived@localhost

   smtp_server 192.168.1.100

   smtp_connect_timeout 30

   router_id LVS_DEVEL

}

notification_email用於設置報警郵件地址,可以設置多個,每行一個。注意,如果要開啓郵件報警,需要開啓本機的Sendmail服務。

notification_email_from用於設置郵件的發送地址。

smtp_server用於設置郵件的smtp server地址。

smtp_connect_timeout用於設置連接smtp server的超時時間。

router_id表示運行Keepalived服務器的一個標識,是發郵件時顯示在郵件主題中的信息。

Keepalived的VRRPD配置詳解

VRRPD配置又可分爲VRRP同步組配置和VRRP實例配置。

下面是兩個同步組的配置樣例:

vrrp_sync_group G1 {

  group {

    VI_1

    VI_2

    VI_5

  }

  notify_backup "/usr/local/bin/vrrp.back arg1 arg2"

  notify_master "/usr/local/bin/vrrp.mast arg1 arg2"

  notify_fault "/usr/local/bin/vrrp.fault arg1 arg2"

}

vrrp_sync_group G2 {

  group {

    VI_3

    VI_4

  }

}

notify_master:指定當Keepalived進入Master狀態時要執行的腳本,這個腳本可以是一個狀態報警腳本,也可以是一個服務管理腳本。Keepalived允許腳本傳入參數,因此靈活性很強。

notify_backup:指定當Keepalived進入Backup狀態時要執行的腳本,同理,這個腳本可以是一個狀態報警腳本,也可以是一個服務管理腳本。

notify_fault:指定當Keepalived進入Fault狀態時要執行的腳本,腳本功能與前兩個類似。

notify_stop:指定當Keepalived程序終止時需要執行的腳本。

VRRP實例的配置

vrrp_instance VI_1 {

    state MASTER

    interface eth0

    virtual_router_id 51

    priority 100

    advert_int 1

    mcast_src_ip <IPADDR>

    garp_master_delay  10

track_interface {

eth0

eth1

}

    authentication {

        auth_type PASS

        auth_pass 1111

    }

    virtual_ipaddress {

     #<IPADDR>/<MASK>  brd  <IPADDR>  dev <STRING>  scope <SCOPT>  label <LABEL>

        192.168.200.16

        192.168.200.17 dev eth1

        192.168.200.18 dev eth2

    }

    virtual_routes {

#src  <IPADDR>  [to] <IPADDR>/<MASK>  via|gw  <IPADDR>  dev <STRING>  scope <SCOPE>

        src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1

        192.168.110.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.100.252 or 192.168.100.253

}

nopreempt

preemtp_delay  300

}

vrrp_instance是VRRP實例開始的標識,後跟VRRP實例名稱。

state用於指定Keepalived的角色,MASTER表示此主機是主服務器,BACKUP表示此主機是備用服務器。

interface用於指定HA監測網絡的接口。

virtual_router_id是虛擬路由標識,這個標識是一個數字,同一個vrrp實例使用唯一的標識,即在同一個vrrp_instance下,MASTER和BACKUP必須是一致的。

priority用於定義節點優先級,數字越大表示節點的優先級就越高。在一個vrrp_instance下,MASTER的優先級必須大於BACKUP的優先級。

advert_int用於設定MASTER與BACKUP主機之間同步檢查的時間間隔,單位是秒。

mcast_src_ip用於設置發送多播包的地址,如果不設置,將使用綁定的網卡所對應的IP地址。

garp_master_delay用於設定在切換到Master狀態後延時進行Gratuitous arp請求的時間。

track_interface用於設置一些額外的網絡監控接口,其中任何一個網絡接口出現故障,Keepalived都會進入FAULT狀態。

authentication用於設定節點間通信驗證類型和密碼,驗證類型主要有PASS和AH兩種,在一個vrrp_instance下,MASTER與BACKUP必須使用相同的密碼才能正常通信。

virtual_ipaddress用於設置虛擬IP地址(VIP),又叫做漂移IP地址。可以設置多個虛擬IP地址,每行一個。可以寫成 “192.168.16.189/24 dev eth1” 這樣的形式

virtual_routes和virtual_ipaddress段一樣,用來設置在切換時添加或刪除相關路由信息。通過“ip route”命令可以查看路由信息是否添加成功,也可以通過notify_master選項來代替virtual_routes實現相同的功能。

nopreempt設置的是高可用集羣中的不搶佔功能。在使用不搶佔時,只能在“state”狀態爲“BACKUP”的節點上設置,而且這個節點的優先級必須高於其他節點。

preemtp_delay用於設置搶佔的延時時間,單位是秒。

vrrp_script check_mysqld  
{    
     script "killall -0 mysqld"    
     interval 2    
}    
track_script    
{    
     check_mysqld    
}

script "killall -0 mysqld"用於檢測mysqld服務是否正常啓動,0代表正常、1代表異常

interval 2用於設置檢查的時間間隔

check_mysqld返回檢查的值


Keepalived的LVS配置詳解

LVS段的配置以“virtual_server”作爲開始標識,此段內容有兩部分組成,分別是real_server段和健康檢測段。下面是virtual_server段常用選項的一個配置示例:

virtual_server 192.168.12.200 80 {      

    delay_loop 6

lb_algo rr

lb_kind DR

persistence_timeout 50

    persistence_granularity  <NETMASK>

protocol TCP

ha_suspend

virtualhost  <string>

sorry_server <IPADDR>  <PORT>

virtual_server:設置虛擬服務器的開始,後面跟虛擬IP地址和服務端口,IP與端口之間用空格隔開。

delay_loop:設置健康檢查的時間間隔,單位是秒。

lb_algo:設置負載調度算法,可用的調度算法有rr、wrr、lc、wlc、lblc、sh、dh等,常用的算法有rr和wlc。

lb_kind:設置LVS實現負載均衡的機制,有NAT、TUN和DR三個模式可選。

persistence_timeout:會話保持時間,單位是秒。

persistence_granularity:此選項是配合persistence_timeout的,後面跟的值是子網掩碼,表示持久連接的粒度。默認是255.255.255.255,也就是一個單獨的客戶端IP。如果將掩碼修改爲255.255.255.0,那麼客戶端IP所在的整個網段的請求都會分配到同一個real server上。

protocol:指定轉發協議類型,有TCP和UDP兩種可選。

ha_suspend:節點狀態從Master到Backup切換時,暫不啓用real server節點的健康檢查。

virtualhost:在通過HTTP_GET/ SSL_GET做健康檢測時,指定的Web服務器的虛擬主機地址。

sorry_server:相當於一個備用節點,在所有real server失效後,這個備用節點會啓用。

real_server段的一個配置示例:

real_server 192.168.12.132 80 {

weight 3

inhibit_on_failure

notify_up  <STRING> | <QUOTED-STRING>

notify_down <STRING> | <QUOTED-STRING>

}

real_server:是real_server段開始的標識,用來指定real server節點,後面跟的是real server的真實IP地址和端口,IP與端口之間用空格隔開。

weight:用來配置real server節點的權值。權值大小用數字表示,數字越大,權值越高。設置權值的大小可以爲不同性能的服務器分配不同的負載,爲性能高的服務器設置較高的權值,而爲性能較低的服務器設置相對較低的權值

inhibit_on_failure:表示在檢測到real server節點失效後,把它的“weight”值設置爲0,而不是從IPVS中刪除。

notify_up:此選項與上面介紹過的notify_maser有相同的功能,後跟一個腳本,表示在檢測到real server節點服務處於UP狀態後執行的腳本。

notify_down:表示在檢測到real server節點服務處於DOWN狀態後執行的腳本。

健康檢測段允許多種檢查方式,常見的有HTTP_GET、SSL_GET、TCP_CHECK、SMTP_CHECK、MISC_CHECK。

TCP_CHECK檢測方式示例:  
TCP_CHECK  {

            connect_port 80

            connect_timeout  3

            nb_get_retry  3

            delay_before_retry  3

        }

connect_port:健康檢查的端口,如果無指定,默認是real_server指定的端口。

connect_timeout:表示無響應超時時間,單位是秒,這裏是3秒超時。

nb_get_retry:表示重試次數,這裏是3次。

delay_before_retry:表示重試間隔,這裏是間隔3秒。

HTTP_GET和SSL_GET檢測方式的示例:  
HTTP_GET |SSL_GET

          {

               url  {       

                         path  /index.html

                         digest  e6c271eb5f017f280cf97ec2f51b02d3

                         status_code   200

                     }

               connect_port 80

               bindto  192.168.12.80

               connect_timeout  3

               nb_get_retry  3

               delay_before_retry  2

          }

url:用來指定HTTP/SSL檢查的URL信息,可以指定多個URL。

path:後跟詳細的URL路徑。

digest:SSL檢查後的摘要信息,這些摘要信息可以通過genhash命令工具獲取。例如:genhash -s 192.168.12.80 -p 80 -u /index.html。

status_code:指定HTTP檢查返回正常狀態碼的類型,一般是200。

bindto:表示通過此地址來發送請求對服務器進行健康檢查。

MISC_CHECK檢測方式的示例:

     MISC_CHECK

     {

          misc_path  /usr/local/bin/script.sh

          misc_timeout  5

          ! misc_dynamic

     }

misc_path:用來指定一個外部程序或者一個腳本路徑。

misc_timeout:設定執行腳本的超時時間。

misc_dynamic:表示是否啓用動態調整real server節點權重,“!misc_dynamic”表示不啓用,相反則表示啓用。

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