Keepalived配置詳解

Keepalived 配置文件解釋

Keepalived的全部配置都在一個配置文件裏面,主要分爲三類:html

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

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

全局配置

全局配置是對整個 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)配置oop

VRRP實例就表示在上面開啓了VRRP協議,這個實例說明了VRRP的一些特徵,好比主從,VRID等,能夠在每一個interface上開啓一個實例。url

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模塊中的,是子模塊。spa

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>>> 概念篇debug

相關文章
相關標籤/搜索