HA叢集heartbeat配置--Nginx

snale1989發表於2016-10-18

  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地址一直處於可通狀態,該過程並不影響雙機系統的可用性。所以該過程仍然是一個

無縫切換。

 

相關文章