Jul 9

[原]构建Heartbeat 2.1.3 GUI+DRBD+Oracle 10g 双机互备集群 晴

linuxing , 23:14 , 网络服务 » HA , 评论(14) , 引用(0) , 阅读(38562) , Via 本站原创 | |
    我已经写过不止一篇关于Heartbeat 2.x 配置方法的文档,包括1.x style和2.x style的配置方式、GUI 配置、双机互备集群等等,详细可见分类中“HA”部分。那为什么今天我还要再次重复类似的内容呢?原因有几个,例如:Heartbeat 2.1.3 中的Bug、DRBD resource agent 的Bug,Heartbeat 2.x 与 DRBD 的配合等。这些内容在我下面的文档中都会提到。
    另外,特别需要说明的是,目前Heartbeat 最新版本是3.x,已停止对2.x 的支持(包括官网都已改版)。这也是导致我在使用Heartbeat 2.x 时遇到问题,可供参考资料较少的原因之一。当然,Heartbeat 2.x 与 3.x 的区别实际并不是特别大,很多东西还是可以相互借鉴、参考的。

一、准备工作
    如果您之前没有配置过Heartbeat 2.x,甚至不知道什么是HA(高可用集群)。那我建议您暂时不要继续往下看,可先看看我过往写的一些资料,这些都在分类中“HA”部分中,例如:
[原]heartbeat 2.x基础概念
[原]heartbeat 2.x基础架构
[原]使用hb_gui 配置heartbeat
[原]使用heartbeat配置双机互备集群
    此外,由于本文将会构建的是用DRBD实现的镜像磁盘数据共享方式集群,而区别于之前日志[原]使用heartbeat配置双机互备集群中模拟的共享盘柜方式。所以,在构建HA集群前,当然需要先把DRBD配置完成。可参考:[原]使用DRBD创建镜像分区一文。
原理性、基础性的东西准备完成后,即可进行下面的工作。(下面的内容主要描述需特别留意或修改的地方,不会完全以tutorial 方式进行)。
※ 关于RA
Heartbeat 2.x 支持多种资源代理(Resource Agent,简称RA),其中最常见的是lsb和ocf/heartbeat。这些RA实际上就是一些脚本,可根据脚本运行的结果提交给CRM分析和处理。不过,RA很重要,除了一些逻辑错误设定外,在配置heartbeat不成功时,大部分原因都是由于RA脚本的兼容性等问题。
例如,我在之前的[原]使用heartbeat配置双机互备集群一文中,例如RA启动、监听、关闭Httpd、Mysql 都很正常。但在本次的测试期间,drbd、oracle、oralsnr 三个ocf/heartbeat 格式的RA都有问题。
所以,自Heartbeat 3.0开始,把Resource Agent作为一个独立的项目来处理。
官方网站:http://hg.linux-ha.org/agents
使用参考:Resource Agents
RA 的参数配置非常重要,使用前请多查看帮助文档。

1、系统环境
引用
操作系统:Asianux 3.0 SP2 for x86_64
DRBD 版本:8.3.8
Heartbeat 版本:2.1.3
Oracle 版本:10.2.0.4
两服务器:
  drbd1.linuxfly.org:192.168.228.133
  drbd2.linuxfly.org:192.168.228.134
DRBD 镜像分区:
  资源名称:oradata
  设备:/dev/drbd0
  挂载点:/oradata (存放Oracle实例)

2、Heartbeat 版本
※ 为什么不使用Heartbeat 3.x
虽然现在Heartbeat 最新版本是3.0.3,但是,一方面我对Heartbeat 2.1.3比较熟悉,而且Heartbeat 3.0可供参考的资料太少;另外,Heartbeat 3.0实际上可理解为把2.x版本按功能拆分,并改用Cluster Glue作为集群管理工具的升级版。所以,Heartbeat 2.x 与 3.0 有很多内容都是可以借鉴和参考的。最关键的一点是,我暂时还找不到现成的Heartbeat 3.0.3 rpm 包(还有很多依赖包),这些将会给后续的配置带来很多不可预知的问题,所以,我还是决定用2.x版本。
Heartbeat 2.x 的安装,我还是会使用CentOS提供的源,以yum 的方式进行,这非常的轻松。但是,目前还是2.1.3版本(Heartbeat 2.x 最后一个STABLE版是2.1.4,之后就跳到3.0了)。
目前,我使用的Heartbeat版本是:
引用
# rpm -qa|grep heartbeat
heartbeat-2.1.3-3.el5.centos
heartbeat-devel-2.1.3-3.el5.centos
heartbeat-stonith-2.1.3-3.el5.centos
heartbeat-ldirectord-2.1.3-3.el5.centos
heartbeat-pils-2.1.3-3.el5.centos
heartbeat-gui-2.1.3-3.el5.centos

因2.1.4与2.1.3差别很小,所以,我最终还是选择直接yum 的方式安装。不过,下面提到的多个Bug在2.1.4上也存在,因此,内容不会重复。(您可以选择参考下文的内容自行修复这些Bug,或直接用我最后在附录中提供的修正后rpm包来安装)

二、关键配置和Bug修复
在已完成上述我提到的系统环境,包括两集群主机的主机名、/etc/hosts文件配置、DRBD安装及配置、Oracle双机环境部署等工作后,即可进行Heartbeat 2.x 的配置。
1、常规设定
这里指的是两集群主机/etc/ha.d目录中的authkeys和ha.cf 配置文件,它们在各节点的内容都是相同的:
引用
# grep -v '^#'  authkeys
auth 2
1 crc
2 sha1 HI!
3 md5 Hello!
# grep -v '^#' ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 30
initdead 30
udpport 694
bcast   eth0            # Linux
auto_failback on
node drbd1.linuxfly.org
node drbd2.linuxfly.org
compression     bz2
compression_threshold 2
crm respawn

此外,为了避免启动时报警告信息,虽然haresources文件在2.x style配置文件中是没用的,但还是在各节点上创建一个空文件:

# touch haresources

2、修改heartbeat启动脚本
heartbeat的启动脚本指的是/etc/init.d/heartbeat,这Bug涉及两方面的内容:
a、crm 临时目录的问题
该问题在之前的文章中已多次提到,请见这里。修改的内容就是下面红色标记部分:
引用
StartHA() {
  EchoNoNl "Starting High-Availability services: "
......
  if
   [ ! -d $RUNDIR/heartbeat/ccm -o ! -d $RUNDIR/heartbeat/crm ]
  then
......

b、heartbeat启动后,导致不能正常重启或关闭机器的问题
由于系统升级的原因,heartbeat启动脚本中chkconfig部分的定义不符合要求,导致不能创建K05heartbeat的链接。换句话说,当heartbeat 已经启动,并手动重启或关闭机器时,不会预先关闭heartbeat进程,而在终止网络、挂载等进程后,heartbeat不断的报错,必须强制关机。
发生该问题时,关机途中,您会在主屏幕上看到类似下面的报错信息:
点击在新窗口中浏览此图片
解决方法是,把heartbeat启动脚本中,下面的内容:
引用
# chkconfig: 2345 75 05

修改为:
引用
# chkconfig: - 75 05

然后重新创建启动服务表:

# chkconfig --del heartbeat
# chkconfig --add heartbeat

可用下面的命令确认修改是否生效:
引用
# find /etc/rc.d/ -name 'K05heartbeat'
/etc/rc.d/rc4.d/K05heartbeat
/etc/rc.d/rc6.d/K05heartbeat
/etc/rc.d/rc1.d/K05heartbeat
/etc/rc.d/rc0.d/K05heartbeat
/etc/rc.d/rc2.d/K05heartbeat

3、创建GUI 管理用户
CRM 的用户似乎没有权限的划分,并且只能通过127.0.0.1从本机进行访问(没仔细研究)。所以,需要在各节点上给hacluster设置一下密码:

# passwd hacluster

4、drbd resource agent 的问题
如前文提到的,heartbeat 2.1.3 可使用多种drbd监控的RA,考虑到兼容性、扩展性等方面,我们将使用的是ocf/heartbeat格式的drbd RA。其文件存放在/usr/lib/ocf/resource.d/heartbeat/drbd,但该RA是基于DRBD 7.3的,不兼容8以上版本。原因是,DRBD 8以上版本的drbdadm中,丢弃了state参数,而用role代替:
引用
# drbdadm state oradata
'drbdadm state' is deprecated, use 'drbdadm role' instead.
Primary/Secondary

而drbd RA中正是依赖该命令的返回结果进行判断的,所以导致不兼容。该问题可参考以下两个链接:
[Ubuntu-ha] [Bug 369124] Re: heartbeat incompatible with drbd8-utils in jaunty
drbd heartbeat v2
解决方法,把/usr/lib/ocf/resource.d/heartbeat/drbd中下面部分的内容:
引用
drbd_get_status() {
        DRBD_STATE=$(do_drbdadm state $RESOURCE)

修改为:
引用
drbd_get_status() {
        DRBD_STATE=$(do_drbdadm role $RESOURCE)

※ 除了ocf/heartbeat 格式的drbd RA外,drbd rpm包本身也提供了heartbeat格式的drbddisk、drbdupper两个RA、linbit的drbd RA。
其中,heartbeat格式的drbddisk、drbdupper存放在/etc/ha.d/resource.d/目录下,若需使用请自行选择。(需修改其中的DEFAULTFILE 变量,drbddisk 用于加载drbd.ko模块,drbdupper用于设置primary设备。)
根据DRBD 8 的建议,从8.2开始,应使用其自带的drbd RA,路径为:/usr/lib/ocf/resource.d/linbit/drbd,在创建资源时,可选择linbit/drbd即可。


5、oracle/oralsnr resource agent 的问题
和上面的问题类似,heartbeat 2.1.3虽然自带有用于Oracle 的RA,但这两个RA在处理ORACLE_HOME 时都有问题。可参考以下链接:
Problems with oracle ocf-RA in heartbeat 2.1.2
解决办法是,使用新的RA:agents-1.0.3.tar.bz2。这个RA是当前Heartbeat 3.0.3使用的,不过,我之前已经说过Heartbeat 2.x 与 3.0 的关系,经测试,这两个RA也是兼容2.1.3的。
使用方法很简单,先把Agents解压,然后用新的RA覆盖旧文件即可:

# cp Cluster-Resource-Agents-agents-1.0.3/heartbeat/ora* /usr/lib/ocf/resource.d/heartbeat/

我这里提供这两个RA:

至此,Heartbeat 2.1.3监控DRBD、Oracle需修正的脚本Bug等都已完成,上述的操作都必须保证在集群中每个节点上完成。当然,您也可以在一个节点上修改后,拷贝到其他节点。接下来就可用hb_gui 进行配置。
※ 注意,并不是供Heartbeat 3.0.3使用的每个RA都能兼容2.x版本的,例如新的drbd RA在监控时就会报错,所以,在使用RA前需测试,甚至根据情况修改RA脚本。
内文分页: [1] [2]
Tags: , , ,
浆糊
2012/03/12 01:13
奇怪了,我装了heartbeat后,禁用主节点的网卡后,VIP,可以正常切换到备用节点;但是,激活主节点的网卡后,再禁用备用节点的网卡,主节点,备用节点,都不会接管VIP;即使备用激活节点的网卡,主、备节点,都不能接管任务,不会产生VIP,这是怎么一回事?
楼主能帮忙解释一下么?
linuxing 回复于 2012/03/22 11:29
feelback是否已启用?另外,日志中应该有告诉你原因的。
老箭
2011/03/22 16:29
版主,你提供下载的<<已修正上述各Bug的Heartbeat 2.1.4 rpm包>>,是不是不能安装在centos 5.4上啊?
linuxing 回复于 2011/03/24 12:14
可以的。
ak_birdofprey Email
2010/10/01 16:05
谢谢版主,提供这么好的文档,本人已经成功在REDHAT5.5上部署了。非常感谢。
linuxing 回复于 2010/10/01 23:20
^_^
ak_birdofprey Email
2010/09/25 15:21
谢谢您的回复,我已经将两个文件改为了浮动IP,但是ORACLE的EMCTl启动后,通过网页方式无法进行管理,不知道楼主如何解决,另外在做测试时,我先将未启动ORACLE的机器关机,之后将启动了ORACLE的机器直接关机,再单独启动那台先关掉的机器,结果DRBD状态始终是SECONERY状态,无法启动oracle服务,请帮忙
ak_birdofprey Email
2010/09/24 22:29
最简单的方式,就是你在某一台机器上把Oracle安装到DRBD的分区中。而另一台机器上建立与这台机器相同的用户名和环境配置即可。另外,拷贝 /etc/oratab文件到另一台机器上,这样就完整Oracle的部署了。
我已经这样做过了,但是将ORADATA挂载到另一主机时,ORACLE就无法启动监听了。不知道哥哥的双机listener.ora和tnsnames.ora是如何配置的呀。谢谢赐教。
linuxing 回复于 2010/09/25 10:23
lisnter.ora和tnsname.ora里面都改为浮动IP,不要用实际IP地址。
ak_birdofprey Email
2010/09/23 23:46
楼主说的:在已完成上述我提到的系统环境,包括两集群主机的主机名、/etc/hosts文件配置、DRBD安装及配置、Oracle双机环境部署等工作后,即可进行Heartbeat 2.x 的配置。其中的Oracle双机环境部署是不是指的Oracle RAC的部署呀,请详解。谢谢楼主指点
linuxing 回复于 2010/09/24 13:30
建议你详细看看HA部分中的内容,例如[原]安装红旗HA 4.1实现Oracle高可用 一文,因为HA的东西,原理都是一样的,我不想每次都重复类似的内容。而Oracle在HA环境中的部署,在HA部分的文章中都有很详细的介绍的。就是hosts文件、oracle配置文件等。
ak_birdofprey Email
2010/09/23 23:04
谢谢,能不能详细讲解下Oracle双机环境部署。本人DRBD已经可以工作,但安装ORACLE老是又有问题。谢谢
linuxing 回复于 2010/09/24 13:31
最简单的方式,就是你在某一台机器上把Oracle安装到DRBD的分区中。而另一台机器上建立与这台机器相同的用户名和环境配置即可。另外,拷贝/etc/oratab文件到另一台机器上,这样就完整Oracle的部署了。
ak_birdofprey Email
2010/09/23 21:27
谢谢您的回帖,问题是虚拟机启动之后直接宕机,问题已经解决了。是因为创建虚拟机的物理磁盘小了点,所以启动两台虚拟机就出问题了。目前将两个虚拟机放在不同的分区上就好了。现在的新问题是在node1伤安装完node2上也能同步,但是在node2伤ORACLE的监听无法启动。报ORA-12541错误,请讲下ORACLE双机监听的配置,行吗?谢谢您
ak_birdofprey Email
2010/09/20 10:34
谢谢您的回复。新的问题出现了。在安装ORACLE10.2时,使用BONDING配置网卡,ORACLE10.2安装程序报网络配置错误无法安装,之后禁用BONDING,将eth0网卡配置为静态IP。在DRBD的存储oradata中安装ORACLE10.2,重启机器后备机就死机了。备机启动的时候必须要将另一台机器的网卡禁用才能启动,启动后如果启用另一台机器的网卡,备机马上就死了,同时在另一台机器上报DRBD错误 512。请指点。谢谢您
linuxing 回复于 2010/09/20 13:35
死了?这是什么意思?机器失去响应了,还是重启?看后台日志,为什么原因导致的。DRBD上有IP的设置,看是否正确。
ak_birdofprey Email
2010/09/19 13:10
谢谢,这几天我一直在做实验,发现在执行完MAKE之后,在/heartbeat-3-0STABLE-3.0.3/lib/plugins/HBcomm文件夹中有个hbaping.loT的文件,直接改名成hbaping.lo之后make; make install不再报错。但是不知道HA能不能用。谢谢,目前已经把DRBD做好了。之后是先安装ORACLE10.2还是先配双机呀,还有您文中说的“顺序”、“协同”的问题,请您再详细讲讲。谢谢了。问下您是干什么工作的。好向您学习。呵呵
linuxing 回复于 2010/09/20 09:45
配置HA,都是先部署应用,然后再调试HA的。至于限制条件,看看heartbeat的wiki,2.x和3.x的原理基本是一样的。
分页: 1/2 第一页 1 2 下页 最后页
发表评论
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
记住我
昵称   密码   游客无需密码
网址   电邮   [注册]