Keepalived的全部配置都在一個配置文件裏面,主要分爲三類:html
配置文件是以配置塊的形式存在,每一個配置塊都在一個閉合的{}範圍內,因此編輯的時候須要注意大括號的閉合問題。#和!開頭都是註釋。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 的配置是 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 } }
虛擬服務器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