安裝環境:Centos 6.4, httpd2.4,mysql5.5,heartbeat v2
提供兩臺機器node1和node2,在/etc/hosts文件中添加名稱解析,並且主機名稱要與節點名稱要相同,即uname -n的名稱要和hosts定義的名稱必須一樣。
# IP HOSTNAME ALIAS
10.204.80.79 node1.mylinux.com node1
10.204.80.80 node2.mylinux.com node2
這兩臺服務器之間建立ssh互信
#ssh-kegen –t rsa –p”” 生成id_rsa.pub和id_rsa 公鑰和私鑰文件
#ssh-copy-id –i .ssh/id_rsa.pub root@node2 把公鑰文件拷到node2上,在node2中同樣操作,然後把公鑰文件拷到node1上,這樣,兩臺主機之間就可以不通過密碼進行互訪。
安裝httpd,並提供訪問頁面,爲了顯示效果,可以在兩臺機器上的網頁文件上添加標記顯示區別,我用的是web頁面是phpinfo 加標識來識別,基礎環境就已經安裝好了。
安裝heartbeat v2版本
因爲heartbeat v2版本已經不支持在centos6版本上的rpm包,所以不能直接用yum安裝,需要用src源碼安裝包編譯後才能安裝。我這裏用的是已經編譯好了的rpm包,安裝過程要解決依賴關係,
yum -y install perl-MailTools net-snmp-libs pygtk2-libglade libnetsnmp net-snmp-libs
然後通過rpm –ivh heartbeat-2.1.4-12.el6.x86_64.rpm heartbeat-gui-2.1.4-12.el6.x86_64.rpm heartbeat-stonith-2.1.4-12.el6.x86_64.rpm heartbeat-pils-2.1.4-12.el6.x86_64.rpm
安裝heartbeat v2.14版本完成
heartbeat v2的配置文件放的位置在 /etc/ha.d/目錄下,有三個配置文件,authkeys ha.cf haresource,安裝完成後默認是沒有這三個文件的,可以手動創建,也可以在/usr/share/doc/heartbeat-2.1.4/ 目錄下把這三個文件的示例文件拷到/etc/ha.d/ 目錄下。
配置文件的作用:
authkeys : 認證文件,裏面有啓用哪種加密方式及加密密鑰,crc ,sha1 和md5三種認證機制。
如果要啓用哪種認證方式,則在 auth 後面選擇對應的數據,然後加指定驗證密鑰,密碼是用openssl隨機生成的一串16位字符
haresource :這是由heartbeat v1版本中自帶的資源管理配製文件,定義依靠和資源情況 。
這點定義的時資源節點默認依靠在node1節點上,vip:10.204.80.89,默認綁定在eth0上,定義的服務爲httpd24
ha.cf : 主配置文件, 定義節點,日誌,傳輸心跳的方式等。
logfile /var/log/ha-log
node node1.mylinux.com
node node2.mylinux.com
mcast eth0 225.4.0.4 694 1 0
ping 10.204.80.3
配置就已經完成,啓動heartbeat
在node1上啓動heartbeat ,提示heartbeat啓動成功,但資源是停止的。
查看啓動日誌
查看啓用端口
組播端口694已經啓動
在當前節點上啓動node2
查看資源
vip和httpd都已經啓動。web頁面也正常顯示
在node1上停止heartbeat服務
然後在node2上查看資源
Vip和httpd都已經成功轉移到node2上,web訪問頁面也顯示是node2上的頁面
在node1上重新啓動heartbeat
資源又重新回到node1上了,這是因爲在haresource定義 資源的時候是默認在Node1上。heartbeat配置高可用web服務成功
配置基於nfs共享存儲的mysql高可用集羣
提供兩臺機器mysql1和mysql2,在/etc/hosts文件中添加名稱解析,並且主機名稱要與節點名稱要相同,即uname -n的名稱要和hosts定義的名稱必須一樣。
# IP HOSTNAME ALIAS
10.204.80.86 mysql1.mylinux.com mysql1
10.204.80.85 mysql2.mylinux.com mysql2
nfs服務器 10.204.80.71
mysql1和mysql2建立互信關係,並且在三臺服務器上添加指定同樣uid和gid的mysql帳號
在mysql1和mysql2兩臺機器上掛載nfs,掛載目錄爲/mysqldata,並創建/mysqldata/data目錄爲mysql的數據目錄
用二進制格式安裝mysql5.5.38,並指定mysql的數據目錄爲/mysqldata/data
在mysql1節點上啓動mysql服務成功,
然後在mysql1節點上停止mysql服務,然後在mysql2節點上同樣啓動mysql服務,注意在/etc/my.cnf文件中一定要添加 datadir = /mysqldata/data 這一條配置文件,
在mysql2結點上啓動mysql服務成功
集羣環境已經搭好,安裝heartbeat v2版本過程參照上面web高可用集羣過程。啓用圖型界面配置資源
在/etc/ha.d/ha.cf主配置中寫入以下配置
node mysql1.mylinux.com
node mysql2.mylinux.com
mcast eth0 225.5.0.4 694 1 0
ping 10.204.80.3
crm on # 啓用圖型界面配置資源
在/etc/ha.d/authkeys 啓用驗證功能
2 sha1 7cd37bc0d0fbc374
輸入命令 crm_mon,可以查看兩個節點的狀態信息
兩個節點都已經在線,但沒有定義資源
安裝heartbeat以後會自動創建hacluster帳號,對這個帳號添加密碼,啓動heartbeat服務就可以登陸進去配置資源。
如圖顯示,兩個節點都已經正常在線狀態。就可以添加資源
因爲啓動mysql服務必須要有三個資源:VIP NFS以及mysql服務,所以把這三個資源定義到同一個資源組中。
添加資源vip,ip地址,綁定在哪個網卡的別名上,指定netmask
同樣添加filesystem資源nfs和mysqld服務,然後把資源啓動
定義約束:
因爲前面定義的資源都在同一個組裏面,所以這些資源必須運行在同一個節點上,於是要定義的約束是位置約束,默認資源依靠在節點mysql1上。順序約束,必須先掛載nfs資源然後才能啓用mysql服務,必須要先停止mysql服務,然後才能停止nfs服務,定義屬性能如圖
位置約束: 定義在mysql1上,也就是如果mysql1節點掛了會自動轉移到節點mysql2,當mysql1節點重新在線後,資源又會自動轉移到mysql1節點上來。
順序約束:定義資源啓動的先後順序
劃紅圈的部份就已經說明了資源啓動的順序關係,至此集羣已經定義完成。
把mysql1節點狀態改爲Standby,顯示轉換過程
資源轉移完成,當把mysql1節點重新上線,資源又會自動轉移 回去。