keepalived(雙機熱備)深度解析 阿新 • • 發佈:2018-12-17 以下內容為親自研究得出的結果: 雙機熱備切換時間: 主機interval*主機fail+檢測時間(檢測指令碼執行時間)與備機interval*備機rise+檢測時間(檢測指令碼執行時間)中較大的那個數值,即為雙機熱備過程中的切換時間。 檢測指令碼該如何去寫: 網上大部分教程都是在寫之間去檢測nginx程序 ,這是完全不全面的! 應該綜合考慮:nginx程序 、curl、以及vip 邏輯順序為: if(curl正確){ if(程序存在){ if(ip存在){//說明我好使 return true; }else//說明服務在對端執行,不需要我來搶佔 return false; }else{//我的服務肯定有問題 return false; } }else{//curl報錯,說明服務肯定有問題 if(程序存在){ if(ip no) {//說明對端死了,我有可能是好使的,返回成功,由keepalived切換ip return ture; }else{//ip存在,說明是我的服務死了,返回失敗 return false } }else{//程序不存在,說明我肯定有問題,不能切 return false } } 雙機熱備切換時會不會有雙主現象: 若主機宕機了,備機會一直等主機釋放vip之後再來接管vip。所以不會產生主機宕機還未釋放vip備機就接管的現象。 雙機熱備網路要求: 將主機和備機同時連線到一臺交換機;或者主機和備機分別連線到各自的交換機,再將兩臺交換機連線到同一個交換機上。均可以。 ip要求: 主機ip和備機ip需要是在同一網段,虛擬ip可以與主備ip不在同一網段。 多個例項: 同一個雙機熱備例項的主備切換是一致的。即一個例項可設定多個vip,那麼當健康檢查/檢查出錯誤時,該例項上的所有vip都將一同切換。 不同的雙機熱備例項之間的主備切換是不一致的。即當一個例項的vip切換時,其它例項上的vip不會受它影響。 由上可知,當配置服務時,若想讓不同的服務之間切換一致,可將它們的 vip配置在同一個例項中;若不想讓服務之間的切換一致,可將它們的vip配置在不同的例項中。 搶佔: 設定priority 主備相同即不搶佔。 完!!