heartbeat

Heartbeat是High-Availability Linux Project (Linux下的高可用性項目)的產物,是一套提供防止業務主機因不可避免的意外性或計劃性宕機問題的高可用性軟件。Heartbeat可以從Linux-HA 項目Web 站點免費獲得,它提供了所有HA (高可用性)系統所需要的基本功能,如啓動和停止資源、監測羣集中系統的可用性、在羣集中的節點間轉移共享IP 地址的所有者等。它通過串行線、以太網接口或同時使用兩者來監測特定服務(或多個服務)的運行狀況。

    Heartbeat實現了HA 功能中的核心功能——心跳,將Heartbeat軟件同時安裝在兩臺服務器上,用於監視系統的狀態,協調主從服務器的工作,維護系統的可用性。它能偵測服務器應用級系統軟件、硬件發生的故障,及時地進行錯誤隔絕、恢復;通過系統監控、服務監控、IP自動遷移等技術實現在整個應用中無單點故障,簡單、經濟地確保重要的服務持續高可用性。

   Heartbeat採用虛擬IP地址映射技術實現主從服務器的切換對客戶端透明的功能。


實驗環境

centos6.5_x64


master  eth0  192.168.1.128

      eth1  192.168.1.129

slave   eth0  192.168.1.130

      eth1  192.168.1.131

vip         192.168.1.200


實驗軟件

epel-release-6-8.noarch.rpm

nginx.x86_64

heartbeat.x86_64


軟件安裝

rpm -ivh  epel-release-6-8.noarch.rpm

yum install -y libnet heartbeat* nginx* glib*


vim /etc/hosts

centos6    192.168.1.128  添加兩行配置 master/slave相同操作 uname -n名字

centos6-1   192.168.1.130


less /etc/hosts

127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4

::1       localhost localhost.localdomain localhost6 localhost6.localdomain6

centos6    192.168.1.128

centos6-1   192.168.1.130


ssh-keygen -t rsa      master/slave 相同操作

Generating public/private rsa key pair.

Enter file in which to save the key (/root/.ssh/id_rsa): 

Enter passphrase (empty for no passphrase): 

Enter same passphrase again: 

Your identification has been saved in /root/.ssh/id_rsa.

Your public key has been saved in /root/.ssh/id_rsa.pub.


scp /root/.ssh/id_rsa.pub  [email protected]:/root/.ssh/authorized_keys

scp /root/.ssh/id_rsa.pub  [email protected]:/root/.ssh/authorized_keys ssh信任


scp /root/aa.txt [email protected]:/root/

aa.txt                                        100%    0     0.0KB/s   00:00 

scp /root/bb.txt [email protected]:/root/

bb.txt                                        100%    0     0.0KB/s   00:00

如果使用scp命令沒有提示輸入密碼錶示ssh信任成功


service nginx start

chkconfig  --level 35 nginx on 


cd /usr/share/doc/heartbeat-3.0.4/      master/slave相同操作

cp authkeys ha.cf haresources /etc/ha.d/


vim /etc/ha.d/authkeys

#auth 1

#1 crc

#2 sha1 HI!

#3 md5 Hello! 找到


#auth 1

auth 3

#1 crc

#2 sha1 HI!

3 md5 Hello! 改爲  第一種是CRC循環冗餘校驗,第二種是SHA1哈希算法,第三種是MD3哈希算法

chmod 600 /etc/ha.d/authkeys


vim /etc/ha.d/haresources

centos6    192.168.1.200/24/eth0:0 nginx  master端配置

centos6-1   192.168.1.200/24/eth0:0 nginx  slave端配置

設定虛擬IP和對應的接口,並且指定啓動虛擬IP時啓動NGINX服務


vim /etc/ha.d/ha.cf

#debugfile /var/log/ha-debug  找到

debugfile /var/log/ha-debug   改爲

touch  /var/log/ha-debug


#logfile  /var/log/ha-log  找到

logfile   /var/log/ha-log  改爲 日誌文件位置

touch    /var/log/ha-log


logfacility     local0


#keepalive 2 找到   檢查時間間隔

keepalive 2 改爲


#deadtime 30 找到  設定死亡時間

deadtime 30 改爲  


#warntime 10  找到  設定告警時間  

warntime 10   改爲


#initdead 120 找到 設定初始化時間

initdead 20 改爲


#udpport  694 找到

udpport   694 改爲  udp端口號


#ucast eth0 192.168.1.2  找到

ucast eth1 192.168.1.131 改爲 master端配置 eth1爲心跳線ip 192.168.1.131爲slave端ip

ucast eth1 192.168.1.129 改爲 slave端配置  eth1爲心跳線ip 192.168.1.129爲master端ip


auto_failback on 找到 啓動搶佔模式(主在掛了以後重新起來後備會自動切換成備)auto_failback auto_failback on 改爲

node centos6   指定負載節點

node centos6-1


#ping 10.10.10.254 找到

ping 192.168.1.101 改爲


#respawn hacluster /usr/lib/heartbeat/ipfail 找到

respawn hacluster /usr/lib64/heartbeat/ipfail 改爲

chmod 600 /etc/ha.d/ha.cf


service heartbeat start  master/slave端相同操作


netstat -tuplna | grep heartbeat

udp        0      0 0.0.0.0:56611               0.0.0.0:*                               6831/heartbeat: wri 

udp        0      0 0.0.0.0:694                 0.0.0.0:*                               6831/heartbeat: wri 

ps -ef | grep heartbest

root      8034  8015  0 00:27 pts/0    00:00:00 grep heartbest


tail -f /var/log/ha-log

ip-request-resp(default)[12892]:        2017/10/25_01:25:59 received ip-request-resp 192.168.1.200/24/eth0:0 OK yes

ResourceManager(default)[12915]:        2017/10/25_01:26:00 info: Acquiring resource group: centos6 192.168.1.200/24/eth0:0 nginx

/usr/lib/ocf/resource.d//heartbeat/IPaddr(IPaddr_192.168.1.200)[12943]: 2017/10/25_01:26:00 INFO:  Resource is stopped

ResourceManager(default)[12915]:        2017/10/25_01:26:00 info: Running /etc/ha.d/resource.d/IPaddr 192.168.1.200/24/eth0:0 start

IPaddr(IPaddr_192.168.1.200)[13076]:    2017/10/25_01:26:00 INFO: Adding inet address 192.168.1.200/24 with broadcast address 192.168.1.255 to device eth0 (with label eth0:0)

IPaddr(IPaddr_192.168.1.200)[13076]:    2017/10/25_01:26:00 INFO: Bringing device eth0 up

IPaddr(IPaddr_192.168.1.200)[13076]:    2017/10/25_01:26:00 INFO: /usr/libexec/heartbeat/send_arp -i 200 -r 5 -p /var/run/resource-agents/send_arp-192.168.1.200 eth0 192.168.1.200 auto not_used not_used


ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host 

       valid_lft forever preferred_lft forever

2: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:45:17:73 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.129/24 brd 192.168.1.255 scope global eth1

    inet6 fe80::20c:29ff:fe45:1773/64 scope link 

       valid_lft forever preferred_lft forever

3: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:45:17:69 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.128/24 brd 192.168.1.255 scope global eth0

    inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0:0

    inet6 fe80::20c:29ff:fe45:1769/64 scope link 

       valid_lft forever preferred_lft forever   master端



ip addr

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN 

    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00

    inet 127.0.0.1/8 scope host lo

    inet6 ::1/128 scope host 

       valid_lft forever preferred_lft forever

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:3d:5b:1b brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.130/24 brd 192.168.1.255 scope global eth0

    inet 192.168.1.200/24 brd 192.168.1.255 scope global secondary eth0:0

    inet6 fe80::20c:29ff:fe3d:5b1b/64 scope link 

       valid_lft forever preferred_lft forever

3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000

    link/ether 00:0c:29:3d:5b:25 brd ff:ff:ff:ff:ff:ff

    inet 192.168.1.131/24 brd 192.168.1.255 scope global eth1

    inet6 fe80::20c:29ff:fe3d:5b25/64 scope link 

       valid_lft forever preferred_lft forever   slave端

看到eth0:0 說明配置成功


echo nginx_master > /usr/share/nginx/html/index.html  master端

echo nginx_slave > /usr/share/nginx/html/index.html   slave端

nginx -s reload


750b3664141c30ea13eea498bc2278cb.jpg-wh_

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章