隨著互聯網技術的不斷發展,Web應用也越來越普遍,Web服務器的無故障工作時間就顯得尤重要,但由于各種各樣的原因,一臺服務器并不能保證永遠不出問題的運行,此時就需要一種機制來實現多臺服務器共同為相同的來務功能提供服務,以確保任意一臺服務器宕機后,不會影響其所承載的業務的訪問。
下面演示使用HA工具heartbeatV1來實現Web應用的高可用性。
注:由于條件所限,只能以一臺NFS服務器做為后端的存儲設備,其實這本身就一個單點故障風險點,在生產環境中應該有更加完善的存儲解決方案。
一、拓撲圖
二、環境準備
1、設置/etc/hosts
為保證能夠正常的解決到各節點的主機名,需要設置/etc/hosts文件,當然也可以設置DNS。
另外兩臺節點也做同樣的設置。
2、設置節點間的相互信任,即ssh密鑰
將密鑰復制到另外兩個節點:
在另外node2和node3上做同樣操作。
3、同步各節點的時間
4、下載heartbeat程序包
可以到下面的地址進行下載:http://down.51cto.com/data/1872114
三、安裝heartbeat程序
安裝heartbeat程序前需要先安裝一些依賴的軟件,請先自行配置好epel源及base yum源。
hearbeat程序需要安裝如下圖所示的三個RPM包即可。
在另外兩個節點上做同樣的操作。
四、配置heartbeat
將配置文件的模塊復制到/etc/ha.d目錄中。
1、配置ha.cf文件
ha.cf配置文件部分參數說明:
autojoin none:集群中的節點不會自動加入;
logfile /var/log/ha-log:heartbeat的日志存放位置;
keepalive 2:指定心跳使用間隔時間為2秒(即每兩秒鐘發送一次廣播);
deadtime 30:指定備用節點在30秒內沒有收到主節點的心跳信號后,則立即接管主節點的服務資源;
warntime 10:指定心跳延遲的時間為十秒。當10秒鐘內備份節點不能接收到主節點的心跳信號時,就會往日志中寫入一個警告日志,但此時不會切換服務;
initdead 120:在某些系統上,系統啟動或重啟之后需要經過一段時間網絡才能正常工作,該選項用于解決這種情況產生的時間間隔。取值至少為deadtime的兩倍;
udpport 694:設置廣播通信使用的端口,694為默認使用的端口號。
baud 19200:設置串行通信的波特率
bcast eth0:Linux 指明心跳使用以太網廣播方式,并且是在eth0接口上進行廣播;
mcast eth0 225.0.0.1 694 1 0:采用網卡eth0的Udp多播來組織心跳,一般在備用節點不止一臺時使用; ucast eth0 192.168.1.2:采用網卡eth0的udp單播來組織心跳,后面跟的IP地址應為雙機對方的IP地址;
bcast、ucast和mcast分別代表廣播、單播和多播,是組織心跳的三種方式,任選其一即可。
auto_failback on:用來定義當主節點恢復后,是否將服務自動切回;
stonith baytech /etc/ha.d/conf/stonith.baytech:stonith的主要作用是使出現問題的節點從集群環境中脫離,進而釋放集群資源,避免兩個節點爭用一個資源的情形發生。保證共享數據的安全性和完整性;
watchdog /dev/watchdog:該選項是可選配置,是通過Heartbeat來監控系統的運行狀態;
ping 192.168.2.1:選擇ping的節點,ping 節點選擇的越好,HA集群就越強壯,可以選擇固定的路由器作為ping節點,但是最好不要選擇集群中的成員作為ping節點,ping節點僅僅用來測試網絡連接;
ping_group group1 192.168.12.120 192.168.12.237:類似于ping,ping一組ip地址。
2、配置authkeys文件
此文件用于配置認證相關的信息,文件權限必須為600。
先生成一個隨機碼:
在/etc/ha.d/authkeys文件中添加如下內容:
注意兩行中的數字1是相對應的,如果修改為其它數字,兩行要同時修改。
修改文件的權限:
3、在haresources文件中添加資源
注意:node1.test.com必須與uname -n所顯示內容相同,192.168.2.100為VIP,即客戶端訪問的IP地址,httpd即指明高可用所針對的服務。
4、將上面配置的三個文件復制到node2和node3上的相同目錄中
5、在三個節點分別安裝httpd服務,并且在分別建立三個主頁,主頁內容分別為三個節點的主機名,并且啟動httpd服務,測試是否可以訪問頁面的內容;主要是為了用于測試故障轉移的效果,此操作就不做演示了。
6、停止httpd服務,啟動heartbeat服務
7、驗證
查看VIP是否啟動
測試Web應用
將node1下線后,自動切換到node2節點上
將node1與node2同時下線,node3就頂替了下來;
ha.cf中的默認設置在node1上線后會自動恢復主節點的身份,請自行驗證。
五、設置NFS共享目錄
經過上面的設置,heartbeat已經可以正常工作了,下面我們來使用NFS共享來為httpd服務提供主頁面。
1、配置NFS服務器
如果服務器上沒有nfs軟件請先安裝nfs-utils軟件。
修改配置文件:
啟動nfs服務:
本地驗證:
2、在共享目錄中提供主頁
3、在節點服務器上停止heartbeat服務,并啟動httpd服務
4、掛載NFS共享目錄,并訪問測試
由于是最小化安裝,在掛載nfs時會報上面的錯誤,安裝showmount命令后即可解決。
使用curl命令來測試,可以訪問,如下圖所示:
在其它節點上也可以按照上面的操作進行測試,確保nfs共享目錄可以被掛載。
六、修改haresources配置文件
修改haresources配置文件,使heartbeat能夠自動掛載nfs共享目錄。
七、停止httpd服務、卸載nfs共享目錄并且啟動heartbeat服務
service httpd stop
umount /var/www/html
service heartbeat start
下面是heartbeat啟動后的結果,可以看到nfs目錄已經被自動掛載了。
八、將haresources文件復制到其它節點服務器上
九、驗證
訪問192.168.2.100可以訪問到共享目錄中創建的頁面,并且即使有節點服務器宕機了,也不會影響頁面的訪問,請自行驗證。
原創文章,作者:petmaster,如若轉載,請注明出處:http://www.www58058.com/5565