免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5662 | 回复: 9
打印 上一主题 下一主题

与大家分享 用Heartbeat配置Linux高可用性集群 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-11-19 15:31 |只看该作者 |倒序浏览
今天自己做实验成功了,觉得这个东西确实比较实用。
现在与大家分享希望大家能够在工作中用得着


1.准备环境
准备两台Linux,hostname和ip分别是ha(192.168.0.10),ha2(192.168.0.20),采用VMWare 虚机做实验也可。

下载软件和安装其它所需的软件
首先下载heartbeat软件:到http://linux-ha.org/download 下载最新的heartbeat软件。本文写作时下载的软件是: heartbeat-2.0.2.tar.gz
libnet只能下载源代码进行安装。下载地址:http://www.packetfactory.net/libnet/。我下载的稳定版本是:
1.1.2.1

安装heartbeat除必要的编译器之外,需要下面两个软件的开发包支持:e2fsprogs和libnet。
e2fsprogs可以从系统的安装光盘使用rpm来安装:
rpm -ivh /mnt/cdrom/RedHat/RPMS/e2fsprogs-devel-1.32-6.i386.rpm

2.安装
2.1         安装libnet:
tar -zxvf libnet.tar.gz
cd libnet
./configure
make
make install

        2.2        安装heartbeat
tar -zxvf heartbeat-2.0.2.tar.gz
cd heartbeat-2.0.2
./configure
make
make install

3.配置heartbeat
    需要配置文件有三个:authkeys、haresources、ha.cf.这三个配置文件需要在/etc/ha.d目录下面,但是默认是没有这三个文件的,所以你可以自己创建,简单配置很简单:
3.1        在ha和ha2上配置相同的authkeys和haresources,如下:
                配置 authkeys
                    #cat authkeys
                 -------------- 注:此线不为文件内容
                            auth 3
                            #1 crc
                            #2 sha1 HI
                            3 md5 Hello
                 -------------- 注:此线不为文件内容
                    1,2,3表示认证算法选择,这里选择了md5算法
                   而且authkeys文件权限必须是0600,所以
                    #chmod 0600 authkeys
            3.2 配置 haresources
#cat haresources
                  --------------
                    ha 192.168.0.2/24/eth0 apache
                  --------------
ha是主节点名称,192.168.0.2/24/eth0是对外虚拟服务IP/掩码/网卡接口,apache表示资源名称,用来启动及停止apache服务的脚本,,放在resource.d 目录中,如果没有你也可以自己编写shell 脚本实现某服务的 start 和 stop 操作。

   3.3 配置 ha.cf
        ha.cf在两个节点上稍有不一样
           ha(192.168.0.10)配置如下:
    #cat ha.cf
  --------------
    auto_failback off
    #说明:主节点重启成功后,资源是自动拿回到主节点还是等到副节点down调后拿回资源
    node ha
    node ha2
    #说明:节点名称,与uname –n保持一致。是否主节点与此位置的先后顺序无关。而是在haresources里指定
    bcast eth0
    #说明:采用eth0的udp广播用来发送心跳信息,建议在副节点不只一台时使用
    I#ucast eth0 192.168.0.20
    #说明:采用网卡eth0的udp单播来通知心跳,ip应为对方IP(未验证)
    #mcast eth0 225.0.0.1 694 1 0
    #说明:采用udp多播播来通知心跳,建议在副节点不只一台时使用
    #注:广播,单播,多播,以上三种任选其一即可
  --------------


    ha2(192.168.0.20)配置如下:
    #cat ha.cf
  --------------
    auto_failback off
    #说明:主节点重启成功后,资源是自动拿回到主节点还是等到副节点down调后拿回资源
    node ha
    node ha2
    #说明:节点名称,与uname –n保持一致。是否主节点与此位置的先后顺序无关。而是在haresources里指定
    bcast eth0
    #说明:采用eth0的udp广播用来发送心跳信息,建议在副节点不只一台时使用
    #ucast eth0 192.168.0.10
    #说明:采用网卡eth0的udp单播来通知心跳,ip应为对方IP(未验证)
    #mcast eth0 225.0.0.1 694 1 0
    #说明:采用udp多播播来通知心跳,建议在副节点不只一台时使用
    #注:广播,单播,多播,以上三种任选其一即可
  --------------
4.设置主服务器和备份服务器时间同步
     虽然Heartbeat不要求在两个服务器上使系统钟同步主要和备份服务器,但是系统时钟应该在的几十秒之内,否则在高可用性服务的环境下会产生故障。 在在两个系统启动Heartbeat之前,你应该人工检查并且放置系统时间(使用date命令)。 关于一种更好的长期的解决的方法你应该在两个系统上使用NTP软件同步钟。
5.验证
可以把 heartbeat 服务加入 chkconfig
#chkconfig –add heartbeat
#chkconfig heartbeat on
启动ha和ha2的heartbeat:
    #/etc/init.d/heartbeat start 或 service heartbeat start
    通过ifconfig查看eth0:0的192.168.0.2会在某台服务器上分配上了,说明这台目前是活动服务器,而另外一台没有分配上。
当浏览器访问http://192.168.0.2时,是会返回目前活动服务器上的apache服务响应

常见的错误:
    通过ifconfig发现两台机器都分配上了eth0:0的192.168.0.2这个虚拟IP,并在/var/log/syslog中产生大量日志:
    WARN: nodename ha uuid changed to ha2
    ERROR: should_drop_message: attempted replay attack
    可能原因:ha和ha2的uuid改变引起,可能ha2是通过VMware克隆复制方式产生的或hostname设置在安装heartbeat之后
    解决方案:让uuid重新生成,可以先卸载heartbeat,删除/var/lib/heartbeat目录(uuid文件就在这个目录下,该目录在卸载时不被删除,需手动删除,如果不手动删除,重新安装还会使用原来uuid)

论坛徽章:
0
2 [报告]
发表于 2008-11-19 20:45 |只看该作者
通过ifconfig发现两台机器都分配上了eth0:0

这个问题说明你的心跳信息配置的有问题,或者是网络问题引起的心跳信息没有达到对方
同时你也没有做apache服务的暂停的切换测试,
有问题就一起来学习呵呵

论坛徽章:
0
3 [报告]
发表于 2008-11-27 09:24 |只看该作者
学习,过几天也要配这东西。

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-03-10 06:20:00
4 [报告]
发表于 2008-11-27 12:25 |只看该作者
他说的常见错误是从别人的文章复制过来的,我做的时候没遇到这种错误,反而是启动时老是提示authkeys错误不匹配的问题,后来检查是格式或者权限引起的。

还有个需要注意的问题就是测试http服务时,关闭或重启一个节点可以顺利进行故障切换(我开启了fail_back功能),可以看到浮动IP和磁盘资源切换到另一节点,但是两台机要是同时重启或同时开机就麻烦了,会都去争抢IP、磁盘资源。

最后就是heartbeat针对故障切换的是通过心跳线的侦测,如果http服务出问题了,他是不会进行切换的。

论坛徽章:
0
5 [报告]
发表于 2008-12-05 18:38 |只看该作者
原帖由 hbwangting 于 2008-11-27 12:25 发表
他说的常见错误是从别人的文章复制过来的,我做的时候没遇到这种错误,反而是启动时老是提示authkeys错误不匹配的问题,后来检查是格式或者权限引起的。

还有个需要注意的问题就是测试http服务时,关闭或重启 ...


对1.X模式下是不监测资源的,在2.X里面可以监测资源,但还是不可以监测网卡状态。

论坛徽章:
0
6 [报告]
发表于 2008-12-05 19:39 |只看该作者
这只是集群的前面一小部分。

论坛徽章:
0
7 [报告]
发表于 2009-03-02 19:37 |只看该作者
由于redhat rhcs 配置要求较高,heartbeat 是个不错的选择,heartbeat R1-style 我认为在实际中用处不大,官方主要支持的切换
1.启动(包含拔电源)
2.停止heartbeat服务(主停)
3.拔网线(这点许多用户在实际测试做不到,用ipfail)
我前一段时间刚好实施一个项目,使用R2-style
1.建议首先使用r1配置好相应的资源,再改换到R2-style
2.我认为主要r2打开crm,这样能监控单个资源
3.拔网线必须使用pingd(R2-style)删除ipfail增加
respawn root /usr/lib/heartbeat/pingd -m 100 -d 5s -a pingd
4.转换haresources 到cib.xml
rm -rf /var/lib/heartbeat/crm/cib.xml*
/usr/lib/heartbeat/haresources2cib.py --stout -c ha.cf haresources
这样就得到了cib.xml
5.修改全局变量(cib.xml)
default_resource_stickiness=100,default_fail_resource_stickines=-100
为了拔网线马上切换必须增加下列
<rsc_location id="my_resource:connected" rsc="my_resource">
  <rule id="my_resource:connected:rule" score="-INFINITY" boolean_op="or">
    <expression id="my_resource:connected:expr:undefined"
      attribute="pingd" operation="not_defined"/>
    <expression id="my_resource:connected:expr:zero"
      attribute="pingd" operation="lte" value="0"/>
  </rule>
</rsc_location>
注:rsc="my_resource"改成含vip资源的group或IP资源

6.auto_failback 在r2-style 对应的是cib.xml里的default_resource_stickiness
定义为0等于auto_failback on这是必须注意的
7.相应的资源服务停止的切换主要通过ocf或lsb的风格监控,能否切换及次数主要是根据score来计算的
一般上述参数停止服务时heartbeat会重启2-3次服务,如起不来服务再切换到备机
总的来说,一项资源(或者资源组)在一个节点运行迁移到另一个节点之前,可以失败的次数的计算公式可以如下表示:

(nodeA score - nodeB score + stickiness)/abs(failure stickiness),即为A节点分数减去B节点分数,再加上资源运行分数后得到的总分数,除以资源失败分数的绝对值。节点的得分:
node+resource+failcount*failure具体可以参考linux-ha-org网站score的阐述

论坛徽章:
0
8 [报告]
发表于 2009-03-02 20:10 |只看该作者
rhcs感觉蛮罗嗦,尤其是fence那块,rhel5.1版本,感觉rhcs还在整合的过程中,感觉有很多的组件在工作,总体上不如heartbeat紧凑。

heartbeat v2版本还是比较好用的,就是在监控service的状态时,如果service的接口不是严格符合heartbeat的标准,那么对service 的状态监控可能不准确。

论坛徽章:
0
9 [报告]
发表于 2009-12-23 17:05 |只看该作者
原帖由 skczcm 于 2009-3-2 19:37 发表
由于redhat rhcs 配置要求较高,heartbeat 是个不错的选择,heartbeat R1-style 我认为在实际中用处不大,官方主要支持的切换
1.启动(包含拔电源)
2.停止heartbeat服务(主停)
3.拔网线(这点许多用户在实 ...


兄弟按你做法,服务开启后,都没有IP地址???

论坛徽章:
5
CU大牛徽章
日期:2013-03-14 14:18:04CU大牛徽章
日期:2013-03-14 14:18:06CU大牛徽章
日期:2013-03-14 14:18:09CU大牛徽章
日期:2013-03-14 14:18:10CU大牛徽章
日期:2013-03-14 14:18:12
10 [报告]
发表于 2009-12-31 08:47 |只看该作者
看起来比VCS简单点,啥时候玩玩。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP