keepalive配置文件詳解


 

  

第一部分:全局定義塊
  1、email通知。作用:有故障,發郵件報警。
  2、Lvs負載均衡器標識(lvs_id)。在一個網絡內,它應該是唯一的。
  3、花括號“{}”。用來分隔定義塊,因此必須成對出現。如果寫漏了,keepalived運行時,不會得到預期的結果。由於定義塊內存在嵌套關系,因此很容易遺漏結尾處的花括號,這點要特別注意。

global_defs {            
   notification_email {  #指定keepalived在發生切換時需要發送email到的對象,一行一個
    sysadmin@fire.loc
   }
   notification_email_from Alexandre.Cassen@firewall.loc #指定發件人
   smtp_server localhost #指定smtp服務器地址
   smtp_connect_timeout 30 #指定smtp連接超時時間
   router_id LVS_DEVEL #運行keepalived機器的一個標識
}

第二部分:vrrp_sync_group作用:確定失敗切換(FailOver)包含的路由實例個數。即在有2個負載均衡器的場景,一旦某個負載均衡器失效,需要自動切換到另外一個負載均衡器的實例是哪些? 實例組group{}至少包含一個vrrp實例

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,實例名出自實例組group所包含的那些名字。  

vrrp_instance VI_1 { state BACKUP #指定那個為master,那個為backup,如果設置了nopreempt這個值不起作用,主備考priority決 定 interface eth0 #設置實例綁定的網卡 dont_track_primary #忽略vrrp的interface錯誤(默認不設置) track_interface{ #設置額外的監控,里面那個網卡出現問題都會切換 eth0 eth1 } mcast_src_ip #發送多播包的地址,如果不設置默認使用綁定網卡的primary ip garp_master_delay #在切換到master狀態后,延遲進行gratuitous ARP請求 virtual_router_id
50 #VPID標記 priority 99 #優先級,高優先級競選為master advert_int 1 #檢查間隔,默認1秒 nopreempt #設置為不搶占 注:這個配置只能設置在backup主機上,而且這個主機優先級要比另外一台高 preempt_delay #搶占延時,默認5分鍾 debug #debug級別 authentication { #設置認證 auth_type PASS #認證方式 auth_pass 111111 #認證密碼 } virtual_ipaddress { #設置vip 192.168.202.200 } }

第四部分:

虛擬服務器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 }
}

 

 生產環境配置文件實例:

[root@LB2 ~]# cat /etc/keepalived/keepalived.conf 
! Configuration File for keepalived

global_defs {
        notification_email {
                49000448@qq.com
        }
        notification_email_from Alexandre.Cassen@firewall.loc
                smtp_server 10.0.0.1
                smtp_connect_timeout 30
                router_id LVS_2
}

vrrp_instance VI_1 {
        state BACKUP
                interface eth0
                virtual_router_id 55
                priority 100
                advert_int 1
                authentication {
                        auth_type PASS
                                auth_pass 1111
                }
        virtual_ipaddress {
                192.168.220.110/24
        }


virtual_server 192.168.220.110 80 {
        delay_loop 6
        lb_algo wrr
        lb_kind DR
        nat_mask 255.255.255.0
        persistence_timeout 300
        protocol TCP
}

real_server 192.168.220.129 80 {
        weight 1
        TCP_CHECK {
                        connect_timeout 8
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 80
                }
}


real_server 192.168.220.138 80 {
        weight 1
        TCP_CHECK {
                        connect_timeout 8
                        nb_get_retry 3
                        delay_before_retry 3
                        connect_port 80
                }
}
}
[root@LB2 ~]# 

 為keepalive指定日志文件

默認keepalive的日志文件是
/var/log/messages
[root@LB2 ~]# tail -5 /var/log/messages
Dec  7 22:40:10 LB2 Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
Dec  7 22:40:10 LB2 Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(10,11)]
Dec  7 22:40:10 LB2 Keepalived_healthcheckers: Opening file '/etc/keepalived/keepalived.conf'.
Dec  7 22:40:10 LB2 Keepalived_healthcheckers: Configuration is using : 8425 Bytes
Dec  7 22:40:10 LB2 Keepalived_healthcheckers: Using LinkWatch kernel netlink reflector...
[root@LB2 ~]# 

 

修改配置

[root@LB2 ~]# vim /etc/sysconfig/keepalived
  ......
  #KEEPALIVED_OPTIONS="-D"          //注釋掉該行
  KEEPALIVED_OPTIONS="-D -d -S 0"  //添加改行
  ......
[root@LB2 ~]# vim /etc/rsyslog.conf 
  ......
  local0.*       /var/log/keepalived.log           //添加改行
[root@LB2 ~]# /etc/init.d/rsyslog restart           //重啟日志服務
Shutting down system logger: [ OK ]           
Starting system logger: [ OK ]
[root@LB2 ~]# /etc/init.d/keepalived restart         //重啟keepalive服務
Stopping keepalived: [ OK ]
Starting keepalived: [ OK ]
[root@LB2 ~]# tail -5 /var/log/keepalived.log 
Dec 8 01:02:06 LB2 Keepalived_vrrp: Virtual IP = 1
Dec 8 01:02:06 LB2 Keepalived_vrrp: 192.168.220.110/24 brd 192.168.220.110 dev eth0 scope global
Dec 8 01:02:06 LB2 Keepalived_vrrp: Using LinkWatch kernel netlink reflector...
Dec 8 01:02:06 LB2 Keepalived_vrrp: VRRP_Instance(VI_1) Entering BACKUP STATE
Dec 8 01:02:06 LB2 Keepalived_vrrp: VRRP sockpool: [ifindex(2), proto(112), fd(10,11)]
[root@LB2 ~]#

 


免責聲明!

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



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