1. 準備工作
(本文永久地址:http://woymk.blog.51cto.com/10000269/1923285)
配置環境:centos6.9, nginx1.10, heartbeat-3.0.4
先安裝、配置兩臺服務器:
主機名: web1
eth0 ip: 192.168.75.131
eth2 ip: 10.1.1.11
主機名: web2
eth0 ip: 192.168.1.132
eth2 ip: 10.1.1.12
nginx yum安裝請參考:
yum安裝nginx最新官網穩定版
nginx 編譯安裝請參考:
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 eth2 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 eth2 10.1.1.12
改為
ucast eth2 10.1.1.11
5. 啟動heartbeat
在web1和web2上分別執行
service heartbeat start
先web1,后web2
在windows客戶端ping 192.168.75.130,能ping通就說明服務已經起來了

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

在主節點web1查看是否有nginx進程
ps aux |grep nginx

6. HA功能測試
1) 在web1上模擬網絡故障,把網卡eth0 down掉
ifdown eth0
在web2上查看日志
tail -f /var/log/ha-log

日志顯示web2已經接管了web1的資源
在web2上查看是否有nginx進程啟動
ps aux |grep nginx

nginx服務已經啟動
在web1上把eth0重新開啟
ifup eth0
繼續在web2上查看日志

日志顯示web2釋放資源,自動切回到web1
2) 模擬服務器故障
把web1關掉,模擬服務器掉電
在web2上查看日志
tail -f /var/log/ha-log

日志顯示web1已經死掉,web2上的nginx服務已經啟動
以上測試結果表明:當主節點掛掉后,備份節點成功接管了主節點的資源;當主節點故障恢復后,能夠自動切回主節點,實現了高可用。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。