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!

高可用hadoop yarn 8088如何修改_#運維

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