高可用集羣之heartbeat安裝配置

1. 準備工做php

(本文永久地址:http://woymk.blog.51cto.com/10000269/1923285node

配置環境:centos6.9, nginx1.10, heartbeat-3.0.4mysql

先安裝、配置兩臺服務器:linux

主機名: web1
eth0 ip: 192.168.75.131
eth1 ip: 10.1.1.11nginx

主機名: web2
eth0 ip: 192.168.1.132
eth1 ip: 10.1.1.12web


nginx yum安裝請參考:sql

yum安裝nginx最新官網穩定版windows

nginx 編譯安裝請參考:centos

LNMP環境搭建(centos6.9+mysql5.7+php7.1+nginx1.10)服務器


2. 分別在兩臺服務器上操做

爲防止出現腦裂,關閉防火牆和selinux
iptables -F; 
setenforce 0
以上爲臨時關閉,請根據實際狀況自行配置。


vi /etc/hosts
增長下面兩行 
192.168.75.131 web1
192.168.75.132 web2


安裝epel擴展源
rpm -ivh "http://mirrors.sohu.com/fedora-epel/epel-release-latest-6.noarch.rpm"

兩臺服務器都安裝heartbeat,libnet
yum  install -y heartbeat* libnet


3. 在web1服務器上配置
cd /usr/share/doc/heartbeat-3.0.4/
cp  authkeys  ha.cf haresources /etc/ha.d/
cd /etc/ha.d


vi authkeys
修改或增長
auth 3
3 md5 Hello!

保存後修改文件權限

chmod 600 authkeys


vi haresources
加入
web1 192.168.75.130/24/eth0:0 nginx

這行配置的意思是:

web1 -- 表示主節點的主機名。

192.168.75.130 -- 設置虛擬ip,這裏指定的IP地址就是集羣對外服務的IP地址。

nginx -- 設置heartbeat託管的服務,這些服務能夠由heartbeat來啓動和關閉,服務腳本須要放到/etc/init.d/目錄下。


vi ha.cf
改成以下內容:
debugfile /var/log/ha-debug    #調試信息
logfile /var/log/ha-log    #記錄的日誌
logfacility     local0    #系統日誌級別
keepalive 2    #心跳間隔時間
deadtime 30    #超出該時間間隔未收到對方節點的心跳,則認爲對方已經死亡
warntime 10    #超出該時間間隔未收到對方節點的心跳,則發出警告並記錄到日誌中
initdead 120    #在某些系統上,系統啓動或重啓以後須要通過一段時間網絡才能正常工做,該選項用於解決這種狀況產生的時間間隔。取值至少爲deadtime的兩倍,這個值設的越大啓動越慢。
udpport 694    #使用udp端口694 進行心跳監測
ucast eth1 10.1.1.12    #採用單播,進行心跳監測,IP爲對方主機IP
auto_failback on    #表示主節點恢復以後,自動切回
node    web1    #節點1
node    web2    #節點2
ping 192.168.75.1    #檢查網絡是否正常,通常設爲網關或者路由路的ip
respawn hacluster /usr/lib64/heartbeat/ipfail    #該進程用於檢測和處理網絡故障,須要配合ping語句指定的ping node來檢測網絡鏈接。(若是安裝的是32位操做系統請把目錄改成/usr/lib/heartbeat/ipfail)


把三個配置文件拷貝到web2上
cd /etc/ha.d/
scp authkeys ha.cf haresources web2:/etc/ha.d/


4. 在web2上編輯ha.cf
vi  /etc/ha.d/ha.cf
只須要更改一個地方
找到
ucast eth1 10.1.1.12
改成
ucast eth1 10.1.1.11


5. 啓動heartbeat
在web1和web2上分別執行
service heartbeat start

先web1,後web2

在windows客戶端ping 192.168.75.130,能ping通就說明服務已經起來了

wKioL1kQbOWRkRbJAAAY6ouN2v4331.png-wh_50

在主節點web1上查看是否有 eth0:0

ifconfig

wKioL1kQajPhc5GwAAAuvWpF7wE243.png-wh_50


在主節點web1查看是否有nginx進程

ps aux |grep nginx

wKioL1kQaTuhnLAfAAAsZSnN8EI528.png-wh_50


6. HA功能測試

1) 在web1上模擬網絡故障,把網卡eth0 down掉

ifdown eth0

在web2上查看日誌

tail -f /var/log/ha-log

wKioL1kREHfRKDssAAB-pNp0o68791.png-wh_50

日誌顯示web2已經接管了web1的資源


在web2上查看是否有nginx進程啓動

ps aux |grep nginx

wKioL1kRD5ijcZLzAAAxl_RjtoY954.png-wh_50

nginx服務已經啓動


在web1上把eth0從新開啓

ifup eth0

繼續在web2上查看日誌

wKiom1kRFduh-tHcAACoBR5RPB0221.png-wh_50

日誌顯示web2釋放資源,自動切回到web1


2) 模擬服務器故障

把web1關掉,模擬服務器掉電

在web2上查看日誌

tail -f /var/log/ha-log

wKiom1kREInBShZVAADMnr8XfCY432.png-wh_50

日誌顯示web1已經死掉,web2上的nginx服務已經啓動


以上測試結果代表:當主節點掛掉後,備份節點成功接管了主節點的資源;當主節點故障恢復後,可以自動切回主節點,實現了高可用。

相關文章
相關標籤/搜索