HA即(high available)高可用,又被叫做雙機熱備,用於關鍵性業務。簡單理解就是,兩臺機器A和B,正常是A提供服務,B待命限制,當A當機或服務宕掉,會切換至B機器繼續提供服務。常用實現高可用的開源軟體有heartbeat和keepalived,其中keepalived有負載均衡功能。
1、環境
主:snale2 eth0 192.168.0.44 eth1 192.168.3.44 CentOS6.7
從:snale3 eth0 192.168.0.45 eth1 192.168.3.45 CentOS6.7
VIP 192.168.0.23
關閉iptables和selinux,安裝epel源,配置2臺伺服器通過祕鑰互聯;
配置2臺各自的/etc/hosts
vim /etc/hosts
192.168.0.44 snale2
192.168.0.44 snale3
2、安裝heartbeat
a、主和從上都安裝heartbeat
#yum install -y heartbeat* libnet nginx
b、在主(snale2)上配置
cd /usr/share/doc/heartbeat-3.0.4
cp authkeys ha.cf haresources /etc/ha.d/
cd /etc/ha.d/
vim authkeys
更改
#auth 3
# 3 md5 Hello! 去掉前面的#號
然後修改其許可權
chmod 600 authkeys
c、編輯haresources檔案
vim haresources
加入下面一行
snale2 192.168.0.163/24/eth0:1 nginx
說明:snale2為主節點hostname,192.168.0.163為VIP,/24為24網段,eth0:1為VIP的裝置名,nginx為heartbeat監控的服務,也是兩臺機器對外提供的核心服務。
d、然後編輯ha.cf
vim ha.cf
改為如下內容:#grep -v ^# ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth1 192.168.3.45
auto_failback on
node snale2
node snale3
respawn hacluster /usr/lib64/heartbeat/ipfail
說明:
debugfile /var/log/ha-debug:該檔案儲存heartbeat的除錯資訊
logfile /var/log/ha-log :heartbeat的日誌檔案
keepalive 2:心跳的時間間隔,預設時間單位為秒
deadtime 30 :超出改時間間隔未收到對方節點的心跳,則發出警告並記錄到日誌中。
warntime 10: 超出改時間間隔未收到對方節點的心跳,則發出警告並記錄到日誌中。
initdead 60:在某些系統上,系統啟動或重啟之後需要經過一段時間網路才能正常工作,該選項用於解決這種情況產生的時間間隔。取值至少為deadtime的2倍。
udpport 694:設定廣播通訊使用的埠,694為預設使用的埠號。
ucast eth1 192.168.3.45 :設定對方機器心跳檢測的網路卡和ip。
auto_failback on: heartbeat的兩臺主機分別為主節點和從節點。主節點在正常情況下佔用資源並執行所有的服務,遇到故障時把資源交給從節點並由從節點執行服務。
在該選項設定為on的情況下,一旦主節點恢復執行,則自動獲取資源並取代從節點,否則不取代從節點。
node : 指定主和從節點,各佔一行,主在上,從在下。
respawn hacluster /usr/lib64/heartbeat/ipfail :指定與heartbeat一同啟動和關閉的程式,改程式被自動監視,遇到故障則重新啟動。最常用的程式是ipfail,該程式用於
檢測和處理網路故障,需要配合ping語句指定的ping node來檢測網路連線。
3、把主(snale2)上的三個配置拷貝到從上
cd /etc/ha.d/
scp authkeys ha.cf haresources snale3:/etc/ha.d/
4、到從上(snale3)編輯ha.cf
vim /etc/ha.d/ha.cf
只需要更改一個地方
ucast eth1 192.168.3.45 改為 ucast eth1 192.168.3.44
5、啟動heartbeat
先主、後從
service heartbeat start
6、檢查測試
ifconfig
看看是否有eth0:1
訪問 http://192.168.0.163
關閉主snale上的heartbeat服務
service heartbeat stop
再訪問http://192.168.0.163
在snale2主機發生網路故障、主機關機或重啟等情況下,如果snale2主機的heartbeat處於啟用狀態,則不能實現雙機的無縫切換,切換過程會有一定的延遲,如果關閉主上的heartbeat服務,從snale3能立馬進行切換,實現無縫切換,ping VIP一直處於連通狀態,無延遲。
再重新啟動主snale2的heatrbeat服務。在這種情況下,主節點snale2將重新繫結VIP地址,從節點snale3釋放該VIP地址,並由主節點對外提供服務。在主節點啟動heartbeat之後,VIP地址的
釋放和繫結有一定的延遲。雖然有一定的延遲,但是VIP地址的釋放和繫結是同步進行的,使用ping命令可以發現叢集IP地址一直處於可通狀態,該過程並不影響雙機系統的可用性。所以該過程仍然是一個
無縫切換。