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
可以看到兩台機器均在線,但是由於還沒有配置資源所以沒有資源信息。
資源管理需求:兩台機器作為兩台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查看資源狀態
可以看到vip資源和web資源目前運行在compute-1上面,這時候不論是停止compute-1上的apache服務還是網絡都會導致vip資源和web資源一起切換到compute-2上。
關鍵的難點在crm上,關於crm的信息在下一篇中介紹。