CentOS 6.5 下HeartBeat的安裝與配置


CentOS 6.5 下HeartBeat的安裝與配置

參考網站:

http://wenku.baidu.com/link?url=BvqJatdx1m12PLil-7YA1zkM0yUOEO8OnN5oI0DKJ7BHxvaS0Ha39IfqEBvud5YO_NvFJ9do6EX6jpXWWibPMo4MjHOLjtFbu3FvoCbSd_W

http://blog.csdn.net/redfox1985/article/details/49994179

http://blog.csdn.net/cppresearcher/article/details/6611685

http://www.lxway.com/440929854.htm

http://edu.51cto.com/lesson/id-24641.html

http://www.51itstudy.com/50816.html

兩台linux服務器,雙網卡。

xldwhj(主):eth0:192.168.42.2 (心跳線)                     eth1:192.168.184.128

xldroot(從):eth0:192.168.42.3(心跳線)                     eth1:192.168.184.130

虛擬IP:192.168.184.200

1         HeartBeat基本介紹

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

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

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

1.1         HeartBeat的工作原理

通過修改Heartbeat的軟件的配置文件,可以制定那一台Heartbeat服務器作為主服務器,則另一台將自動成為熱備服務器。然后在熱備服務器上配置Heartbeat

守護程序來監聽來自主服務器的心跳消息。如果熱備服務器在指定時間內為監聽到來自主服務器的心跳,就會啟動故障轉義程序,並取得主服務器上的相關資源服務的所有權,接替主服務器繼續不間斷的提供服務,從而達到資源以及服務高可用的目的。

以上的描述為heartbeat的主備模式,heartbeat還支持主主模式,即兩台服務器互為主備,這是他們之間還會互相發送報文來告訴對方自己的當前的狀態,如果在指定的時間內未收到對方發送的心跳報文,那么,一方就會認為對方失效或者是已經宕機了,這時運行正常的主機就會啟動自身的資源接管模塊來接管運行在對方主機上的資源或者是服務,繼續為用戶提供服務。一般情況下,可以較好的實現一台主機故障后,企業業務能夠不間斷的持續的提供服務。注意:所謂的業務不間斷,在故障轉移期間也是需要切換時間的,heartbeat的切換時間是5-20秒。

切換的常見條件:

1)服務器宕機

2)Heartbeat服務本故障

3)中間的連接線路故障

1.2         HeartBeat的心跳連接

講過上面的描述,要部署heartbeat服務,至少需要兩台主機才能完成。那么,要實現高可用服務,這兩台主機之間,是如何做到互相通信互相監控的呢/

下面是兩台heartbeat主機之間通信的一些常用的可行的方法:

1)串行電纜,即所謂的串口(首選,缺點是距離不能太遠)

2)一根以太網電纜兩網卡直連(生產環境中常用的方式)

3)以太網電纜,通過交換機等網絡設備連接(次選,原因是增加了故障點,不好排查故障,同時,線路不是專用的心跳線,容易受其他數據傳輸的影響,導致心跳報文發送問題)

2         HeartBeat的安裝與配置

2.1         HeartBeat的安裝

因為Centos默認的yum源里沒有heartbeat的資源,所以首先需要將fedora的源添加到centos系統中

[root@xldwhj ~]#

Wget http://mirrors.sohu.com/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm

[root@xldwhj ~]# rpm –ivf epel-release-6-8.noarch.rpm

yum安裝HeartBeat

[root@xldwhj ~]# yum –y install heartbeat

安裝完成后,需要三個配置文件: ha.cf,haresources,authkeys

[root@xldwhj ~]# cat /etc/ha.d/README.config      

You need three configuration files to make heartbeat happy,

and they all go in this directory.

 

They are:

       ha.cf              Main configuration file

       haresources     Resource configuration file

       authkeys  Authentication information

 

These first two may be readable by everyone, but the authkeys file

must not be.

 

The good news is that sample versions of these files may be found in

the documentation directory (providing you installed the documentation).

 

If you installed heartbeat using rpm packages then

this command will show you where they are on your system:

              rpm -q heartbeat -d

 

If you installed heartbeat using Debian packages then

the documentation should be located in /usr/share/doc/heartbeat

執行上面的命令可以看到相關的目錄

[root@xldwhj ~]# rpm -q heartbeat -d

/usr/share/doc/heartbeat-3.0.4/AUTHORS

/usr/share/doc/heartbeat-3.0.4/COPYING

/usr/share/doc/heartbeat-3.0.4/COPYING.LGPL

/usr/share/doc/heartbeat-3.0.4/ChangeLog

/usr/share/doc/heartbeat-3.0.4/README

/usr/share/doc/heartbeat-3.0.4/apphbd.cf

/usr/share/doc/heartbeat-3.0.4/authkeys

/usr/share/doc/heartbeat-3.0.4/ha.cf

/usr/share/doc/heartbeat-3.0.4/haresources

/usr/share/man/man1/cl_status.1.gz

/usr/share/man/man1/hb_addnode.1.gz

/usr/share/man/man1/hb_delnode.1.gz

/usr/share/man/man1/hb_standby.1.gz

/usr/share/man/man1/hb_takeover.1.gz

/usr/share/man/man5/authkeys.5.gz

/usr/share/man/man5/ha.cf.5.gz

/usr/share/man/man8/apphbd.8.gz

/usr/share/man/man8/heartbeat.8.gz

查找到3個配置文件ha.cf,haresources,authkeys的位置在/usr/share/doc/heartbeat-3.0.4/下,將其拷貝到/etc/ha.d目錄下

2.2         HeartBeat的配置

ha.cf定義心跳信息層,用於實現心跳信息傳輸。

xldwhj上ha.cf的配置如下:

[root@xldwhj ~]# vim /etc/ha.d/ha.cf

logfile     /var/log/ha-log   #ha的日志文件記錄位置。如沒有該目錄,則需要手動添加

logfacility       local0

keepalive 2             #設定心跳(監測)時間時間為2秒

deadtime 30            #超出該時間間隔未收到對方節點的心跳,則認為對方已經死亡

warntime 10        #超出該時間間隔未收到對方節點的心跳,則發出警告並記錄到日志中

initdead 120        #在某些系統上,系統啟動或重啟之后需要經過一段時間網絡才能正常工作,該選項用於解決這種情況產生的時間間隔。取值至少為deadtime的兩倍。

udpport   694       #使用udp端口694進行心跳監測(bcast和ucast通信),這是默認的,並且在IANA官方注冊的端口號。

ucast eth0 192.168.42.3   #采用網卡eth0的udp單播來通知心跳,ip為對方ip

auto_failback on    #heartbeat的兩台主機分別為主節點和從節點。主節點在正常情況下占用資源並運行所有的服務,遇到故障時把資源交給從節點並由從節點運行服務。在該選項設為on的情況下,一旦主節點恢復運行,則自動獲取所有資源。

watchdog /dev/watchdog

node       xldwhj            #節點1,必須要與uname -n指令得到的結果一致。

node       xldroot            #節點2

ping 192.168.184.1      #通過ping網關來監測網絡是否正常。

hopfudge 1

deadping 30

xldroot上ha.cf的配置如下:

logfile     /var/log/ha-log

logfacility       local0

keepalive 2

deadtime 30

warntime 10

initdead 120

udpport   694

ucast eth0 192.168.42.2

auto_failback on

node       xldwhj

node       xldroot

ping 192.168.184.1

hopfudge 1

deadping 30

xldwhj與xldroot上的haresources,authkeys配置相同。

authkeys的配置如下:

[root@xldwhj ~]# vim /etc/ha.d/authkeys

auth 1 #指定的認證方式,數字是后面所列的方法的一種,最簡單的是crc,最復雜的是sha1,下面的列表必須按順序來,不能只有2,沒有1,而且這里指定的方法必須是下面列表有的

1 crc

在haresources的配置文件中加入如下內容:

[root@xldwhj ~]# vim /etc/ha.d/haresources   //決定那一個服務器是主節點

xldwhj IPaddr::192.168.184.200/24/eth1 httpd

xldwhj IPaddr::192.168.184.200/24/eth1 mysqld

3         HeartBeat測試

在啟動heartbeat之前,在xldwhj與xldroot上首先查看httpd的狀態:

[root@xldwhj ~]# netstat -nlp | grep httpd

[root@xldwhj ~]#

可知httpd未啟動。

啟動兩台服務器上的heartbeat:

[root@xldwhj ~]#/etc/init.d/heartbeat start

或者 

[root@xldwhj ~]#service heartbeat start

xldwhj(主)上的命令操作:

[root@xldwhj ~]# ip a

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:ef:76:a8 brd ff:ff:ff:ff:ff:ff

    inet 192.168.42.2/24 brd 192.168.42.255 scope global eth0

    inet6 fe80::20c:29ff:feef:76a8/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:ef:76:b2 brd ff:ff:ff:ff:ff:ff

    inet 192.168.184.128/24 brd 192.168.184.255 scope global eth1

    inet 192.168.184.200/24 brd 192.168.184.255 scope global secondary eth1

    inet6 fe80::20c:29ff:feef:76b2/64 scope link

       valid_lft forever preferred_lft forever

虛擬IP已存在。

[root@xldwhj ~]# netstat -nlp | grep httpd

tcp    0      0 :::80        :::*                        LISTEN      3121/httpd

httpd已啟動。

xldroot(從)上的命令操作:

[root@xldroot ~]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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:53:74:85 brd ff:ff:ff:ff:ff:ff

    inet 192.168.42.3/24 brd 192.168.42.255 scope global eth0

    inet6 fe80::20c:29ff:fe53:7485/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:53:74:8f brd ff:ff:ff:ff:ff:ff

    inet 192.168.184.130/24 brd 192.168.184.255 scope global eth1

    inet6 fe80::20c:29ff:fe53:748f/64 scope link

       valid_lft forever preferred_lft forever

未發現虛擬IP存在

[root@xldroot ~]# netstat -nlp | grep httpd

[root@xldroot ~]#

httpd未啟動

 

打開網頁,輸入虛擬IP地址:192.168.184.200,出現如下內容:

關閉xidwhj虛擬機:

[root@xldwhj html]# shutdown now

在xldroot上的操作如下:

[root@xldroot html]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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:53:74:85 brd ff:ff:ff:ff:ff:ff

    inet 192.168.42.3/24 brd 192.168.42.255 scope global eth0

    inet6 fe80::20c:29ff:fe53:7485/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:53:74:8f brd ff:ff:ff:ff:ff:ff

    inet 192.168.184.130/24 brd 192.168.184.255 scope global eth1

    inet 192.168.184.200/24 brd 192.168.184.255 scope global secondary eth1

    inet6 fe80::20c:29ff:fe53:748f/64 scope link

       valid_lft forever preferred_lft forever

可以看到虛擬IP懸浮於xldroot虛擬機的網卡下:

[root@xldroot html]# netstat -nlp | grep httpd

tcp      0      0 :::80              :::*              LISTEN      2330/httpd

打開網頁,輸入虛擬IP地址,出現如下內容:

此時重啟xldwhj服務:

[root@xldwhj ~]# ip a

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:ef:76:a8 brd ff:ff:ff:ff:ff:ff

    inet 192.168.42.2/24 brd 192.168.42.255 scope global eth0

    inet6 fe80::20c:29ff:feef:76a8/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:ef:76:b2 brd ff:ff:ff:ff:ff:ff

    inet 192.168.184.128/24 brd 192.168.184.255 scope global eth1

    inet 192.168.184.200/24 brd 192.168.184.255 scope global secondary eth1

    inet6 fe80::20c:29ff:feef:76b2/64 scope link

       valid_lft forever preferred_lft forever

 

可以看出,自動搶占虛擬IP地址。

 

而xldroot上

[root@xldroot html]# ip a

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 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:53:74:85 brd ff:ff:ff:ff:ff:ff

    inet 192.168.42.3/24 brd 192.168.42.255 scope global eth0

    inet6 fe80::20c:29ff:fe53:7485/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:53:74:8f brd ff:ff:ff:ff:ff:ff

    inet 192.168.184.130/24 brd 192.168.184.255 scope global eth1

    inet6 fe80::20c:29ff:fe53:748f/64 scope link

       valid_lft forever preferred_lft forever

虛擬IP地址已不見。

測試完成,HeartBeat安裝與配置成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM