定義:Keepalived是基於vrrp協議的一款應用高可用開源軟件,包括“虛擬路由冗餘”和“狀態檢測故障剔除”兩個功能子模塊;啓動後有3個進程core(主進程的啓動、維護以及全局配置文件的加載和解析)、vrrp(虛擬路由冗餘)、check(狀態檢測故障剔除)
相關命令:
keepalived -h
keepalived.conf詳解
Keepalived的配置文件可以分爲三塊:
1.全局定義塊:對整個 Keepalive 配置生效的,不管是否使用 LVS;
2.VRRP 實例定義塊:是 Keepalived 的核心;
3.虛擬服務器(LVS)定義塊:LVS 配置只在使用 Keepalived 來配置和管理 LVS 時才需要使用,如果僅僅使用 Keepalived做 HA,LVS 的配置完全是不需要的。
global_defs { #全局參數
router_id test1 #物理服務器的主機名,字定義,keepalived集羣中唯一
vrrp_mcast_group4 #表示的ipv4協議下的組播地址,組播方式發送心跳帶寬小,集羣擴展無需修改配置
}
vrrp_script chk_network { #檢測腳本
script "/path/check.sh" #5秒執行一次該腳本(判斷應用程序進程是否存在),返回0時權重=priority,返回1時權重=priority-10
interval 5
weight -10
}
vrrp_sync_group VG_1{ #分組監控及切換,若VI_1主節點故障切換,VI_2也會切換
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 #切換到master、切換到backup、故障時都會執行,且在最後執行
smtp_alert #使用global_defs中提供的郵件地址和smtp服務器發送郵件通知
}
vrrp_instance VI_1 {
state MASTER #啓動時爲主節點,啓動後還是會根據priority weight切換,所以該狀態意義不大
nopreempt #非搶佔模式,backup檢測不到master心跳時,才搶佔(master需保證keepalive和應用狀態一致或keepalived檢測到應用掛掉時pkill keepalived);不配該項,則根據priority weight值動態判斷誰主誰備;
interface eth0 #網卡名稱
virtual_router_id 51 #虛擬路由ID,主備服務器該值需保持一致
priority 100 #初始權重,根據權重決定主從
advert_int 1 #心跳檢測間隔1秒,若檢測到marster無心跳,切換
authentication { #校驗方式,必須跟備保持一致
auth_type PASS
auth_pass 1111
}
virtual_ipaddress { #虛擬ip地址,客戶通過該ip訪問服務器
192.168.200.16
}
mcast_src_ip #組播發送心跳源IP地址。默認是綁定VRRP實例的接口的主IP地址
unicast_src_ip 192.168.2.213 #單播發送心跳的原ip,默認是綁定VRRP實例的接口的主IP地址
unicast_peer {
192.168.2.211 #單播發送心跳的目標ip
}
track_script { #狀態追蹤腳本
chk_network
}
track_interface { #監控以下網卡,如果任何一個不通就會切換到FALT狀態
eno16777736
}
}
vrrp_instance VI_2 {
...
}