天天看點

HA叢集配置

HA(high available)即高可用,又被叫做雙機熱備,用于關鍵性業務。簡單了解就是,有兩台機器A 和B,正常是A提供服務,B待命閑置,當A當機或服務宕掉,會切換至B機器繼續提供服務。常用實作高可用的開源軟體有heartbeat和keepalived,其中keepalived有負載均衡的功能。

下面我們使用heartbeat來做HA叢集,并且把nginx服務作為HA對應的服務。 

一、準備工作

兩個機器作業系統都是centos6.5,網卡eth0的ip分别為: 

注:若是克隆過來的系統,網卡會預設為eth1,可以參考我之前的文章進行修改配置。

<a href="http://msiyuetian.blog.51cto.com/8637744/1700392" target="_blank">http://msiyuetian.blog.51cto.com/8637744/1700392</a>

二、基本操作(下面所有步驟都要在兩個機器上操作 )

1、設定hostname,分别為master和slave  

主上設定hostname 

或者

從上設定 hostname 

2、關閉防火牆 

主和從都清空iptables

主和從都關閉 selinux 

3、配置 hosts  

192.168.0.112 master

4、安裝 epel 擴充源  

5、安裝 heartbeat 

6、安裝nginx

三、在master上配置

1、拷貝三個配置檔案

2、配置authkeys檔案

<a href="http://s3.51cto.com/wyfs02/M02/74/1B/wKiom1YTlM6AZd03AAA2OA1k_UY228.jpg" target="_blank"></a>

3、配置haresources檔案

找到:

修改為:

注:192.168.0.120為vip,即流動ip,對外顯示。後面接掩碼數和網口,以及服務名稱。

4、配置ha.cf檔案

注:node一定不能寫錯,否則會報錯。配置說明如下:

debugfile /var/log/ha-debug:該檔案儲存 heartbeat 的調試資訊 

logfile /var/log/ha-log:heartbeat 的日志檔案 

keepalive 2:心跳的時間間隔,預設時間機關為秒 

deadtime 30:超出該時間間隔未收到對方節點的心跳,則認為對方已經死亡。 

warntime 10:超出該時間間隔未收到對方節點的心跳,則發出警告并記錄到日志中。 

initdead 60: 在某些系統上, 系統啟動或重新開機之後需要經過一段時間網絡才能正常工作,

該選項用于解決這種情況産生的時間間隔。取值至少為 deadtime 的兩倍。 

udpport 694:設定廣播通信使用的端口,694 為預設使用的端口号。 

ucast eth0 192.168.0.113:設定對方機器心跳檢測的網卡和ip。(在生産環境中一般都是設定獨立的網卡,比如用序列槽連接配接兩台機器) 

auto_failback on:heartbeat 的兩台主機分别為主節點和從節點。主節點在正常情況下占用資源并運作所有的服務, 遇到故障時把資源交給從節點并由從節點運作服務。 在該選項設為 on 的情況下,一旦主節點恢複運作,則自動擷取資源并取代從節點,否則不取代從節點。  

node 指定主和從,各占一行,主在上從在下。 

respawn hacluster /usr/lib/heartbeat/ipfail:指定與 heartbeat 一同啟動和關閉的程序,該進

程被自動監視,遇到故障則重新啟動。最常用的程序是 ipfail,該程序用于檢測和處理網絡故障,需要配合 ping 語句指定的 ping node 來檢測網絡連接配接。如果你的系統是 64,請注意該檔案的路徑。

5、拷貝檔案到slave上

因為之前在主上配置過,是以直接拷貝過來修改即可。

四、在slave上配置

在/etc/ha.d/目錄中,拷貝過來的三個檔案隻需改ha.cf檔案即可

五、啟動heartbeat

注:啟動順序:先主後從。隻需啟動heartbeat即可,不需手動啟動nginx和vip

(1)master上用ifconfig -a指令檢視eth0:0網卡已啟動(一般都要十幾秒後才會啟動)

<a href="http://s3.51cto.com/wyfs02/M00/74/1B/wKiom1YTnxCB8cwFAAO9pExKdmY955.jpg" target="_blank"></a>

同時也可以檢視到nginx服務已啟動

<a href="http://s3.51cto.com/wyfs02/M01/74/18/wKioL1YTn8rzMCKgAAFOQ1koH2A941.jpg" target="_blank"></a>

(2)而在slave上檢視不到eth0:0網卡資訊以及nginx服務

六、測試

在主上故意禁掉ping

在master上檢視不到eth0:0網卡資訊以及nginx服務,而下slave上可以檢視到,如下圖

<a href="http://s3.51cto.com/wyfs02/M01/74/1C/wKiom1YTtp2QJ2hcAAcT2pgA8RU429.jpg" target="_blank"></a>

因為主從是通過ping指令來檢測對方的,故由上可見實作了高可用。

      本文轉自 M四月天 51CTO部落格,原文連結:http://blog.51cto.com/msiyuetian/1700515,如需轉載請自行聯系原作者

上一篇: LB叢集之nginx
下一篇: LB叢集之LVS

繼續閱讀