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,如需轉載請自行聯系原作者