1. 程式人生 > >keepalived(雙機熱備)深度解析

keepalived(雙機熱備)深度解析

以下內容為親自研究得出的結果:

雙機熱備切換時間:

主機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 主備相同即不搶佔。

完!!