Keepalived 配置文件


keepalived的配置文件:

keepalived只有一個配置文件keepalived.conf,里面主要包括以下幾個配置區域,分別是
global_defs、              全局定義及故障時默認郵件發送 參數
static_ipaddress、    設置本節點的IP              如果你的機器上已經配置了IP和路由,那么這兩個區域可以不用配置
static_routes、          設置本節點路由信息       如果你的機器上已經配置了IP和路由,那么這兩個區域可以不用配置
vrrp_script、              用來做健康檢查,檢查失敗時會將vrrp_instance的priority減少相應的值。

vrrp_instance             用來定義對外提供服務的VIP區域及其相關屬性
virtual_server         

global_defs {
notification_email             發生諸如切換操作時發送email通知郵件地址 可以多個每行一個
{
admin@example.com
}
notification_email_from admin@example.com    發送通知郵件 源地址
smtp_server 127.0.0.1                                            smtp服務器地址
stmp_connect_timeout 30                                      smtp連接超時時間
router_id node1                                                      機器標識 主要用於通知中
}

靜態地址和路由配置 (正常不用配置)
static_ipaddress {
     10.210.214.163/24 brd 10.210.214.255 dev eth0                 靜態ip配置,這里實際上和系統里面命令配置IP地址和路由一樣
...}
static_routes {
     10.0.0.0/8 via 10.210.214.1 dev eth0                                    靜態路由配置
...}
以上分別表示啟動/關閉keepalived時在本機執行的如下命令:

# /sbin/ip addr add 10.210.214.163/24 brd 10.210.214.255 dev eth0
# /sbin/ip route add 10.0.0.0/8 via 10.210.214.1 dev eth0
# /sbin/ip addr del 10.210.214.163/24 brd 10.210.214.255 dev eth0
# /sbin/ip route del 10.0.0.0/8 via 10.210.214.1 dev eth0
注意: 請忽略這兩個區域,一般這個區域不需要配置,機器肯定已經配置了IP和路由。

 

 

VRRPD配置:

 

VRRPD配置包括三個類

 

VRRP實例(VRRP Instance)

 

VRRP同步組(synchroization group)

 

VRRP腳本

 

 

 

1.VRRP實例(instance)

 

vrrp_instance http {
state MASTER       實例初始狀態(還要根據priority值確定)可以是MASTER 或 BACKUP
interface eth0          實例節點固有IP(非VIP)的網卡,用來發VRRP包
dont_track_primary      忽略VRRP網卡錯誤。(默認未設置)
track_interface {            監控以下網卡,如果任何一個不通就會切換到故障FALT狀態。(可選項)
eth0 eth1
}
mcast_src_ip   <IPADDR>        vrrp組播包的源地址,默認源地址為master的IP 這里相當於heartbeat的心跳端口
                                                      如果沒有設置那么就用默認的綁定的網卡的IP,也就是interface指定的IP地址
garp_master_delay 10              當切換為Master狀態后多久更新ARP緩存
virtual_router_id 51            虛擬路由標識即VRID 相同的VRID為一個組 他將決定多播的MAC地址
priority 100                          定義優先級,數字越大,優先級越高,在同一個vrrp_instance下,MASTER 的優先級必須大於BACKUP。
                                              這個選項的值最好高於其他機器50個點,該項范圍是1-255
advert_int 1             檢查間隔默認為1秒

 

authentication {       設置認證
auth_type PASS               認證方式可以是PASS或AH兩種認證方式
autp_pass 1234                認證密碼
}

 


virtual_ipaddress {            設置虛擬IP 可以設置多個
#<IPADDR>/<MASK> brd <IPADDR> dev <STRING> scope <SCOPT> label <LABEL>
192.168.200.17/24 dev eth1
192.168.200.18/24 dev eth2 label eth2:1
}

 

設置虛擬路由的地方
virtual_routes {
# src <IPADDR> [to] <IPADDR>/<MASK> via|gw <IPADDR> dev <STRING> scope <SCOPE> tab
src 192.168.100.1 to 192.168.109.0/24 via 192.168.200.254 dev eth1
192.168.110.0/24 via 192.168.200.254 dev eth1
192.168.111.0/24 dev eth2
192.168.112.0/24 via 192.168.100.254
}

 

track_script {
check_running weight 20        vrrp監控腳本名稱(腳本定義在后邊)  權重
}

 

nopreempt                設置不搶占,如設置,則state的狀態要為backup
                                   而且這個節點的優先級必須別另外的高。當主MASTER恢復后不搶占資源
preemtp_delay 300          搶占延遲 master啟動多久之后進行接管資源(VIP/Route信息等)
debug                        debug級別
}

 

注意事項: 設置state為 雙備原理
通常如果master服務死掉后backup會變成master,但是當master服務又好了的時候 master此時會搶占VIP.
這樣就會發生兩次切換對業務繁忙的網站來說是不好的。 
所以我們要在配置文件加入 nopreempt 非搶占 參數,但是這個參數只能用於state 為backup,
故我們在用HA的時候最好master 和backup的state都設置成backup 讓其通過priority來競爭。 
 這樣加上nopreempt的時候,即使master又好了,依舊不會切換 。 

 

    state   nopreempt  priority
 主機  backup  設置  100
 從機  backup  不設置  50

 

vrrp_script check_running {

script “/usr/local/bin/check_running”       程序位置
interval 10                                                 腳本 執行間隔
weight 10                                   腳本結果導致的優先級變更:10表示優先級+10;-10則表示優先級-10
}

 

    • 如果腳本執行結果為0,並且weight配置的值大於0,則優先級相應的增加
    • 如果腳本執行結果非0,並且weight配置的值小於0,則優先級相應的減少
    • 其他情況,原本配置的優先級不變,即配置文件中priority對應的值。



VRRP同步組(synchroization group)配置

 

定義vrrp_intance組,使得這個組內成員動作一致。

 

例如兩個vrrp_instance同屬於一個vrrp_rsync_group,
那么其中一個vrrp_instance發生故障切換時,另一個vrrp_instance也會跟着切換(即使這個instance沒有發生故障)。

 

vrrp_sync_group VG_1 {
group { 
  http 
  mysql 

notify_master /path/to/to_master.sh      表示當切換到master狀態時要執行的腳本
notify_backup /path_to/to_backup.sh   表示當切換到backup狀態時要執行的腳本
notify_fault "/path/fault.sh VG_1"      表示出錯狀態時要執行的腳本
notify /path/to/notify.sh                       表示任何狀態切換時都調用該腳本,該腳本在以上三個腳本執行完成之后進行調用
smtp_alert                                          表示切換時給global defs中定義的郵件地址發送郵件通知
}

 

virtual_server_group和virtual_server區域

 

virtual_server_group一般在超大型的LVS中用到,一般LVS用不過這東西,因此不多說。

 

virtual_server IP Port {     delay_loop <INT>     lb_algo rr|wrr|lc|wlc|lblc|sh|dh     lb_kind NAT|DR|TUN     persistence_timeout <INT>     persistence_granularity <NETMASK>     protocol TCP     ha_suspend     virtualhost <STRING>     alpha     omega     quorum <INT>     hysteresis <INT>     quorum_up <STRING>|<QUOTED-STRING>     quorum_down <STRING>|<QUOTED-STRING>     sorry_server <IPADDR> <PORT>     real_server <IPADDR> <PORT> {         weight <INT>         inhibit_on_failure         notify_up <STRING>|<QUOTED-STRING>         notify_down <STRING>|<QUOTED-STRING>         # HTTP_GET|SSL_GET|TCP_CHECK|SMTP_CHECK|MISC_CHECK         HTTP_GET|SSL_GET {             url {                 path <STRING>                 # Digest computed with genhash                 digest <STRING>                 status_code <INT>             }             connect_port <PORT>             connect_timeout <INT>             nb_get_retry <INT>             delay_before_retry <INT>         }     } }

 

 

 


免責聲明!

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



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