keepalived 參數說明

來源:本站原創 網絡技術 超過862 views圍觀 0條評論

>>>keepalived是什么?
         keepalive是HA(High Available)高可用集群的一種實現方案,用來防止系統架構中的單點故障。其是vrrp協議的實現。
>>>vrrp協議工作簡介
         vrrp(Virtual Router Redundancy Protocol),即是虛擬路由冗余協議。用于實現多個路由器的高可用性。其工作原理是將一組路由器虛擬成一個虛擬路由器對外提供一個或多個IP地址。在這組路由器當中,實際對外提供IP地址的路由器被稱為MASTER,其他路由器除了接收MASTER的存活狀態通告以外,不會執行對外的網絡功能,被稱之為BACKUP。MASTER由選舉產生,當MASTER失效時,BACKUP便會稱為MASTER,接管原先MASTER的網絡功能。
       MASTER的選舉方式:
         1、如果對外的虛擬路由器IP就是路由器本身的IP的話,該路由器始終將是MASTER,這時的優先級值為255。
         2、否則如果不具備虛擬IP的話,將進行MASTER選舉,各路由器都宣告自己是MASTER,發送VRRP通告信息;
         3、如果收到其他機器的發來的通告信息的優先級比自己高,將轉回BACKUP狀態;
         4、如果優先級相等的話,將比較路由器的實際IP,IP值較大的優先權高;

>>>keepalived程序架構及重要組件介紹
wKioL1YhB3Tim_-dAAFMoMC1yXo211.jpg
當keepalived啟動時,一般會啟動一個主進程(master),和兩個子進程(checker和vrrp核心模塊)
       重要組件:
         1、checkers:用于實現ipvs后端的RealServer健康狀態檢測
         2、watchDog:linux內核核心中的模塊,用于監控keepalived的各進程的健康狀態,當keepalived啟動后,checkers和vrrp會定期通過linux中的一個套接字向watchdog發送狀態通告信息,一旦watchdog接收不到進程的狀態信息,master進程會將其殺死并重新啟動
         3、VRRP stack:此模塊便是keepalived的核心模塊,用于實現vrrp協議
         4、IPVS wrappers:根據配置文件生成ipvs規則的組件
 
 
>>>keepalived的配置前提
         1、本機的主機名與hosts中定義的主機保持一致,要與hostname或uname -n命令獲得名稱一致。
         2、各節點要能互相解析主機名:一般建議通過hosts文件進行解析
         3、各個節點的時間必須同步
 
>>>keepalived的配置詳解
配置文件為/etc/keepalived/keepalived.conf ,其主要分為三大部分,每個配置端都需使用花括號"{}"括起來:
         全局配置段:global_defs,配置文件中只能有一個
         vrrp協議配置段:
                            vrrp_instance  (實例配置)
                            vrrp synchronization group (同步組配置,將多個實例捆綁同步進退)
         lvs配置段:virtual_server
       
配置文件主要參數詳解:
         //可通過man keepalived.conf 查看更詳細的參數信息
全局配置段

global_defs {    ##全局配置段
notification_email {   ##定義故障通知郵箱
[email protected]    ##郵箱地址
[email protected]     ##郵箱地址
[email protected]  ##郵箱地址
   }
notification_email_from [email protected]         ##發件人地址
smtp_server 192.168.200.1      ##郵件服務器地址
smtp_connect_timeout 30        ##聯系郵件服務器的超時時長
router_id nod1           ##當前物理設備在網絡中的唯一ID標識
   vrrp_mcast_group4 224.0.0.18         ##定義IPv4的組播地址,可自行定義在224.0.0.0/8網段內
}
 
##默認vrrp工作于搶占模式,即優先級高的會自行搶占為MASTER;
 
腳本配置段

vrrp_script SRIPT_NAME {       ##定義一個名為SCRIPT_NAME(自定義)的腳本,需在實例外部定義,在內部調用
         script "COMMAND"                  ##script關鍵字,執行引號內的命令
         interval 1          ##此腳本端的運行周期,單位為秒
         weight [-|+]NUMBER       ##執行優先級增加或減少指定個數
}
例如:
vrrp_sript test {
         script "[[ -f /etc/keepalived/down ]] && exit 1 || exit0"
         interval 2
         weight -2
}        ##此腳本意為:每隔兩秒檢查一下/etc/keepalived/目錄下是否存在名為down的文件,若存在則返回失敗狀態碼1,并執行優先級減2
在實例中調用如下:
vrrp_instance VI_1 {
         xxxxx
         xxxxx
         track_script {
                   test
         }
}
 
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
實例配置段

vrrp_instance instance_NAME {      ##實例名在配置文件中不能重復
         state         MASTER或BACKUP        ##定義當前節點默認為主或從節點
         interface eth0 ##自動配置虛擬路由IP的網卡接口
         virtual_router_id 51         ##當前虛擬路由的標識符,必須全局唯一(0-255)
         priority 100      ##定義當前實例的優先級(0-255)
         advert_int 1     ##狀態通告周期(秒)—用于主節點向BACKUP節點通告心跳信息
         authentication {       ##消息認證配置
auth_type PASS        ##認證方式(MD5或PASS簡單字符認證)
auth_pass 1111       ##認證密碼,所有同一虛擬實例節點的必須保持一致
         } 
virtual_ipaddress {  ##自動配置在interface上的(vip)虛擬IP地址,可以是多個
                            <IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <作用域> label <LABEL>
                            192.168.200.17/24 dev eth1
                            192.168.200.18/24 dev eth2 label eth2:1
    }
         nopreempt       ##非搶占模式
 
 
 
notify_master "/etc/keepalived/notify.sh master"  ##定義狀態轉換為master時所執行的腳本(腳本實例后面給出)
notify_backup "/etc/keepalived/notify.sh backup"   ##定義狀態轉換為backup時所執行的腳本(腳本實例后面給出)
notify_fault "/etc/keepalived/notify.sh fault"    ##定義狀態轉換為fault時所執行的腳本(腳本實例后面給出)
}
notify腳本示例:(放置在/etc/keepalived/)
#!/bin/bash
# Author: MageEdu <[email protected]>
# description: An example of notify script
#
 
vip=172.16.100.1
contact=’[email protected]
 
notify() {
mailsubject="`hostname` to be $1: $vip floating"
mailbody="`date ‘+%F %H:%M:%S’`: vrrp transition, `hostname` changed to be $1"
echo $mailbody | mail -s "$mailsubject" $contact
}
 
case "$1" in
master)
notify master
/etc/rc.d/init.d/haproxy start
exit 0
;;
backup)
notify backup
/etc/rc.d/init.d/haproxy stop
exit 0
;;
fault)
notify fault
/etc/rc.d/init.d/haproxy stop
exit 0
;;
*)
echo ‘Usage: `basename $0` {master|backup|fault}’
exit 1
;;
esac
 
 
LVS配置段:

virtual_server 192.168.200.100 443 {
delay_loop 6    ##RealServer的健康狀態探查的時間間隔
lb_algo rr          ##負載均衡的調度算法(Scheduler)
lb_kind NAT      ##LVS類型。支持NAT/DR/TUN
persistence timeout NUMBER ##定義持久連接的時長,單位秒。0為不適用持久連接
nat_mask 255.255.255.0
persistence_timeout 50  ##持久連接超時時間
protocol TCP    ##只能適用TCP,若適用UDP則使用ops參數
         virtualhost STRING ##定義對指定虛擬主機基于HTTP_GET或SSL_GET做健康狀態監測
         sorry_server    IP PORT
 
real_server 192.168.201.100 443 { ##定義RealServer
                         notify_up <STRING>|<QUOTED-STRING>     ##RealServer上線執行的腳本
                         notify_down <STRING>|<QUOTED-STRING>         ##RealServer下線執行的腳本
weight 1  ##權重
SSL_GET {
url {
              path /
              digest ff20ad2481f97b1754ef3e12ecd3a9cc或status_code <INT>
}
url {
              path /mrtg/
              digest 9b3a0c85a887a256d6939da88aabd8cd或status_code <INT>
}
connect_timeout 3  ##健康狀態監測超時時間
nb_get_retry 3                  ##number of get retry
delay_before_retry 3       ##每次重試之前延遲3秒
}
    }
}

文章出自:CCIE那點事 http://www.qdxgqk.live/ 版權所有。本站文章除注明出處外,皆為作者原創文章,可自由引用,但請注明來源。 禁止全文轉載。
本文鏈接:http://www.qdxgqk.live/?p=3563轉載請注明轉自CCIE那點事
如果喜歡:點此訂閱本站
  • 相關文章
  • 為您推薦
  • 各種觀點
?
暫時還木有人評論,坐等沙發!
發表評論

您必須 [ 登錄 ] 才能發表留言!

?
?
萌宠夺宝游戏