`
yangzb
  • 浏览: 3470198 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

[HA]利于heartbeat构建Oracle高可用

阅读更多

Linux下有很多集群软件,不同程度的在企业的高可用和负载均衡环境中发挥着作用. Heartbeat作为Linux-HA项目组开发出来的一套开源软件,也可以为应用/系统提供高可用服务.官方网站这样描述它:

Heartbeat currently supports a very sophisticated dependency model for n-node clusters. It is both extremely useful and quite stable at this point in time. The following types of applications are typical:
• Database servers
• ERP applications
• Web servers
• LVS director (load balancer) servers
• Mail servers
• Firewalls
• File servers
• DNS servers
• DHCP servers
• Proxy Caching servers
• Custom applications
• etc.

相应版本可以从http://www.linux-ha.org/ 下载.
下面就让我们来搭建一套基于heartbeat的oracle双机热备体系.

物理需求:

两台主机(双网卡或者使用心跳线连接2-node),共享磁盘.

环境描述:

本次搭建在CentOS 4.4下,使用网卡eth1作为node互联. heartbeat.版本为2.1.4. 数据库版本为10.2.0.1,数据库文件创建在/oradata上,各nodeIP分配如下:

HA1– eth0:192.168.18.201 eth1:10.10.10.201
HA2–eth0:192.168.18.202 eth1:10.10.10.202
Active IP: 192.168.18.200

1. 分别在2节点安装heartbeat软件,我下载的是rpm包并打齐必要的依赖包.

heartbeat-2.1.4-2.1.i386.rpm
heartbeat-devel-2.1.4-2.1.i386.rpm
heartbeat-ldirectord-2.1.4-2.1.i386.rpm
heartbeat-pils-2.1.4-2.1.i386.rpm
heartbeat-stonith-2.1.4-2.1.i386.rpm
ipvsadm-1.24-6.i386.rpm
libnet-1.1.2.1-2.1.i386.rpm
…….>>

2.在2节点本地安装database softwore,并在一个节点上创建配置database.数据库文件需要创建到共享磁盘上.
3.在2节点上配置heartbeat.(需要用到的主要有3个配置文件. ha.cf/ authkeys/ haresources,分别在/etc/ha.d/路径下)
(1) ha.cf. HA服务配置文件

logfile /var/log/ha-log # Log file address
keepalive 2 # Heartbeat interval
deadtime 20 # dead time
warntime 10 # warning time
udpport 694 # Heartbeat port
bcast eth1 # Linux Heartbeat interface
auto_failback off # the failure node automatic comes back automaticly
node ha1 # list node
node ha2 # list node
ping 192.168.18.1 #check the node health status;
respawn hacluster /usr/lib/heartbeat/ipfail

(2) authkeys. 双机互联验证文件,本次搭建采用的是crc模式.

auth 1
1 crc

注意权限:chmod 600 authkeys
(3) haresources. 配置资源文件,这个是heartbeat提供服务的关键.

ha1 192.168.18.200 oradb

ha1:主节点名称
192.168.18.200: 提供的active ip
oradb:高可用服务,在本次搭建中,需要用oradb来实现节点切换后的database启动/停止.
Heartbeat将从/etc/init.d 或者/etc/ha.d/resource.d 来搜索这个脚本.
我将它放到/etc/ha.d/resource.d下,以下是个简化功能的script:

#!/bin/sh
# kevinyuan 2008/10/24
#It’s used to startup/shutdown oracle database
export ORACLE_BASE=/opt/oracle
export ORACLE_HOME=$ORACLE_BASE/product/10.2.0/db_1
export ORACLE_SID=ha
export PATH=/home/oracle/bin:$ORACLE_HOME/bin:$PATH
MOUNTDEV=/dev/sdb1
MOUNTPOINT=/oradata
case $1 in
start)
mount $MOUNTDEV $MOUNTPOINT
su – oracle –c “dbstart”
;;
stop)
su – oracle –c “dbshut”
fuser -k -m -v $MOUNTPOINT
umount $MOUNTPOINT
;;
*)
echo “Usage: $0 {start|stop}”
;;
esac

其中dbstart 和dbshut是调用了$ORACLE_HOME/bin下面的dbstart 和dbshut,作用是启动/停止数据库和监听.

3.数据库监听和tnsnames.ora配置
两节点上的Listener.ora 中IP可以配置成Active ip,这样在各个tnsnames.ora里面就需要使用这个Active ip,在本例为192.168.18.200.
也可以两节点上Listener.ora 中IP仍然使用各自真实IP,这样tnsnames.ora需要配置connect-time failover策略,如下:

HA =
(DESCRIPTION =
(ADDRESS_LIST =
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.201)(PORT = 1521))
(ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.18.202)(PORT = 1521))
)
(CONNECT_DATA =
(SERVICE_NAME = ha)
)
)

4. 简单测试

SQL> conn sys/mecoyoo@ha
Connected.
SQL> !hostname
Ha1

在ha1上,停掉网卡,然后重新连接sqlplus,查询

SQL> conn sys/mecoyoo@ha
Connected.
SQL> !hostname
Ha2

此时连接已经从ha1转移到ha2上.
Ha2:

ha2-> ps -ef|grep ora_|wc -l
17

Ha1:

ha1-> ps -ef|grep ora_|wc –l
1

基本功能得以实现,后续将进一步测试,看是否满足要求.

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics