HA-heartbeat高可用雙擊熱備安裝配置詳解

前期準備工作

    *兩臺節點必須是雙網卡,一個口外網,一個口內網心跳

改網卡:

  三塊網卡,設置一個外網網卡的網關爲外網地址的網關

  心跳網卡,設置外網網卡的IP爲網關

  內網網卡,設置外網網卡的IP爲網關  #此實驗沒有用到內網網卡,所以不做闡述。

  注意MAC地址,UUID不要衝突


外網網卡是eth0                心跳網卡是eth1

主節點的外網IP:10.2.16.250   心跳IP是:192.168.1.1

備節點的外網IP:10.2.16.249  心跳IP是:192.168.1.2

網卡配置文件修改項:

主節點:

DEVICE=eth0

HWADDR=00:E0:ED:35:2A:4E

TYPE=Ethernet

UUID=fe0114cf-03bc-4384-8ffb-cbff289f0020

ONBOOT=yes

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=10.2.16.250

NETMASK=255.255.255.0

GATEWAY=10.2.16.1

DNS1=202.106.0.20

DNS2=8.8.8.8

心跳網卡:

DEVICE=eth1

HWADDR=00:E0:ED:35:2A:4F

TYPE=Ethernet

UUID=0c8ef60d-dbcf-42f8-b383-5bddfbb46f0b

ONBOOT=YES

NM_CONTROLLED=yes

BOOTPROTO=static

IPADDR=192.168.1.1

NETMASK=255.255.255.0

GATEWAY=10.2.16.250

DNS1=202.106.0.20

DNS2=8.8.8.8

備份節點也如此設置



1.設置主機名:

   主節點:

   vi /etc/sysconfig/network

    NETWORKING=yes

    HOSTNAME=node1.video.cn         #主機名(master)

   備節點:

    vi /etc/sysconfig/network

    NETWORKING=yes

    HOSTNAME=node2.video.cn


2、防火牆設置

vim /etc/selinux/config

selinux=disabled

service iptables stop

chkconfig iptables off

3 、配置完成後重啓,init 6



安裝heartbeat:

1、首先創建用戶和組

groupadd -g 2000 haclient

useradd -u 2000 -g haclient hacluster


裝heartbeat所需的軟件包:

yum -y  install  pkgconfig glib2-devel  e2fsprogs libnet*  libxml2*  PyXML  ntp*


再編譯安裝libnet

tar -zxvf libnet-1.1.2.1.tar.gz -C ./

./configure

make && make install


安裝heartbeat

tar -zxvf heartbeat-2.1.2.tar.gz -C ./

./ConfigureMe configure      

make&& make install       #make報錯處理,請查看文末,有詳細的解決方法,每次解決之後,不要make clean all ,直接繼續執行make && make install


配置heartbeat


需要的配置文件有三個:ha.cf、haresources、authkeys。

這三個配置文件需要在/etc/ha.d 目錄下面,但是默認是沒有這三個文件的,所以你要:

copy 存放路徑/heartbeat-2.1.2/doc/ha.cf         /etc/ha.d/

copy 存放路徑/ heartbeat-2.1.2/doc/haresources  /etc/ha.d/

copy 存放路徑/ heartbeat-2.1.2/doc/authkeys     /etc/ha.d/

然後對這些配置文件進行修改。

注意:如果使用的是2.0 的模式則資源配置文件爲/var/lib/heartbeat/crm/cib.xml。


修改heartbeat主配置文件ha.cf


logfile    /var/log/ha-log     #指名heartbeat的日誌存放位置。  

logfacilitylocal0

#crm yes                       #是否開啓Cluster Resource Manager(集羣資源管理)功能。  

bcast eth1                     #指明心跳使用以太網廣播方式,並且是在eth1接口上進行廣播。  

keepalive 1                    #指定心跳間隔時間爲1秒(即每1秒鐘在eth1上發送一次廣播)。        

deadtime 10                    #指定若備用節點在10秒內沒有收到主節點的心跳信號,則立即接管主節點的服務資源。  

warntime 5                     #指定心跳延遲的時間爲5秒。當5秒鐘內備份節點不能接收到主節點的心跳信號時,就會往日誌中寫入一個警告日誌,但此時不會切換服務。  

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

udpport 694                    #設置廣播通信使用的端口,694爲默認使用的端口號。  

baud 19200                     #設置串行通信的波特率。  

#serial /dev/ttyS0             #選擇串行通信設備,用於雙機使用串口線連接的情況。如果雙機使用以太網連接,則應該關閉該選項。  

ucast eth1 192.168.1.2       #採用網卡eth0的udp單播來組織心跳,後面跟的IP地址應爲雙機對方的IP地址。  

#mcast eth0 225.0.0.1 694 1 0  #採用網卡eth0的Udp多播來組織心跳,一般在備用節點不止一臺時使用。Bcast、ucast和mcast分別代表廣播、單播和多播,是組織心跳的三種方式,任選其一即可。  

auto_failback on               #用來定義當主節點恢復後,是否將服務自動切回。heartbeat的兩臺主機分別爲主節點和備份節點。主節點在正常情況下佔用資源並運行所有的服務,遇到故障時把資源交給備份節點並由備份節點運行服務。在該選項設爲on的情況下,一旦主節點恢復運行,則自動獲取資源並取代備份節點;如果該選項設置爲off,那麼當主節點恢復後,將變爲備份節點,而原來的備份節點成爲主節點。  

#stonith baytech /etc/ha.d/conf/stonith.baytech     # stonith的主要作用是使出現問題的節點從集羣環境中脫離,進而釋放集羣資源,避免兩個節點爭用一個資源的情形發生。保證共享數據的安全性和完整性。  

#watchdog /dev/watchdog        #該選項是可選配置,是通過Heartbeat來監控系統的運行狀態。使用該特性,需要在內核中載入"softdog"內核模塊,用來生成實際的設備文件,如果系統中沒有這個內核模塊,就需要指定此模塊,重新編譯內核。編譯完成輸入"insmod softdog"加載該模塊。然後輸入"grep misc /proc/devices"(應爲10),輸入"cat /proc/misc |grep watchdog"(應爲130)。最後,生成設備文件:"mknod /dev/watchdog c 10 130" 。即可使用此功能。  

node node1.video.cn            #主節點主機名,可以通過命令"uanme -n"查看。  

node node2.video.cn            #備用節點主機名。  

ping 10.2.16.1                 #選擇ping的節點,ping節點選擇的越好,HA集羣就越強壯,可以選擇固定的路由器作爲ping節點,但是最好不要選擇集羣中的成員作爲ping節點,ping節點僅僅用來測試網絡連接。  

#respawn hacluster /usr/lib/heartbeat/ipfail #該選項是可選配置,列出與heartbeat一起啓動和關閉的進程,該進程一般是和heartbeat集成的插件,這些進程遇到故障可以自動重新啓動。最常用的進程是ipfail,此進程用於檢測和處理網絡故障,需要配合ping語句指定的ping node來檢測網絡的連通性。其中hacluster表示啓動ipfail進程的身份。


修改資源配置文件 haresources        兩臺HA的haresources文件必須一樣

haresources文件用於指定雙機系統的主節點、集羣IP、子網掩碼、廣播地址以及啓動的服務等集羣資源,文件每一行可以包含一個或多個資源腳本名,資源之間使用空格隔開,參數之間使用兩個冒號隔開,在兩個HA節點上該文件必須完全一致,此文件的一般格式爲:


格式爲:node-name network  <resource-group>


   本例中的配置:

node1.video.cn  IPaddr::10.2.16.240/24/eth0/  # Filesystem::/dev/sda1::/data::ext3   httpd

#本例中只啓用heartbeat的宕機替換服務,所以只設置IP,不啓用服務和網絡硬盤等。

node1.video.cn                   意爲設置node1爲主節點(也就是250IP的服務器),此處填寫的是250的主機名

10.2.16.240/24/eth0/              設置對外提供服務的IP地址爲 240,運行在eth0網卡上(配置好後會出現一個eth0:0的虛擬網卡)

Filesystem::/dev/sdb1::/data::ext3 httpd      相當於在命令行下執行mount操作,即"mount -t ext3 /dev/sdb5 /webdata",然後啓動httpd服務。


修改認證文件  authkeys  authkeys文件用於設定Heartbeat的認證方式,共有3種可用的認證方式,即crc、md5和sha1。3種認證方式的安全性依次提高,但是佔用的系統資源也依次增加。如果Heartbeat集羣運行在安全的網絡上,可以使用crc方式;如果HA每個節點的硬件配置很高,建議使用sha1,這種認證方式安全級別最高;如果是處於網絡安全和系統資源之間,可以使用md5認證方式。這裏我們使用sha1認證方式,設置如下:


  本例中的配置:/etc/ha.d/authkeys

auth 2

2 sha1 sysconfig@!#  


無論auth後面指定的是什麼數字,在下一行必須作爲關鍵字再次出現,例如指定了"auth 2",下面一定要有一行"2 認證類型"


 兩臺節點的authkeys文件必需一樣,最後確保這個文件的權限是600(即-rw-------)




配置備份節點的Heartbeat

  在備份節點上也需要安裝Heartbeat,安裝方式與在主節點安裝過程一樣,這裏不再重述。安裝完畢,在備份節點上使用scp命令把主節點配置文件傳輸到備份節點。


[root@node1 ~]#scp  /etc/ha.d/*    [email protected]:/etc/ha.d/  


備份節點需要修改ha.cf中的ucast 選項爲主節點的Ip,其他無需設置。



設置主節點和備份節點時間同步

  在雙機高可用集羣中,主節點和備份節點的系統時間也非常重要,因爲節點之間的監控都是通過設定時間來實現的。主備節點之間的系統時間相差在10秒以內是正常的,如果節點之間時間相差太大,就有可能造成HA環境的故障。解決時間同步的辦法有兩個:一個辦法是找一個時間服務器,兩個節點通過ntpdate命令定時與時間服務器進行時間校準;另一個辦法是讓集羣中的主節點作爲ntp時間服務器,讓備份節點定時去主節點進行時間校驗。

本文中將備份節點搭建爲NTP服務器,主節點通過ntpdate來進行時間同步。ntp安裝配置不再闡述。



兩臺節點啓動heartbeat :

[root@node1 ~]#service heartbeat start

Starting High-Availability services:

2014/05/08_11:19:28 INFO:  Resource is stopped

Done.

顯示上述信息則意爲啓動成功。


[root@node1 ~]#chkconfig heartbeat on    

加入開機啓動


啓動heartbeat成功之後,查看主節點的ifconfig 網卡信息,能看到自動多了一塊虛擬網卡 eth0:0 ,ip地址是在haresource裏設置的10.2.16.240






關閉不必要的服務

 chkconfig rpcgssd off

 chkconfig portreserve off

 chkconfig postfix off

 chkconfig ip6tables off

 chkconfig cups off

 chkconfig rpcbind off

 chkconfig auditd off

 chkconfig certmonger off

 chkconfig netfs off

 chkconfig nfslock off





優化後,系統默認開啓的服務列表

chkconfig --list

atd            0:關閉1:關閉2:關閉3:啓用4:啓用5:啓用6:關閉

crond          0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

heartbeat      0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

httpd          0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

iptables       0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

messagebus     0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

mysqld         0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

network        0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

ntpdate        0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

openfire       0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

rsyslog        0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

sshd           0:關閉1:關閉2:啓用3:啓用4:啓用5:啓用6:關閉

udev-post      0:關閉1:啓用2:啓用3:啓用4:啓用5:啓用6:關閉

xinetd         0:關閉1:關閉2:關閉3:啓用4:啓用5:啓用6:關閉





heartbeat安裝過程中 make報錯處理:


如報


cc1: warnings being treated as errors


client_lib.c:1850: error: 'display_orderQ'defined but not used


gmake[2]: *** [client_lib.lo] 錯誤 1


gmake[2]: Leaving directory`/root/heartbeat-2.0.7/lib/hbclient'


gmake[1]: *** [all-recursive] 錯誤 1


gmake[1]: Leaving directory`/root/heartbeat-2.0.7/lib'


make: *** [all-recursive] 錯誤 1


則將/root/heartbeat-2.0.7/lib/hbclient裏的makefile中的所有-Werror刪除



如報


cc1: warnings being treated as errors


pils.c:245: error: initialization fromincompatible pointer type


pils.c:246: error: initialization fromincompatible pointer type


gmake[2]: *** [pils.lo] 錯誤 1


gmake[2]: Leaving directory`/root/heartbeat-2.0.7/lib/pils'


gmake[1]: *** [all-recursive]錯誤 1


gmake[1]: Leaving directory`/root/heartbeat-2.0.7/lib'


make: *** [all-recursive] 錯誤 1




則將/root/heartbeat-2.0.7/lib/pils裏的makefile中的所有-Werror刪除




如報


cc1: warnings being treated as errors


client_lib.c:1850: error: 'display_orderQ'defined but not used


gmake[2]: *** [client_lib.lo]錯誤 1


gmake[2]: Leaving directory`/root/heartbeat-2.0.7/lib/hbclient'


gmake[1]: *** [all-recursive]錯誤 1


gmake[1]: Leaving directory`/root/heartbeat-2.0.7/lib'


make: *** [all-recursive] 錯誤 1


則將/root/heartbeat-2.0.7/lib/hbclient裏的makefile中的所有-Werror刪除




如報


cc1: warnings being treated as errors


stonith_signal.h:34: error:'stonith_signal_set_simple_handler' defined but not used


gmake[4]: *** [apcmaster.lo]錯誤 1


gmake[4]: Leaving directory`/root/heartbeat-2.0.7/lib/plugins/stonith'


gmake[3]: *** [all-recursive]錯誤 1


gmake[3]: Leaving directory`/root/heartbeat-2.0.7/lib/plugins/stonith'


gmake[2]: *** [all-recursive]錯誤 1


gmake[2]: Leaving directory`/root/heartbeat-2.0.7/lib/plugins'


gmake[1]: *** [all-recursive]錯誤 1


gmake[1]: Leaving directory`/root/heartbeat-2.0.7/lib'


make: *** [all-recursive] 錯誤 1


則將/root/heartbeat-2.0.7/lib/plugins/stonith裏的makefile中的所有-Werror刪除




如報


cc1: warnings being treated as errors


conf_lex.c:1195: 錯誤:‘input’定義後未使用


gmake[2]: *** [recoverymgrd-conf_lex.o]錯誤 1


gmake[2]: Leaving directory`/root/heartbeat-2.0.7/telecom/recoverymgrd'


gmake[1]: *** [all-recursive]錯誤 1


gmake[1]: Leaving directory `/root/heartbeat-2.0.7/telecom'


make: *** [all-recursive] 錯誤 1


則將/root/heartbeat-2.0.7/telecom/recoverymgrd裏的makefile中的所有-Werror刪除


如報


chown hacluster/var/lib/heartbeat/cores/hacluster


chown: 無效的用戶:"hacluster"


gmake[2]: [install-exec-local]錯誤 1 (忽略)


chmod 700/var/lib/heartbeat/cores/hacluster


gmake[2]: Nothing to be done for`install-data-am'.


gmake[2]: Leaving directory`/root/heartbeat-2.0.7'


gmake[1]: Leaving directory`/root/heartbeat-2.0.7'


則證明沒添加用戶及組,按照上面的添加用戶及組後再編譯安裝。












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