本文详细介绍了RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例。DRBD+Heartbeat是目前运维实现双机安装的主要方式,由于配置繁琐,而针对不同服务的配置也有所不同。本文专门针对CentOS 5.5上的Oracle 10 R2的双机安装。

编者按:本文详细介绍了RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例。DRBD+Heartbeat是目前运维实现双机安装的主要方式,由于配置繁琐,而针对不同服务的配置也有所不同。本文专门针对CentOS 5.5上的Oracle 10 R2的双机安装。

1、操作系统版本:Red Hat Enterprise Linux Server release 5.5 (Tikanga)

2、Drbd、Heartbeat 文件版本及文件名列表(本人已经将以下文件打包为Heartbeat3.0.3.tar.bz2 ):

Cluster-Resource-Agents-agents-1.0.3.tar.bz2

drbd-8.3.8.1.tar.gz

Heartbeat-3-0-STABLE-3.0.3.tar.bz2

Load drbd modules

Pacemaker-1-0-Pacemaker-1.0.9.tar.bz2 Pacemaker-Python-GUI-pacemaker-mgmt-2.0.0.tar.bz2

Reusable-Cluster-Components-glue-1.0.6.tar.bz2

3、网络配置(双网卡采用BOND模式)

RHEL5.5系统安装完成之后需要修改网络配置,首先将各节点中eth0、eth1分别设置为静态IP。修改节点hosts文件,内容如图

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第1张

同时修改各节点/etc/sysconfig/network文件,将HOSTNAME一行的内容改为节点对应的主机名,如图(以node2为例)

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第2张

4、节点名及存储分配

a、主机名及IP

====Node2====
Hostname: node2.localdomain
Ip:10.109.1.38  
====Node3====
Hostname: node3.localdomain
Ip: 10.109.1.39

b、DRBD镜像分区:

资源名称:oradata设备:/dev/drbd0

挂载点:/oradata (存放Oracle实例)

c、浮动主机名及IP

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.37

#p#

5、安装Heartbeat

进入Linux根目录

cd /

建立HA目录

mkdir Ha

上传 Heartbeat3.0.3.tar.bz2文件到HA目录

进入HA目录

cd /HA/

5.1解压Heartbeat压缩包,得到后续安装需要的各个安装文件

tar -jxvf Heartbeat3.0.3.tar.bz2

编译的顺序是:先Cluster Glue,再Resource Agents,然后才是Heartbeat。

解压Reusable-Cluster-Components

tar -jxvf Reusable-Cluster-Components-glue-1.0.6.tar.bz2

进入Reusable-Cluster-Components-glue-1.0.6目录

cd Reusable-Cluster-Components-glue-1.0.6

打开lib/stonith/main.c文件

vi lib/stonith/main.c

编辑:

  1. 找到其64行,将其注释掉。
  2. 找到其76到81行全部注释掉。
  3. 找到其390行,将其注释

使用以下两个进行配置

./autogen.sh
./configure LIBS='/lib/libuuid.so.1'

使用如下命令创建Heartbeat管理用户:

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.370

使用如下命令编译并安装:

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.371

5.2解压Cluster-Resource-Agents

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.372

进入Cluster-Resource-Agents-agents-1.0.3目录

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.373

使用如下命令配置、编译并安装

./autogen.sh ./configure
====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.371

5.3解压Heartbeat-3-0-STABLE

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.375

进入Heartbeat-3-0-STABLE-3.0.3目录

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.376

首先执行如下命令进行配置

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.377

此时系统会报一个hbaping.lo错误,我们需要使用如下一组命令对hbaping.loT文件进行改名操作:

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.378

之后再次执行以下两条命令进行安装操作,应该就不会报错了。

====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.371

使用cd /usr/etc/命令进入/usr/etc/目录中

使用cp -R ha.d/ /etc/命令将/usr/etc/ha.d全部复制到/etc/目录中

使用rm -rfv ha.d删除/usr/etc/中整个ha.d目录

使用cd /etc/命令进入/etc/目录中

使用ln -s /etc/ha.d /usr/etc/ha.d命令创建/etc/ha.d到/usr/etc/ha.d的软连接文件。

5.4 解压Pacemaker-1-0

cd /0

进入Pacemaker-1-0-Pacemaker-1.0.9目录

cd /1

执行如下命令配置、编译并安装

./autogen.sh ./ConfigureMe configure
====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.371

5.5解压Pacemaker-Python-GUI

cd /3

进入Pacemaker-Python-GUI-pacemaker-mgmt-2.0.0目录

cd /4

首先执行如下命令

cd /5

使用rpm命令在RHEL5.5安装光盘中安装gettext-devel、intltool包,具体命令如下:

cd /media/RHEL_5.5\ i386\ DVD/Server/ rpm -ivh gettext-devel-0.14.6-4.el5.i386.rpm rpm -ivh intltool-0.35.0-2.i386.rpm

之后再次进入Pacemaker-Python-GUI-pacemaker-mgmt-2.0.0目录

cd /4

执行如下命令:

./ConfigureMe configure autoreconf -ifs ./bootstrap
====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.371

使用passwd命令设置 hacluster用户口令

将hbmgmtd复制到/etc/pam.d/目录

cd /9

6、安装DRBD

使用tar zxvf drbd-8.3.8.1.tar.gz解压该文件

使用cd /media/RHEL_5.5\ i386\ DVD/Server/进入光盘挂载目录中

使用rpm依次安装内核相关的源码包

mkdir Ha0

使用cd drbd-8.3.8.1命令进入drbd-8.3.8.1目录中依次执行如下命令配置、编译并安装

./autogen.sh ./configure --prefix=/usr --localstatedir=/var --sysconfdir=/etc/ --with-km
====Node1====
Hostname: node1.localdomain
Ip: 10.109.1.371

使用chkconfig --add drbd命令创建drbd服务启动脚本

使用chkconfig --add heartbeat命令创建heartbeat服务启动脚本

使用chkconfig heartbeat off命令关闭heartbeat服务

使用chkconfig drbd off命令关闭drbd服务

使用cat Load\ drbd\ modules >> /etc/rc.d/rc.sysinit命令将Load drbd modules中的内容添加到rc.sysinit系统文件的***部分,以便系统启动时能自动将drbd.ko驱动模块加载到核心中,正常使用drbd服务。(该步逐在RHEL5.5中需要省略,否则drbd服务将无法正常启动)。

#p#

7、配置DRBD

7.1、修改各节点主机DEBD配置文件/etc/drbd.d/global_common.conf中usage-count 的参数为no,如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第3张

完成后存盘退出。

7.2、在各节点主机中创建文件/etc/drbd.d/oradata.res,并在oradata.res文件中添加如下内容:

mkdir Ha2

如图例:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第4张

7.3、初始化分区

在各节点上执行drbdadm create-md oradata命令,初始 化分区(创建meta data信息),这里的oradata即为配置文件中的资源组名称。

7.4、启动服务在两台节点服务器上启动drbd服务。如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第5张

之后用cat /proc/drbd 或 service drbd status 查看当前状态,出现下图信息说明DRBD服务已经正常启动了,如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第6张

※ 注意,现在两机器都是处于Secondary,即备机状态,还进行数据同步。

7.5、设置primary主机

在确认作为主数据服务器的机器上执行:

mkdir Ha3

这样,将把node1作为主机,把vda5中的数据以块的方式同步到node2中。可再次查看状态:

mkdir Ha4

从蓝色比较的 地方,可区分主机在DRBD集群中的位置。使用下面的命令也可确认:

mkdir Ha5

把 drbd服务设置为自启动方式:

mkdir Ha6

至此,镜像分区已创建完成。

最终同步完 成后,两机器drbd的状态会变为:

mkdir Ha7

7.6、DRBD中的split brain的处理

split brain实际上是指在某种情况下,造成drbd的两个节点断开了连接,都已Primary状态来运行。这通常发生在主节点断开,而备节点手动修改数据 后,因meta data数据不一致的情况。当drbd某primary节点连接对方节点准 备发送信息的时候如果发现对方也是primary状态,那么会会立刻自行断开连接,并认定当前已经发生split brain了,这时候他会在系统日志中记录以下信息:“Split-Brain detected,dropping connection!”当发生split brain之后,如果查看连接状态,其中至少会有一个是StandAlone状态,另外一个可能也是StandAlone(如果是同时发现split brain状态),也有可能是WFConnection的状态。

DRBD可在配置文件中设定发生split brain时的处理机制,但这可能与实际情况不一致,不建议使用。若没有配置split brain自动解决方案,我们可以手动来处理。

首先我们必须要确定哪一边应该作为解决问题后的primary(也就是拥有***数据的一边).一旦确定好这一点,那么我们同时也就确定接受 丢失在split brain之后另外一个节点上面所做的所有数据变更了。当这些确定下来后,我们就可以通过以下操作来恢复了:

(1)首先在确定要作为 secondary的节点上面切换成secondary并放弃该资源的数据:

mkdir Ha8

(2)在要作为primary的节点重新连 接secondary(如果这个节点当前的连接状态为WFConnection的话,可以省略)

mkdir Ha9

当作完这些动作之后,从新的primary到secondary的re- synchnorisation会自动开始(重新同步)。

7.7、格式化分区

7.7.1、与软RAID、LVM等类似,要使用DRBD 创建的镜像分区,不是直接使用/dev/vda5设备,而是在配置文件中指定的/dev/drbd0。同样的,不必等待初始化完成后才使用drbd0设 备。

cd /HA/0

7.7.2注意事项

需要注意,drbd0设备只能在Primary一端使用,下面的操作都是会报错的:

cd /HA/1

另外,为避免误操作,当机器重启后,默认都处于Secondary状态,如要使用 drbd设备,需手动把其设置为Primary

7.7.3、挂载

先把drbd0设备挂载到/oradata目录中:

cd /HA/2

#p#

8、安装ORACLE10.2

8.1、分别在各节点配置Linux内核参数。

以root身份登录后,进入etc目录,打开sysctl.conf文件,然后将以下内容写入图中位置:

cd /HA/3

这些参数都可按照该列表填写,在这些参数中的shmmax(红色标注)则有自己的计算方法:内存以G为单位,将其换算成Byte单位在乘以80%,例如;2G内存,换算公式为

2*1024*1024*1024*80%=1717986918

8.2、创建oracle安装要求的用户名和用户组,并修改oracle用户环境变量(即修改oracle用户目录下的.bash_profile文件)

8.2.1、在两个节点中分别执行如下groupadd oinstall、groupadd dba、useradd -m -g oinstall -G dba oracle命令,创建oracle用户,如图

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第7张

8.2.2、在各节点修改oracle环境变量, 以oracle用户身份,打开.bash_profile文件将如下内容添加到环境变量中,如图

cd /HA/4

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第8张

8.3、创建ORACLE安装挂载点

在各oracle 安装节点使用如下命令创建DRBD资源挂载点,并修改挂载点属组

cd /HA/5

8.4修改IP地址为浮动IP并设置DEBD资源为primary

在安装oracle10G2的机器上首先需要将IP地址及主机名修改为未来浮动IP及主机名(这样主要是为了未来双机应用时oracle能顺利切换,并正常启动),执行drbdadm primary oradata命令 设置DRBD资源为primary如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第9张

执行drbdadm role oradata查看状态,如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第10张

8.5、挂载DRBD资源并修改资源属组

执行mount /dev/drbd0 /oradata命令挂载DRBD资源,如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第11张

之后执行mount命令查看信息,如图

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第12张

信息中出现/dev/drbd0 on /oradatatype ext3 (rw)行,说明资源挂载正常,之后执行

cd /HA/6

命令修改oradata属组,并使用ls -l查看信息,如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第13张

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第14张

8.6、安装oracle10G2数据库

具体可以查看其他文档。

8.7、***配置

8.7.1、修改listenter.ora文件,添加如下内容,解决双机切换报监听ORA-12514错误问题。

cd /HA/7

如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第15张

8.7.2、修改主机名为原节点主机名及IP。

8.7.3、终止在用oracle节点的各oracle进程,并卸载掉oracle资源;

在另一节点中挂载资源并启动oracle应用进程并进行测试。如果没有问题可进行HA的配置。

#p#

9、heartbeat的配置

9.1、配置authkeys

这里我用随机数来获得密钥,命令如下:

cd /HA/8

效果如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第16张

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第17张

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第18张

9.2、配置ha.cf

使用命令vi /etc/ha.d/ha.cf编辑配置文件,修改为如下内容:

cd /HA/9

之后存盘退出。如图

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第19张

9.3、同步节点HA配置文件

执行# /usr/share/heartbeat/ha_propagate命令,并安提示输入同步节点主机root账户密码,如图

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第20张

9.4、启动heartbeat

使用如下命令在两节点上启动heartbeat :

tar -jxvf Heartbeat3.0.3.tar.bz20

如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第21张

9.5、配置DRBD+Oracle的HA资源。

9.5.1、执行命令

tar -jxvf Heartbeat3.0.3.tar.bz21

或者

tar -jxvf Heartbeat3.0.3.tar.bz22

关闭heartbeat的STONITH支持,避免启用了stonith而集群中又没有stonith资源时,集群中的资源都是无法启动的问题。

9.5.2、清空旧配置文件,以crm 交互方式提交如下命令:

tar -jxvf Heartbeat3.0.3.tar.bz23

清空旧配置文件。

9.5.3、关闭quorum

HA中有quorum的概念,即集群中必须有一半的节点处于online的状态,则集群被认为是have quorum(可以认为是达到合法节点数要求)。如果少于一半的节点在线,那么HA认为集群达不到节点数要求,从而拒绝启动集群中的资源。 但是这种策略对于2个节点的集群明显是不合理的,所以就会发生当2个节点的集群其中一个节点失效时所有的集群都无法启动的情况。
同样的,也关闭 STONITH,执行以下两条命令即可关闭quorun及STONITH支持

tar -jxvf Heartbeat3.0.3.tar.bz24

9.5.3、使用pacemaker进行HA资源配置

把DRBD设置为主备资源,其他oracle资源放在同一个组里面,并通过“顺序”、“协同”等限制条件让两资源配合运行。根据监控的情况,加入 start 超时、monitor 间隔时间等操作。
进入crm 交互模式:

tar -jxvf Heartbeat3.0.3.tar.bz25

然 后在configure状态下输入以下内容:

tar -jxvf Heartbeat3.0.3.tar.bz26

***用commit 提交即可。

说明:

a、根据DRBD官网的资料,ocf:heartbeat:drbd 已经被丢弃,不建议使用,故用ocf:linbit:drbd 代替;

b、IP的设定RA,用ocf:heartbeat:IPaddr2,其用 ip 命令设定虚拟IP,虚拟IP生效后,用ifconfig命令看不到,可用ip addr 查看;

c、输入上述命令时,可能会提示警 告,start、stop的超时时间少于建议值等,这可根据应用启动、停止的实际环境在“操作”中加入(可参考oracle_instant 资源);

d、 ms 是设置“主备资源”;

e、colocation 是设置“协同”限制,即group_oracle和ms_drbd_oracle必须在同一台机器上运行,并且若ms_drbd_oracle不能作为 Master运行时,不会运行group_oracle,相反group_oracle的状态不会影响ms_drbd_oracle;

g、 order 是设置“顺序”限制,即先激活ms_drbd_oracle资源(把drbd设备设置为primary状态),然后再启动group_oracle组资 源;

f、挂载操作中,/dev/drbd/by-res/oradata是为了方便使用,由drbd创建的一个指向/dev/drbd0的链接;

h、 如果您输入的命令比较长,可以用“\”调到下一行继续,但是必须注意,下一行前面的空白只能用空格,不能用Tab等字符。

配置提交后,两资源会自动运行(根据全局配置,有延迟),也可手动使用如下命令启动资源:

tar -jxvf Heartbeat3.0.3.tar.bz27

9.6、HA的管理命令

9.6.1、查看HA状态,执行如下命令:

tar -jxvf Heartbeat3.0.3.tar.bz28

执行效果如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第22张

9.6.2、手动切换,执行如下命令

tar -jxvf Heartbeat3.0.3.tar.bz29

如图

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第23张

切机前资源均在node3.localdomain上,执行命令后再次执行crm status命令可以看到资源已经全部被node2.localdomain接管。如图

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第24张

9.7、维护

有时候,我们需要对当前主机进行维护,这时,可先把资源迁移到备机上,然后把主机设置为“非管理”的 standby状态,如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第25张

使用鼠标点击图中standby即可将选中主机设置为“非管理”状态,如图:

RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例  Oracle10R2双机安装 5.5 第26张

之后,就可以把主机上的heartbeat服务关掉,甚至关闭该机器或进行维护的工作。

来源:http://blog.chinaunix.net/u/6262/showart.php?id=2353394

感谢解宝琦的投递。

【编辑推荐】

  1. 使用GFS和DRBD在CentOS 5.5上进行Samba CTDB集群部署
  2. 生产环境下的MySQL数据库主从同步总结
  3. Heartbeat的概念

转载请说明出处
知优网 » RHEL 5.5+DRBD+heartbeat+Oracle10R2双机安装实例

发表评论

您需要后才能发表评论