ip_address service_ip 192.168.85.3 node1 eth0 192.168.85.1 pub_ip eth1 10.10.10.1 pri_ip node2 eth0 192.168.85.2 pub_ip eth1 10.10.10.2 pri_ip |
# cat /etc/hosts 192.168.85.1 node1 192.168.85.2 node2 10.10.10.1 pri1 10.10.10.2 pri2 |
heartbeat-2.1.3
感言:只要这个软件能安装就能使用,原因是安装难度大于配置。安装时没有可靠的文档参考;配置时有安装后产生的配置参考。像/etc/ha.d目录下的README.config,doc目录下的README,GettingStarted.html,ha.cf。可是在文字表达时,总是觉得后者容易表述清楚,而前者难以表达清楚。这可能也是我多次实践后所碰到的问题。至少在这个软件这里安装难于配置。然而关于高可用集群的原理不在上述讨论考虑范围之内。
# rpm -ivh heartbeat-pils-2.1.3-3.el5.centos.i386.rpm
# rpm -ivh heartbeat-stonith-2.1.3-3.el5.centos.i386.rpm
# rpm -ivh gnutls-1.4.1-10.el5_9.2.i386.rpm
# rpm -ivh --nodeps heartbeat-2.1.3-3.el5.centos.i386.rpm
# cd /etc/ha.d/
# vi README.config
# cd /usr/share/doc/heartbeat-2.1.3/
# vi README
# firefox GettingStarted.html
# cd /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/ha.cf .
# cp /usr/share/doc/heartbeat-2.1.3/haresources .
# cp /usr/share/doc/heartbeat-2.1.3/authkeys .
# vi ...
关于心跳的设置可以是『广播、单播、多播、串行链路』
★Configuring ha.cf
# vi ha.cf (进罗列以太网配置;linux环境下配置;其他参考上边firefox命令后内容)
# There are lots of options in this file. All you have to have is a set
# of nodes listed {"node ...} one of {serial, bcast, mcast, or ucast},
# and a value for "auto_failback".
(这个描述很是喜人啊!就是说这个配置文件只需要你配置三个项目就能行)
bcast eth0 eth1 eth2
(心跳接口;可以是两个,如果网卡足够;
Solaris系统下语法格式不一样)
ucast eht0 192.168.1.2
(用来发送和接受心跳信号的设备接口;发送心跳信号前往的地址)
keepalive 2
(心跳间隔的秒数;
keepalive 1500ms
需要的情况下,可以精确到毫秒级;当然设备实力比较重要)
deadtime 30
(确定主机宕机秒数----未收到心跳信号;这个值不能设定的太小了,See the FAQ)
initdead 120
(当一台机器运行后,等待另外一台处于就绪状态的等待时间;
等待网络就绪或者重启一台机器所有的时间,不太好翻。总之,最小设置到上边---
deadtime 值的两倍)
udpdort 694
(这个是个默认端口,配置不配置都是这个值,如果你需要可以更改;
广播和单播传输情况下,使用的UDP接口。)
auto_failback [on | off | legacy | 0 | 1 | y | n ……]
(当主节点失败后又恢复了,是否自动切换会主节点;建议明确在配置文件设置。
“legacy” 是默认值。可以设定为任意一个该软件支持的布尔值------比较松散。)
node linuxha1.linux-ha.org
(确定那些机器在集群里;
就是命令 uname -n 或者 hostname 的显示)
node linuxha2.linux-ha.org
* 一些不常用的项目
compression bz2 | bzip
(启用压缩)
cpmpression_threshold 2
(大于2KB就压缩)
★Configuring haresources
指定集群提供的服务谁是默认的“主节点”。
Note: This file must be the same on both nodes!
(需要在集群组内所有节点同步)
以mysqld作为集群提供的服务举例。
# hostname
hhh (这里显示的主机名没有跟上边同步,仅仅为这里的配置文件举例;短)
# vi haresources
#当一个机器的状态在 up 或者 down 时,集群节点间接管的资源定义列表。
hhh 192.168.85.3 mysqld
释义 : 集群提供 ip 地址 172.16.73.193 和 “mysqld” 服务。
"mysqld" 的路径在下边寻找:
/etc/ha.d/resource.d
/etc/rc.d/init.d
或者自己写脚本。满足 “script_name start | script_name stop”
also like:
linuxha1 192.168.85.3 maid::vacuum
linuxha1 IPaddr::192.168.85.3 httpd mysqld
两个服务,顺序执行:mysqld httpd。靠后的先执行。
linuxha1 192.168.85.3/27 httpd mysqld
linuxha1 192.168.85.3/27/192.168.85.16 httpd
"16"是定义的广播地址
关于该文件的重要提示:
> 该配置文件必须在集群内的所有节点完全一致;否则,“后果自负”( ^_^ )。
> auto_failback on (or legacy);这么样设置时,集群提供的服务在(任何时候的)启动
时,必须由主节点提供。
> auto_failback off (or legacy);这时启动方式有点不同
★Configuring ipfail
ipfail插件用来检测网络故障。(集群根据这个功能才能转移资源啊)
就是说这里配置的是故障转移
配置过程:
涉及3个配置选项(ha.cf文件中):
auto_failback(on | off)
只能是这两个值(“真”或者“假”)
respawn hacluster /usr/lib/heartbeat/ipfail
ping pnode1 pnode2 pnodeN
设置这些节点的时候,要保证所有的集群节点都能够ping的通;而且该节点必须可靠(一直
能通)。可以设为网关地址。
ping_group group1 192.168.85.1 192.168.100.1
"85.1 is up" or "100.1 is up",group1 is up.
hbaping hba_card-name
三个可用的验证方法:crc, md5, and sha1;安全性依次提高,资源占用依次增加。
md5 & sha1像这样配置:
auth 1 1 sha1 <authkey-for-sha1> |
auth 2 2 md5 <authkey-for-md5> |
两者的<authkey-for-*>;确保这个文件是“600”权限。
-rw-------
crc 像这样配置:
auth 3 3 crc |
crc使用在可信任网络中。
* 依次启动主机,备机;然后试着ssh 192.168.85.3(集群提供服务的ip)。
=========================
You may create an authkeys file, using a generated secret, with the following shell hack:
( echo -ne "auth 1\n1 sha1 "; \ dd if=/dev/urandom bs=512 count=1 | openssl md5 ) \ > /etc/ha.d/authkeys chmod 0600 /etc/ha.d/authkeys
# service heartbeat start
# ps -AHfww | grep heartbeat