Ubuntu下基于heartbeat的双机热备

1.  步骤

 

1.1 准备实验环境

VMware WorkStation 上安装两个操作系统为Ubuntu 10.10的双网卡主机,主机硬件配置如下图1.1

1.1 主机配置

其中需要注意的是其中Network Adapter为“桥接”模式(Bridged)Network Adapter 2为自定义模式(Custom),接在VMNET2 ,如图1.2

1.2 Network Adapter 2设置

 

 

逻辑拓朴:

 

ubuntu1

eth0网卡对应外网ip 192.168.0.128 255.255.255.0 192.168.0.1

eth1网卡对应内网ip 192.168.1.2     255.255.255.0 192.168.1.1

ubuntu2

eth0网卡对应外网ip 192.168.0.130 255.255.255.0 192.168.0.1

eth1网卡对应内网ip 192.168.1.3     255.255.255.0 192.168.1.1

cluster

虚拟集群ip              192.168.0.129

其中集群 IP 不能和LAN(包括本机)的IP 冲突,并且不能在除/etc/ha.d/haresources文件以外的任何地方配置

 

1.2   HeartBeat 的配置

HeartBeat的安装命令为

# apt-get install heartbeat

安装后在/usr/share/doc/heartbeat目录里找到ha.cfharesourcesauthkeys三个文件并放到/etc/ha.d 目录下。

另外建议安装apache2

# apt-get install apache2

 

1.2.1    Authkeys 文件配置

修改配置文件如下:

 

auth 3

3 md5 Hello! #其中Hello!为密钥

 

这个配置文件非常简单,就是在 auth 选择一个值。每个值对应一种算法,这个算法用于主节点和从节点间数据校验

这个配置文件权限必须是0600

# chmod 0600 authkeys

 

1.2.2  ha.cf 文件配置

修改配置文件如下:

 

#日志文件位置

logfile /var/log/ha-log 

#采用eth1 udp 广播用来发送心跳信息

bcast eth1

#主节点重启成功后,等到副节点down掉后拿回资源

auto_failback off

# 多长时间判定节点死亡,默认30

deadtime 10

#节点名称,先后顺序不重要,但是名称必须与uname -n 保持一致

node ubuntu1

node ubuntu2

 

想修改主机名的话要修改/etc/hostname文件并重启

 

1.2.3 haresources 文件配置

此文件用于配置集群的 IP 和使用集群的服务

#配置方式一 (HA 服务启动时将集群IP 自动配置到主节点上)

ubuntu1 192.168.0.129/24/eth0

 

#配置方式二 (让apache 服务和集群ip地址绑定)

ubuntu1 192.168.0.129/24/eth0 apache2

 

其中ubuntu1为主机名,可以通过uname n查看;192.168.0.129为集群ip,24为掩码

本实验采取配置方式二,即把apache2 服务与集群绑定。

 

1.2.4 其他可选配置

heartbeat 的三个配置文件中还有一些其它可配置项,请自行参考官方文档。

 

2.截图

启动heartbeat服务

#service heartbeat start


如图2.1可以看到集群IP 自动配置到主节点ubuntu1上了,而ubuntu2则没有(图2.2),并且集群ip已经可以访问(图2.3)

2.1 ubuntu1eth0网卡信息

2.2 ubuntu2eth0网卡信息

2.3 访问集群ip效果

 

模拟ubuntu1宕机,我们可以停止heartbeat服务

#service heartbeat stop

 

查看日志文件(/var/log/ha.log)

 Nov 24 23:19:52 ubuntu2 heartbeat: [1620]: WARN: node ubuntu1: is dead

mach_down[2020]: 2010/11/24_23:19:52 info: Taking over resource group 192.168.0.129/24/eth0

ResourceManager[2045]:        2010/11/24_23:19:52 info: Acquiring resource group: ubuntu1 192.168.0.129/24/eth0 apache2

IPaddr[2072]:  2010/11/24_23:19:53 INFO:  Resource is stopped

ResourceManager[2045]:        2010/11/24_23:19:53 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.129/24/eth0 start

IPaddr[2154]:  2010/11/24_23:19:53 INFO: Using calculated netmask for 192.168.0.129: 255.255.255.0

IPaddr[2154]:  2010/11/24_23:19:53 INFO: eval ifconfig eth0:0 192.168.0.129 netmask 255.255.255.0 broadcast 192.168.0.255

IPaddr[2130]:  2010/11/24_23:19:53 INFO:  Success

mach_down[2020]: 2010/11/24_23:19:53 info: /usr/share/heartbeat/mach_down: nice_failback: foreign resources acquired

 

可以看到,节点2发现节点1异常,然后自动将集群IP配置给自己,并向全网发送广播,于是集群ip依然能够访问

 

3.体会

一开始的时候按照参考资料《利用VMware 实验基于heartbeat Debian Linux 高可用性集群服务v1.0》把haresources文件

配置成 ubuntu1 192.168.0.129 apache2

结果两个节点ifconfig eth0:0输出中都没有看到集群虚拟IP地址192.168.0.129,也打不开网页http://192.168.0.129

通过查看日志文件可以发现执行IPaddr 192.168.0.129 start的时候出错了

ResourceManager[2799]:        2010/11/24_05:05:59 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.129 start

IPaddr[2884]:  2010/11/24_05:05:59 ERROR: /usr/lib/heartbeat/findif failed [rc=1].

IPaddr[2872]:  2010/11/24_05:05:59 ERROR:  Generic error

ResourceManager[2799]:        2010/11/24_05:05:59 ERROR: Return code 1 from /etc/ha.d/resource.d/IPaddr

ResourceManager[2799]:        2010/11/24_05:05:59 CRIT: Giving up resources due to failure of 192.168.0.129

ResourceManager[2799]:        2010/11/24_05:05:59 info: Releasing resource group: ubuntu1 192.168.0.129

ResourceManager[2799]:        2010/11/24_05:05:59 info: Running /etc/ha.d/resource.d/IPaddr 192.168.0.129 stop

IPaddr[2957]:  2010/11/24_05:05:59 INFO:  Success

 

通过网上搜索该错误,终于发现是ipaddr去绑定IP地址时,用/usr/lib/heartbeat/findif找网络接口时失败了,解决方法如下:

haresources文件配置成ubuntu1 192.168.0.129/24/eth0 apache2

 

4.参考资料

1Pdf文件 《利用VMware 实验基于heartbeat Debian Linux 高可用性集群服务v1.0

     网址 http://linux.chinaunix.net/bbs/viewthread.php?tid=904907

2http://www.boobooke.com/bbs/thread-17158-1-1.html

 

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值