三、 安装heartbeat(让切换更智能)
1. 安装heartbeat
apt-get install heartbeat
(ps: Heartbeat的主要配置文件有ha.cf、haresources和authkeys。在Heartbeat安装后,默认并没有这3个文件, 可以从官方网站下载得到,也可以直接从解压的源码目录中找到)
2. 配置ha.cf
logfacilitylocal0 #这个是设置heartbeat的日志,这里是用的系统日志
keepalive500ms #多长时间检测一次
deadtime10 #连续多长时间联系不上后认为对方挂掉了(单位是妙)
warntime5 #连续多长时间联系不上后开始警告提示
initdead100 #这里主要是给重启后预留的一段忽略时间段(比如:重启后启动网络等,
如果在网络还没有通,keepalive检测肯定通不过,但这时候并不能切换)
bcasteth0
auto_failbackoff #恢复正常后是否需要再自动切换回来
nodedrbd01 #节点名(必须是集群中机器的主机名,通过uname -n取得)
nodedrbd02 #节点名(必须是集群中机器的从机名,通过uname -n取得)
ping10.0.65.250(默认网关,可以通过route命令得到)
respawn root/usr/lib/heartbeat/ipfail #这里是配置ip绑定和切换的功能,
ipfail就是控制ip切换的程序
apiauthipfail gid=root uid=root #控制ip切换的时候所使用的用户
deadping5
3. 配置资源文件(/etc/ha.d/haresources)(参考了:?p=361)
Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址以及启动的服务等集群资源,文件每一行可以包含一个或多个资源脚本名,资源之间使用空格隔开,参数之间使用两个冒号隔开,在两个HA节点上该文件必须完全一致,此文件的一般格式为:
node-name network <resource-group>
node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。network用于设定集群的IP地址、子网掩码和网络设备标识 等。需要注意的是,这里指定的IP地址就是集群对外服务的IP地址,resource-group用来指定需要Heartbeat托管的服务,也就是这些服务可以由Heartbeat来启动和关闭。如果要托管这些服务,就必须将服务写成可以通过start/stop来启动和关闭的脚步,然后放到/etc /init.d/或者/etc/ha.d/resource.d/目录下,Heartbeat会根据脚本的名称自动去/etc/init.d或者/etc /ha.d/resource.d/目录下找到相应脚步进行启动或关闭操作。
下面对配置方法进行具体说明:
drbd01IPaddr::192.68.100.120/24/eth0:0 drbddisk::r0Filesystem::/dev/drbd0::/mnt/data::ext4 mysql
(ps: 在上面的例子中,提供了对mysql资源的启动和关闭,所以需要在/etc/ha.d/resource.d这个目录下去创建一个控制该资源启动脚本,命令为: ln -s /etc/init.d/mysql /etc/ha.d/resource.d/mysql)
其中,drbd01是HA集群的主节点,IPaddr为heartbeat自带的一个执行脚本,Heartbeat首先将执行/etc/ha.d/resource.d/IPaddr192.68.100.120/24 start的操作,也就是虚拟出一个子网掩码为255.255.255.0,IP为192.68.100.120的地址。此IP为Heartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口为eth0。接着,Heartbeat将执行共享磁盘分区的挂载操作," Filesystem::/dev/drbd0::/mnt/data::ext4"相当于在命令行下执行mount操作,即"mount-t ext4 /dev/drbd0 /mnt/data",最后mysql服务。
注意 主节点和备份节点中资源文件haresources要完全一样。
因此对于我们应该这样写
drbd01IPaddr::192.68.100.120/24/eth0:0 drbddisk::r0Filesystem::/dev/drbd0::/mnt/data::ext4 mysql
不要写成如下这样:
drbd01 drbddisk::r0Filesystem::/dev/drbd0::/mnt/data::ext4 mysql 192.68.100.120
会报heartbeat Cannotuse default route w/o netmask的错误。