(零)系统环境:
两台Suse Linux 10
假设其IP为x.x.x.1和x.x.x.2(使用ifconfig查看)
主机名为ha1与ha2(使用uname -n查看)
gcc v4, python
(一)下载
可以下载源码,也可以根据系统需要选择下载rpm包等
本例中使用了CVS源码。
(二)编译&安装
1.解压
#tar -zvxf heartbeat-2.0.5.tar.gz
2.添加系统用户(如果是RPM安装则无需手动添加)
编辑/etc/group,加入
haclient:x:90:
编辑/etc/passwd,加入
hacluster:x:90:90:icymoon:/home:/bin/false
或者
#groupadd -g 90 haclient
#useradd -g 90 hacluster
3.Configure, make, make install
#cd heartbeat-2.0.5
#./ConfigureMe configure
make
make install
注意:需要python-devel包中的Python.h、pam-devel包中的security/pam_appl.h和GNU/TLS的支持才可以使用图形界面的管理工具。
(三)配置
//version 2的配置和version 1有所差别,安装过程也有部分配置文件不自动copy到相关目录 下,所以得手动从源码目录中copy并修改
一共有三个配置文件:
软件参数 ha.cf
认证信息配置 authkeys
资源配置
(1)ha.cf(/etc/ha.d下)
注意:不要改动文件中各项配置的顺序!
Eg:
----------------------------------------
logfacility local0 #如果上面的logfile未被定义,则日志全部送往local0,即/var/log/messages
#以下是设置一些时间相关的参数,默认以s为单位,也可以使用<数字ms>的形式以ms为单位。
keepalive 1 #每次心跳信息的间隔时间
deadtime 5 #多长时间没收到心跳信息就判断节点为不可用
warntime 3 #报警时间(应该小于deadtime)
initdead
10
#在一些机器/系统中,系统起动后网卡需要一段时间才会开始工作
,基于此,在起动时使用此项来代替deadtime.此项至少要设置为deadtime的两倍。
udpport 694 #使用bcast或者ucast时候的UDP端口
ucast eth0 x.x.x.2 #指定通信设备与目标地址,此处使用了ucast
node ha1 #指定集群内的节点
node ha2
crm
yes
#Version 2的新功能,使用CRM(Cluster Resource Management)
------------------------------------------
其他部分选项的说明:
#debugfile /var/log/ha-debug
#logfile /var/log/ha-log
分别指定debug与其它信息写入的位置
#baud 19200
使用串口通信时的波特率
#serial /dev/ttyS0 # Linux
#serial /dev/cuaa0 # FreeBSD
#serial /dev/cua/a # Solaris
串口通信设备的选择,linux-ha支持多种通信方式
#bcast eth0 # Linux
#bcast eth1 eth2 # Linux
#bcast le0 # Solaris
#bcast le1 le2 # Solaris
选择广播心跳信息的设备
#mcast eth0 225.0.0.1 694 1 0
多播方式发送心跳信息,格式为mcast [设备] [多播组] [端口] [ttl] [loop]
#auto_failback on
当拥有该资源的机器恢复后,是否将服务进行回迁。
例如,如果最初服务运行在ha1上,ha1故障后交由ha2运行,这个选项决定了在ha1恢复后,ha2是否把服务交还给ha1在两台机器性能相等的情况下,是没有必要的,但如果两台机器性能差异较大,则尽量保证服务运行在性能较好的机器上为好。
#stonith baytech /etc/ha.d/conf/stonith.baytech
用于共享资源的集群环境中,是否采用stonith防御技术来保证数据的一致性,格式为 stonith <设备类型> <配置文件>
#watchdog /dev/watchdog
此项为可选项。可以让系统发现自己没有心跳信息的时候重起。如果使用,需要加载softdog的模块(insmod softdog)。
#ping 10.10.10.254
#ping_group group1 10.10.10.254 10.10.10.253
ping集群以外的节点来检查自己的网络是否正常
#respawn userid /path/name/to/run
#respawn hacluster /usr/lib/heartbeat/ipfail
指定与heartbeat一起启动与停止的进程
(2)authkeys(/etc/ha.d)
格式如下:
auth
[]
注意:两节点的此配置文件必须相同!
其中,authmethod指定认证所用的算法,支持crc、sha1与md5
例如:
auth 1
1 sha1 password
(3)/var/lib/heartbeat/crm/cib.xml
在2.x版本中,不再使用haresources做CRM,而是使用/var/lib/heartbeat/crm/cib.xml代替。
在1.x版本中,每个节点的haresources文件必须是相同的,否则会引发错误。而在2.x中则可自动从集群内别的节点进行同步。
Eg:
---------------------------------------------
---------------------------------------------
(四)测试与使用
(1)进程启动|停止
#/etc/init.d/heartbeat start|stop
(2)图形界面的使用
#/usr/lib/heartbeat/haclient.py &
(3)其它工具
hb_addnode 向集群中添加节点
hb_delnode 从集群中删除节点
mgmtdtest 似乎有问题???
(五)参考
wiki.linux-ha.org
(六)其它
File: heartbeat/heartbeat.c
Func: main()->get_localnodeinfo()
main()调用get_localnodeinfo()来得到节点名。先通过uname(),然后又读取HA_D/nodeinfo。在实际使用中,/etc/ha.d/nodeinfo文件可以用于配置节点名,没有也可,但写错了会导致heartbeat无法启动。
File: lib/plugins/HBcomm/ucast.c
Func: ucast_init()
里面只检查了通信用的udp端口是否小于0,没有检查>65535的情况。
阅读(3943) | 评论(8) | 转发(0) |