HA 即 (high available)高可用,又被叫做雙機熱備,用於關鍵性業務。 簡單理解就是,有兩台機器A和B,正常是A提供服務,B待命閒置,當A宕機或服務宕掉,會切換至B機器繼續提供服務。常用實現高可用的開源軟件有heartbeat和keepalived,其中keepalived有負載均衡的功能。
<ignore_js_op>
HA高可用搭建目的及環境説明:
這次是為nginx服務搭建高可用集羣。
環境説明:1台主服務器,一台備用服務器。
其中主服務器的eth0 192.168.2.77 eth1 192.168.126.128
備用服務器的eth0 192.168.2.79 eth1 192.168.126.132
eth1的ip為局域網IP,用於心跳線通信使用。
下面操作1-5都是在兩個機器上操作
1. hostname 設置好,分別為master 和 slave.
2. 關閉防火牆 iptables -F;
關閉selinux: setenforce 0
3. vi /etc/hosts // 增加內容如下:(後續配置節點的時候用到)
192.168.2.77 master
192.168.2.79 slave
4. 安裝epel擴展源:
yum install -y epel-release
5. 兩個機器都安裝heartbeat / libnet
yum install -y heartbeat* libnet nginx
6,主上配置:
1,拷貝配置文件
cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf haresources /etc/ha.d/
cd /etc/ha.d
2,編輯認證文件,選擇驗證方式。
vi authkeys 選擇第三者驗證方式
3 md5 Hello!
chmod 600 authkeys
2,
vi haresources //最下面加入
master 192.168.2.100/24/eth0:0 nginx(這裏的nginx服務必須是要在/etc/init.d下的) //這裏2.100值得是虛擬Ip 綁定在eth0:0上,服務是nginx。
vi ha.cf //改為如下內容:
debugfile /var/log/ha-debug //錯誤日誌
logfile /var/log/ha-loglog //日誌
facility local0
keepalive 2 //多久檢測一次
deadtime 30 //
warntime 10
initdead 60
udpport 694
ucast eth1 192.168.126.132 //與備用機器心跳線的ip通信。
auto_failback on //當主機器回覆正常,資源是否回到主機上。
node master
node slave
ping 192.168.126.1 //ping仲裁
respawn hacluster /usr/lib/heartbeat/ipfail // hacluster 指定用户 ifpail檢測網絡的工具。
7. 把主上的三個配置拷貝到從上:
cd /etc/ha.d/
scp authkeys ha.cf haresources slave:/etc/ha.d/
8. 到從上(slave) 編輯ha.cf
vi /etc/ha.d/ha.cf //只需要更改一個地方
ucast eth1 192.168.126.132 改為 ucast eth1 192.168.126.128.
9,啓動服務。先主後從
/etc/init.d/heartbeat start
10,在主上查看進程和eth0:0是否有獲取到虛擬Ip。
ps aux|grep heartbeat
pa aux|grep nginx
ifconfig 看是否有 eth0:0
11. 測試1
主上故意禁ping
iptables -I INPUT -p icmp -j DROP
12. 測試2
主上停止heartbeat服務
service heartbeat stop
13. 測試腦裂
主和從上都down掉eth1網卡
ifdown eth1