Keepalived 叢集軟體高階使用(工作原理和狀態通知)

發表於2015-11-26

1、介紹

Keeaplived 主要有兩種應用場景,一個是通過配置keepalived結合ipvs做到負載均衡(LVS+Keepalived)。另一個是通過自身健康檢查、資源接管功能做高可用(雙機熱備),實現故障轉移。

以下內容主要針對Keepalived+MySQL雙主實現雙機熱備為根據,主要講解keepalived的狀態轉換通知功能,利用此功能可有效加強對MySQL資料庫監控。此文不再講述Keepalived+MySQL雙主部署過程,有需求者可參考以往博文:http://blog.jobbole.com/94643/

2、keepalived主要作用

keepalived採用VRRP(virtual router redundancy protocol),虛擬路由冗餘協議,以軟體的形式實現伺服器熱備功能。通常情況下是將兩臺linux伺服器組成一個熱備組(master-backup),同一時間熱備組內只有一臺主伺服器(master)提供服務,同時master會虛擬出一個共用IP地址(VIP),這個VIP只存在master上並對外提供服務。如果keepalived檢測到master當機或服務故障,備伺服器(backup)會自動接管VIP成為master,keepalived並將master從熱備組移除,當master恢復後,會自動加入到熱備組,預設再搶佔成為master,起到故障轉移功能。

3、工作在三層、四層和七層原理

Layer3:工作在三層時,keepalived會定期向熱備組中的伺服器傳送一個ICMP資料包,來判斷某臺伺服器是否故障,如果故障則將這臺伺服器從熱備組移除。

Layer4:工作在四層時,keepalived以TCP埠的狀態判斷伺服器是否故障,比如檢測mysql 3306埠,如果故障則將這臺伺服器從熱備組移除。

Layer7:工作在七層時,keepalived根據使用者設定的策略判斷伺服器上的程式是否正常執行,如果故障則將這臺伺服器從熱備組移除。

 4、健康狀態檢測方式

4.1 HTTP服務狀態檢測

4.2 TCP埠狀態檢測(使用TCP埠服務基本上都可以使用)

4.3 郵件伺服器SMTP檢測

4.4 使用者自定義指令碼檢測real_server服務狀態

5、狀態轉換通知功能

keepalived主配置郵件通知功能,預設當real_server當機或者恢復時才會發出郵件。有時我們更想知道keepalived的主伺服器故障切換後,VIP是否順利漂移到備伺服器,MySQL伺服器是否正常?那寫個監控指令碼吧,可以,但沒必要,因為keepalived具備狀態檢測功能,所以我們直接使用就行了。

 5.1 例項狀態通知

a) notify_master :節點變為master時執行

b) notify_backup : 節點變為backup時執行

c) notify_fault  : 節點變為故障時執行

5.2 虛擬伺服器檢測通知

a) notify_up   : 虛擬伺服器up時執行

b) notify_down  : 虛擬伺服器down時執行

狀態引數後可以是bash命令,也可以是shell指令碼,內容根據自己需求定義,以上示例中所涉及狀態指令碼如下:

1) 當伺服器改變為主時執行此指令碼

2) 當伺服器改變為備時執行此指令碼

3) 當伺服器改變為故障時執行此指令碼

4) 當檢測TCP埠3306為不可用時,執行此指令碼,殺死keepalived,實現切換

5) 當檢測TCP埠3306可用時,執行此指令碼

相關文章