Ubuntu下基於HeartBeat的Web應用高可用集羣node
概述 1linux
網絡拓樸 2web
環境配置信息 2算法
環境搭建 3apache
搭建實驗環境節點A 3ubuntu
測試HeartBeat 6操作系統
申明:這只是我照着網絡上的相關技術文檔作實驗後的整理
利用VirtualBox部署一臺完整環境(lamp+heatrbeat)並配置,然後利用自帶的鏡像複製功能,複製出另一臺虛機,更改好hostname和network後,同時啓動心跳服務便可。在VirtualBox中的虛機列表截圖以下:
ubuntu-10.04.4-server-i386-nodeA
節點hostname:ubuntu-node-a
ubuntu-10.04.4-server-i386-nodeB
節點hostname:ubuntu-node-b
cluster
虛擬集羣ip 192.168.1.200
其中集羣 IP 不能和LAN(包括本機)的IP 衝突,且配置在/etc/ha.d/haresources文件中
注:個人電腦(宿主機)在家裏的一個局域網內,分配的ip爲0段。
在VirtualBox4.3上安裝一個操做系統爲Ubuntu Server 10.04.4的雙網卡主機,主機硬件配置以下:
系統:512M內存 單核處理器
網絡:網卡1>網橋網卡 網卡2>僅主機(Host-Only)適配器
查看主機名:#cat /etc/hostname
修改hosts文件:#vi /etc/hosts
網絡查看、並配置成以下:
以上配置完後重啓生效
注意:將源配置爲:http://old-releases.ubuntu.com/ubuntu/(國內163等源對舊版本的ubuntu已不支持了)
HeartBeat的自動安裝命令爲(手動安裝須要解決包的依賴關係問題)
# apt-get install heartbeat
安裝後在/usr/share/doc/heartbeat目錄裏找到authkeys、ha.cf、haresources三個文件並放到/etc/ha.d 目錄下。
執行如下命令
#cd /usr/share/doc/heartbeat
#gzip -d ha.cf.gz haresources.gz
#ls
#cp authkeys ha.cf haresources /etc/ha.d
#cd /etc/ha.d
修改配置文件以下:
auth 3
3 md5 Hello! #其中Hello!爲密鑰
這個配置文件很是簡單,就是在 auth 選擇一個值。每一個值對應一種算法,這個算法用於主節點和從節點間數據校驗
這個配置文件權限必須是0600。
# chmod 0600 authkeys
修改配置文件以下:
#日誌文件位置
logfile /var/log/ha-log
#採用eth1 的udp 廣播用來發送心跳信息
bcast eth1
#主節點重啓成功後,等到副節點down掉後拿回資源,off:不馬上接過來
auto_failback off
# 多長時間斷定節點死亡,默認30秒
deadtime 10
#節點名稱,前後順序不重要,主節點是在haresources文件中指定的,可是名稱必須與uname -n 保持一致
node ubuntu-node-a
node ubuntu-node-b
此文件用於配置集羣的 IP 和使用集羣的服務
配置方式 (讓apache 服務和集羣ip地址綁定)
ubuntu-node-a 192.168.1.200/24/eth0 apache2
其中ubuntu-node-a爲主機名,能夠經過uname –n查看;192.168.1.200爲我定的集羣ip(與家裏的局域網其餘地址不衝突),24爲掩碼
heartbeat 的三個配置文件中還有一些其它可配置項,可參考官方文檔。
VirtualBox-「管理」-「虛擬介質管理」-選中剛建立好的虛擬硬盤ubuntu-10.04.4-server-i386-nodeA.vdi文件-「複製」-下一步。。。-輸入要建立的新虛擬硬盤名稱:ubuntu-10.04.4-server-i386-nodeB、選擇好存儲的路徑-點「複製」按鈕-完成
建立新的虛擬機ubuntu-10.04.4-server-i386-nodeB,並用剛複製的現有虛擬硬盤,設置:
系統:512M內存 單核處理器
網絡:網卡1>網橋網卡 網卡2>僅主機(Host-Only)適配器
修改主機名要修改vi /etc/hostname文件
修改hosts文件:#vi /etc/hosts
網絡查看、並配置成以下:
以上配置完後重啓生效
虛擬磁盤是複製過來的,已經安裝和配置過了
分別啓動主節點和副節點的心跳服務
#service heartbeat start
能夠看到集羣IP 自動配置到主節點ubuntu-node-a上了
ubuntu-node-b則沒有看到集羣ip
咱們對a節點中止heartbeat服務或關閉a節點主機
#service heartbeat stop
查看備機b節點的網絡,能夠看到集羣ip加到了eth0上了
查看b節點日誌文件(/var/log/ha.log)
能夠看到,節點b發現節點a異常,而後自動將集羣IP配置給本身,並向全網發送廣播,因而集羣ip依然可以訪問
至此web應用高可用集羣架設完畢!