Heartbeat3.0.5+pacemaker


        最近在部署openstack的雙控制節點上需要切換資源,所以學習了一下heartbeat和pacemaker,本來想用heartbeat 2但是操作系統是ubuntu 12.10的,apt下來版本直接是3.0.5的,為了以後部署方便只能硬着頭皮學了,網上關於3的內容不多,不過和2區別不大,個人感覺還是關於資源的設置比較麻煩一些。

       兩台機器:10.1.1.2(compute-1)  10.1.1.3(compute-2)

安裝heartbetat

1
apt-get install-y heartbeat

    會自動安裝其他三個關鍵包:pacemaker、resource-agents、

cluster-agents


配置heartbeat

       在/etc/heartbeat下面配置,ubuntu下自動做了一個軟連接/etc/heartbeat其實是/etc/ha.d的連接。進入/etc/heartbeat

1
cp /usr/share/doc/heartbeat/ha.cf.gz .
 
   
2
cp /usr/share/doc/heartbeat/authkeys .
 
   
3
gzip -d ha.cf.gz



默認目錄下並沒有相關配置文件,可以自己手動建立,也可以直接修改軟件包中自帶的模板,因為使用pacemaker管理資源所以不需要拷貝haresources文件,如果使用了crm管理資源,而在配置文件目錄含有haresources文件,日誌中會提示haresources沒有使用。

配置authkeys文件


1
auth 2
 
   
2
#1 crc
 
   
3
2 sha1 openstack
 
   
4
#3 md5 Hello!

官方不建議使用crc驗證,所以我們使用sha1進行驗證, authkeys文件屬性必須是600,否則日誌會報錯。

配置ha.cf文件(10.1.1.2)

01
#集羣中的節點不會自動加入
 
   
02
autojoin    none
 
   
03
 
 
   
04
#heartbeat會記錄debug日誌,如果啓用use_logd,則此選項會被忽略
 
   
05
debugfile   /var/log/ha-debug
 
   
06
 
 
   
07
#記錄所有non-debug消息,如果啓用use_logd,則此選項會被忽略
 
   
08
logfile    /var/log/ha-log
 
   
09
 
 
   
10
#告訴heartbeat記錄那些syslog
 
   
11
logfacility   local0
 
   
12
 
 
   
13
#指定兩個心跳檢測包的時間間隔
 
   
14
keepalive 1
 
   
15
 
 
   
16
#多久以後心跳檢測決定集羣中的node已經掛掉
 
   
17
deadtime   30
 
   
18
 
 
   
19
#心跳包檢測的延時事件,如果延時,只是往日誌中記錄warning日誌,並不切換服務
 
   
20
warntime  10
 
   
21
 
 
   
22
#在heartbeat啓動後,在多長時間內宣佈node是dead狀態,因為有時候系統啓動後,網絡還需要一段時間才能啓動
 
   
23
initdead  120
 
   
24
 
 
   
25
#如果udpport指令在bcast ucast指令的前面,則使用哪個端口進行廣播,否則使用默認端口
 
   
26
udpport   694
 
   
27
 
 
   
28
#設置使用哪個網絡接口發送UDP廣播包,可以設置多個網絡接口
 
   
29
#bcast  eth1 eth0
 
   
30
 
 
   
31
#設置在哪個網絡接口進行多播心跳檢測
 
   
32
#mcast   eth0 239.0.0.1 694 1 0
 
   
33
 
 
   
34
#設置使用哪個網絡接口進行UDP單播心跳檢測,在.3上為10.1.1.2
 
   
35
ucast  eth0 10.1.1.3
 
   
36
 
 
   
37
#在主節點的服務恢復後,是否把從節點的服務切換回來
 
   
38
auto_failback off
 
   
39
 
 
   
40
#告訴集羣中有哪些節點,node名稱必須是uname -n顯示出來的名稱,可以在一個node中設置多個節點,也可以多次設置node,每一個在集羣中的node都必須被列出來
 
   
41
node  compute-1
 
   
42
node  compute-2
 
   
43
 
 
   
44
#設置ping節點,ping節點用來檢測網絡連接
 
   
45
ping 10.1.1.254
 
   
46
 
 
   
47
#開啓Pacemaker cluster manager,因為歷史原因,次選項默認是off,但是應該保持該選項值為respawn。在設置為respawn默認自動使用以下配置
 
   
48
pacemaker  respawn
 
   
49
 
 
   
50
#默認配置文件中下面還有很多選項,由於暫時用不到所以暫時忽略
 
 
啓動heartbeat
 
 
1
/etc/init.d/heartbeat start


兩台機器上執行相同的操作即可,注意:ucast的ip設置即可。

查看heartbeat運行狀況:crm_mon -1

pacemaker使用fence_sbd_crm

      可以看到兩台機器均在線,但是由於還沒有配置資源所以沒有資源信息。

      資源管理需求:兩台機器作為兩台WEB服務器,使用apache軟件。對用户接口為VIP(10.1.1.6)。要求不論哪台機器故障、apache服務故障都會把資源切換到正常的服務器上,不影響用户訪問。

配置pacemaker,使用交互命令crm,也可以使用非交互模式


1
crm configure property stonith-enabled=false
 
   
2
crm configure property no-quorum-policy=ignore
 
   
3
crm configure property start-failure-is-fatal=false
 
   
4
crm configure rsc_defaults migration-threshold=1
 
   
5
crm configure primitive vip ocf:heartbeat:IPaddr2 params ip=10.1.1.6 nic=br100op monitor interval=3s
 
   
6
crm configure primitive www lsb:apache2  op monitor interval="10s"
 
   
7
crm configure group group1 vip www

再次使用crm查看資源狀態

pacemaker使用fence_sbd_網絡接口_02

       可以看到vip資源和web資源目前運行在compute-1上面,這時候不論是停止compute-1上的apache服務還是網絡都會導致vip資源和web資源一起切換到compute-2上。

關鍵的難點在crm上,關於crm的信息在下一篇中介紹。