聲明:如下僅爲我的的一些總結和隨寫,若有不對之處,還請看到的網友指出,以避免誤導。三克油!!!!!!!!!!!!!!!!!node
前言: mysql
首先咱們得知道集羣(Cluster)是啥東東:用N臺服務器構成一個鬆耦合的多處理器系統(對外來講,他們就是一個服務器),它們之間經過網絡實現通訊。讓N臺服務器之間相互協做,共同承載一個網站的請求壓力。在集羣服務器架構中,當主服務器故障時,備份服務器可以自動接管主服務器的工做,並及時切換過去,以實現對用戶的不間斷服務。 linux
heartbeat (Linux-HA)的工做原理:heartbeat最核心的包括兩個部分,心跳監測部分和資源接管部分,心跳監測能夠經過網絡鏈路和串口進行,並且支持 冗 餘鏈路,它們之間相互發送報文來告訴對方本身當前的狀態,若是在指定的時間內未收到對方發送的報文,那麼就認爲對方失效,這時需啓動資源接管模塊來接管運 行在對方主機上的資源或者服務。
sql
************************乾貨來啦*******************************************
vim
環境:紅帽企業6.5系統,關閉iptables和selinux
api
Node1:172.25.28.1(vm1.example.com)
服務器
Node2:172.25.28.4(vm4.example.com)網絡
首先,請分別在node1和node2上面修改/etc/hosts解析文件
架構
172.25.28.4 vm4.example.com
less
172.25.28.1 vm1.example.com
下載實驗所需的rpm包: heartbeat-3.0.4-2.el6.x86_64.rpm heartbeat-devel-3.0.4-2.el6.x86_64.rpm ldirectord-3.9.5-3.1.x86_64.rpm heartbeat-libs-3.0.4-2.el6.x86_64.rpm
接着在兩個node節點上面安裝軟件包:yum localinstall *.rpm (在rpm包所在的目錄下執行此操做)
具體配置過程以下:
[root@vm1 ha.d]# cd /etc/ha.d
[root@vm1 ha.d]# less README.config 查看主配文件下的README文件
ha.cf Main configuration file ( 主配置文件 ) haresources Resource configuration file ( 資源配置文件) authkeys Authentication information ( 驗證信息 ) rpm -q heartbeat -d ( 查找配置文件的具體路徑 )[root@vm1 ha.d]# rpm -q heartbeat -d
/usr/share/doc/heartbeat-3.0.4/authkeys /usr/share/doc/heartbeat-3.0.4/ha.cf /usr/share/doc/heartbeat-3.0.4/haresources
[root@vm1 ha.d]# cp /usr/share/doc/heartbeat-3.0.4/authkeys /usr/share/doc/heartbeat-3.0.4/ha.cf /usr/share/doc/heartbeat-3.0.4/haresources ./ 將配置文件複製到主配置目錄下
[root@vm1 ha.d]# vim ha.cf
34 logfacility local0
48 keepalive 2
56 deadtime 30
61 warntime 10
71 initdead 60
76 udpport 694
91 bcast eth0 # Linux
157 auto_failback on
211 node vm1.example.com
212 node vm4.example.com
220 ping 172.25.28.42
253 respawn hacluster /usr/lib64/heartbeat/ipfail 此處必定要將lib64路徑寫對,因爲此前忽略了,致使痛苦好長時間,沒法啓動heatbeat服務
[root@vm1 ha.d]# grep -v ^# ha.cf logfacility
local0 keepalive 2 心跳頻率,本身設定。1:表示 1 秒;200ms:表示 200 毫秒
deadtime 30 節點死亡時間閥值,就是從節點在過了 30 後尚未收到心跳就認爲主節點死亡,本身設定
warntime 10 發出警告時間,本身設定
initdead 60 守護進程首次啓動後應該等待 60 秒後再啓動主服務器上的資源
udpport 694 心跳信息傳遞的 udp 端口,使用端口 694 進行 bcast 和 ucast 通訊,取默認值不要和別人衝突
bcast eth0 # Linux 採用 udp 廣播播來通知心跳
auto_failback on 當主節點恢復後,是否自動切回
node vm1.example.com 主節點名稱,與 uname –n 保持一致。排在第一的默認爲主節點,因此不要搞措順序
node vm2.example.com 副節點名稱,與 uname –n 保持一致
ping 172.25.28.250 加載ping模塊
respawn hacluster /usr/lib64/heartbeat/ipfail 此處必定要將lib64路徑寫對,因爲此前忽略了,致使痛苦好長時間,沒法啓動heatbeat服務
apiauth ipfail gid=haclient uid=hacluster 默認 heartbeat 並不檢測除自己以外的其餘任何服務,也不檢測網絡情況。 因此當網絡中斷時,並不會進行 Load Balancer 和 Backup 之間的切換。 能夠經過 ipfail 插件,設置'ping nodes'來解決這一問題,但不能使用一個集羣節點做爲 ping 的節點。
[root@vm1 ha.d]# vim haresources 修改資源文件
vm1.example.com IPaddr::172.25.28.100/24/eth0 mysqld
[root@vm1 ha.d]# vim authkeys 修改驗證信息
#
auth 1
1 crc
#2 sha1 HI!
#3 md5 Hello!
安裝mysqld服務,不開啓,心跳服務自動開啓 修改認證文件的權限:[root@vm1 ha.d]# chmod 600 authkeys
將配置文件拷貝給另外一個node2節點:
[root@vm1 ha.d]# scp haresources authkeys ha.cf 172.25.28.4:/etc/ha.d/
開啓heartbeat 服務:
[root@vm1 ha.d]# /etc/init.d/heartbeat start
Starting High-Availability services: INFO: Resource is stopped Done.
若是出現問題,就差看日誌 tail -f /var/log/message tail -f /var/log/ha-log 如今服務在主節點上運行着,若是主節點上的heartbeat當掉,服務自動切換到輔助節點上,若是主節點恢復正常,服務被接回。 開啓heartbeat後,mysql服務就會跟着自啓動,關掉heartbeat後,mysql服務就會跟着關掉。
使用ip addr 查看是否開啓虛擬ip 172.25.28.100
完畢!!!!!!!!!