Keepalived配置詳解


Keepalived 配置文件解釋

Keepalived的所有配置都在一個配置文件里面,主要分為三類:

  • 全局配置
  • VRRPD配置
  • LVS 配置

配置文件是以配置塊的形式存在,每個配置塊都在一個閉合的{}范圍內,所以編輯的時候需要注意大括號的閉合問題。#和!開頭都是注釋

全局配置

全局配置是對整個 Keepalived 生效的配置,一個典型的配置如下:

global_defs {
   notification_email {         #設置 keepalived 在發生事件(比如切換)的時候,需要發送到的email地址,可以設置多個,每行一個。
     acassen@firewall.loc
     failover@firewall.loc
     sysadmin@firewall.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc    #設置通知郵件發送來自於哪里,如果本地開啟了sendmail的話,可以使用上面的默認值。
   smtp_server 192.168.200.1    #指定發送郵件的smtp服務器。
   smtp_connect_timeout 30      #設置smtp連接超時時間,單位為秒。
   router_id LVS_DEVEL          #是運行keepalived的一個表示,多個集群設置不同。
}

VRRPD配置

VRRPD 的配置是 Keepalived 比較重要的配置,主要分為兩個部分 VRRP 同步組和 VRRP實例,也就是想要使用 VRRP 進行高可用選舉,那么就一定需要配置一個VRRP實例,在實例中來定義 VIP、服務器角色等。

VRRP Sync Groups

不使用Sync Group的話,如果機器(或者說router)有兩個網段,一個內網一個外網,每個網段開啟一個VRRP實例,假設VRRP配置為檢查內網,那么當外網出現問題時,VRRPD認為自己仍然健康,那么不會發生Master和Backup的切換,從而導致了問題。Sync group就是為了解決這個問題,可以把兩個實例都放進一個Sync Group,這樣的話,group里面任何一個實例出現問題都會發生切換。

vrrp_sync_group VG_1{ #監控多個網段的實例
group {
    VI_1 #實例名
    VI_2
    ......
}
notify_master /path/xx.sh     #指定當切換到master時,執行的腳本
netify_backup /path/xx.sh     #指定當切換到backup時,執行的腳本
notify_fault "path/xx.sh VG_1"   #故障時執行的腳本
notify /path/xx.sh 
smtp_alert   #使用global_defs中提供的郵件地址和smtp服務器發送郵件通知
}

VRRP實例(instance)配置

VRRP實例就表示在上面開啟了VRRP協議,這個實例說明了VRRP的一些特征,比如主從,VRID等,可以在每個interface上開啟一個實例。

vrrp_instance VI_1 {    
    state MASTER         #指定實例初始狀態,實際的MASTER和BACKUP是選舉決定的。
    interface eth0       #指定實例綁定的網卡
    virtual_router_id 51 #設置VRID標記,多個集群不能重復(0..255)
    priority 100         #設置優先級,優先級高的會被競選為Master,Master要高於BACKUP至少50
    advert_int 1         #檢查的時間間隔,默認1s
    nopreempt            #設置為不搶占,說明:這個配置只能在BACKUP主機上面設置
    preempt_delay        #搶占延遲,默認5分鍾
    debug                #debug級別
    authentication {     #設置認證
        auth_type PASS    #認證方式,支持PASS和AH,官方建議使用PASS
        auth_pass 1111    #認證的密碼
    }
    virtual_ipaddress {     #設置VIP,可以設置多個,用於切換時的地址綁定。格式:#<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPT> label <LABE
        192.168.200.16/24 dev eth0 label eth0:1
        192.168.200.17/24 dev eth1 label eth1:1
        192.168.200.18
    }
}

LVS 配置

虛擬服務器virtual_server定義塊 ,虛擬服務器定義是keepalived框架最重要的項目了,是keepalived.conf必不可少的部分。 該部分是用來管理LVS的,是實現keepalive和LVS相結合的模塊。ipvsadm命令可以實現的管理在這里都可以通過參數配置實現,注意:real_server是被包含在viyual_server模塊中的,是子模塊。

virtual_server 192.168.202.200 23 {        //VIP地址,要和vrrp_instance模塊中的virtual_ipaddress地址一致
    delay_loop 6   #健康檢查時間間隔 
    lb_algo rr   #lvs調度算法rr|wrr|lc|wlc|lblc|sh|dh 
    lb_kind DR    #負載均衡轉發規則NAT|DR|RUN 
    persistence_timeout 5 #會話保持時間 
    protocol TCP    #使用的協議 
    persistence_granularity <NETMASK> #lvs會話保持粒度 
    virtualhost <string>    #檢查的web服務器的虛擬主機(host:頭) 
    sorry_server<IPADDR> <port> #備用機,所有realserver失效后啟用


real_server 192.168.200.5 23 {             //RS的真實IP地址
            weight 1 #默認為1,0為失效
            inhibit_on_failure #在服務器健康檢查失效時,將其設為0,而不是直接從ipvs中刪除 
            notify_up <string> | <quoted-string> #在檢測到server up后執行腳本
            notify_down <string> | <quoted-string> #在檢測到server down后執行腳本
            
TCP_CHECK {                    //常用
            connect_timeout 3 #連接超時時間
            nb_get_retry 3 #重連次數
            delay_before_retry 3 #重連間隔時間
            connect_port 23 #健康檢查的端口的端口
            bindto <ip>   
          }

HTTP_GET | SSL_GET{          //不常用
    url{ #檢查url,可以指定多個
         path /
         digest <string> #檢查后的摘要信息
         status_code 200 #檢查的返回狀態碼
        }
    connect_port <port> 
    bindto <IPADD>
    connect_timeout 5
    nb_get_retry 3
    delay_before_retry 2
    }

SMTP_CHECK{                 //不常用
    host{
    connect_ip <IP ADDRESS>
    connect_port <port> #默認檢查25端口
    bindto <IP ADDRESS>
         }
    connect_timeout 5
    retry 3
    delay_before_retry 2
    helo_name <string> | <quoted-string> #smtp helo請求命令參數,可選
    }
 
MISC_CHECK{                 //不常用
    misc_path <string> | <quoted-string> #外部腳本路徑
    misc_timeout #腳本執行超時時間
    misc_dynamic #如設置該項,則退出狀態碼會用來動態調整服務器的權重,返回0 正常,不修改;返回1,

  檢查失敗,權重改為0;返回2-255,正常,權重設置為:返回狀態碼-2
    }
}

Keepalived>>> 概念篇

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM