Heartbeat高可用
-
Heartbeat作用:
通過heartbeat,可以將資源(ip以及程序服務等資源)從一台已經故障的計算機快速轉移到另一台正常運轉的機器上繼續提供服務,一般稱之為高可用服務。
heartbeat和keepalived有很多相同之處,但是也有區別。
官方網址:http://www.linux-ha.org/wiki/Main_Page
-
工作原理:
通過修改heartbeat的配置文件,可以指定一台heartbeat服務器作為主服務器,另一台自動成為熱備服務器。在熱備服務器上面配置heartbeat守護程序來監聽來自主服務器的心跳信息。如果在規定時間內,無法監聽到心跳信息,那么就啟動故障轉移,取得主服務器上的相關資源的所有權,接替主服務器繼續不間斷的提供服務,從而達到資源以及服務高可用的目的。
heartbeat還支持主主模式,及兩台服務器互為主備。一般故障切換時間在5~20s之間。
另外:和keepalived的服務一樣,heartbeat高可用是服務器級別的,不是服務級別的。
-
服務器宕機
-
heartbeat軟件故障
-
心跳連接線故障)
服務故障不會導致切換,可以通過服務宕機把heartbeat服務停掉。
-
心跳連接:
至少需要兩台主機才可以實現高可用服務。
兩台heartbeat服務之間通信:
-
穿行電纜,所謂的串口(首先,缺點是距離不能太遠)
-
一根以太網電纜兩網卡直連(常用方式)
-
以太網電纜,通過交換機等網絡設備連接。(交換機可能出現問題等)
-
Heartbeat裂腦(splitbrain)
兩台服務器在一定時間內,無法相互檢測到對方心跳而各自啟動故障轉移功能,取得資源和服務的所有權,會導致同一個IP在兩端同時啟動服務,存在兩個相同的VIP,造成沖突的嚴重問題。
-
裂腦的原因:
-
心跳鏈路故障,導致無法正常通信
-
開啟了防火牆阻擋了心跳信息傳輸
-
心跳網卡地址等配置不正確
-
心跳方式,心跳廣播沖突,軟件bug
-
防止裂腦方案:
-
同時使用串行電纜和以太網電纜連接,同時使用兩條心跳線
-
檢測到裂腦時,強制關閉一個節點。(需要特殊設備支持,如stonish和fence)。相當於程序上的備節點發現心跳故障,發送關機指令到主節點。
-
做好監控預警
-
啟用磁盤鎖
-
仲裁機制(確定讓那個節點接管服務)
-
fence設備介紹
-
IBM:RSA
-
HP:ILO
-
DELL:iDRAC
-
外部設備有APC生產的PowerSwitch
-
消息類型:
-
心跳消息(單播,廣播或者多播):150字節的數據包
-
集群轉換消息:ip-request,ip-request-rsp
-
重傳消息:rexmit-request
-
IP地址接管和故障轉移:
heartbeat通過ip地址接管和arp廣播進行故障轉移的。
ARP廣播:在主服務器故障時,備用節點接管資源后,會立即強制更新所有客戶端本地的arp表(即清楚客戶端本地緩存的故障服務器的vip和mac地址的解析記錄),確保客戶端和新的主服務器的對話。
真是IP,又被稱為管理ip,一般指配置在物理網卡上面的ip。在負載均衡高可用環境中,管理IP是不對外提供訪問服務的。僅僅作為管理服務器使用,如SSH可以通過這個進行服務連接管理。
VIP是虛擬ip,實際上就是eth0:X,x為0~255的任意數字,你可以在一個網卡上面綁定多個別名。VIP當主服務器故障時,可以自動漂移到備用服務器。
注意區別輔助ip和別名ip,keepalived和heartbeat3都是用輔助ip的形式。
輔助ip設置:ip addr add 192.168.12.1 dev eth1
ip addr del 192.168.12.1 dev eth1
別名ip設置:ifconfig eth0 192.168.12.1
ifconfig eth0 down
-
heartbeat配置文件:
默認配置文件目錄/etc/ha.d/,常用配置文件:
配置名稱 |
作用 |
備注 |
ha.cf |
參數配置文件 |
配置基本參數 |
authkey |
認證文件 |
|
haresource |
資源配置文件 |
啟動ip腳本程序配置文件 |
-
實際案例:
-
修改主機名分別為ha1和ha2,分別加入host文件中:
關閉iptables和selinux:
時間同步:
-
主機名 |
ip地址 |
ha1 |
192.168.227.213 |
ha2 |
192.168.227.213 |
VIP=192.168.227.120
配置添加主機路由:
-
安裝heartbeat3軟件
安裝epel源:
yum安裝heartbeat3:
查看heartbeat安裝軟件的路徑:主要在/etc/ha.d下和
拷貝三大配置文件到/etc/ha.d目錄下:
-
authkeys配置文件
選擇對應的1,2,3選項,去除前面的#即可。
文件權限600。chmod 600 authkeys
-
ha.cf文件較為詳細,不做介紹。
其中ucast為單播方式IP地址分別為對方的ip地址
-
haresource
主節點名 VIP地址 服務名
此文件主備節點配置相同。
-
分別在兩台服務器上安裝httpd服務並啟動
-
故障測試:
兩台節點服務器同時開啟heartbeat服務和httpd服務
因為heartbeat高可用是服務器級別的,所以停止一台服務器的heartbeat服務,發現備用節點啟用,並且啟用相關的httpd服務,代表高可用成功。