Sun Cluster3.1下的Informix热备和互备Sun Cluster3.1下的Informix热备和互备
饮鸩止渴 发表于 2005年10月08日10时35分
http://blog.chinaunix.net/article.php?articleId=50794&blogId=6098
1 背景
Informix是一种实际项目当中使用比较多的,用户有时候会有把这种做双机热备的要求。Sun Cluster是Sun公司的集群软件,但是从3.0版以后,不再发布为Informix双机热备用的Agent。所以必须另想办法来在Sun Cluster 3下实现Informix双机热备。
虽然Sun Cluster不提供Informix数据服务的Agent,但是它提供了开发自己的Agent的工具,包括Agent Builder和GDS数据服务资源类型,以及相应的API。GDS全称是Generate Data Service,普通数据服务,是为用户的普通网络应用程序准备的配置类型,仅适用于Failover类型。
而Informix的特点就是,在宕机之后,只需要把进程简单的起来就可以继续使用,相当于一个普通的,需要公用存储的的普通网络应用程序。
2 配置办法
2.1 GDS资源类型
GDS资源类型的特点有如下几点:
1. 已经在Sun Cluster安装时自带,使用时注册一下即可
2. 适用于普通网络应用程序,非常方便用户自己的应用程序做高可用
3. 使用用户自己编写的脚本来启动、检测和中止应用程序
4. 用户脚本只要返回给GDS检测程序一个返回值即可,0为成功,否则失败
2.2 Informix
Informix虽然是一个大型,但是其使用方式跟普通网络应用程序很相似,都是通过命令带参数来启动、检查和关闭的
1. 启动
Informix的启动使用oninit命令即可,如果启动失败,会返回相应的错误代码,成功则返回0
2. 检测
onstat命令可以检测目前的运行状态,返回代码和oninit一样。如果要检查的更加详细,可以编写更复杂的脚本来检查
3. 关闭
关闭Informix用onmode –ky命令。
2.3 编写脚本
下面是3个脚本的简单示例:
1. 启动
#!/bin/ksh
CMD_STR="
setenv INFORMIXDIR /opt/informix
setenv INFORMIXSERVER xxdb
setenv ONCONFIG onconfig.xxdb
setenv DB_LOCALE zh_cn.gb
setenv CLIENT_LOCALE zh_cn.gb
/opt/informix/bin/oninit
"
su - informix -c "$CMD_STR"
return $?
2. 检测
#!/bin/ksh
CMD_STR="
setenv INFORMIXDIR /opt/informix
setenv INFORMIXSERVER xxdb
setenv ONCONFIG onconfig.xxdb
setenv DB_LOCALE zh_cn.gb
setenv CLIENT_LOCALE zh_cn.gb
/opt/informix/bin/onstat
"
su - informix -c "$CMD_STR"
return $?
3. 关闭
#!/bin/ksh
CMD_STR="
setenv INFORMIXDIR /opt/informix
setenv INFORMIXSERVER xxdb
setenv ONCONFIG onconfig.xxdb
setenv DB_LOCALE zh_cn.gb
setenv CLIENT_LOCALE zh_cn.gb
/opt/informix/bin/onmode -ky
"
su - informix -c "$CMD_STR"
return $?
注意,这3个脚本都是简单的示例,有如下几个需要注意的地方:
1. setenv当中设置了DB_LOCALE等语言参数,这是因为Informix如果语言不对,可能客户端不能连接
2. 程序中都返回了$?,这是在su –c命令当中最后一条命令的返回值
3. 在正式使用之前需要在两台主机上都进行手动执行的测试,成功之后才可以正式加入Sun Cluster的程序
2.4 Sun Cluster中的配置
1. 保存3个脚本到两台主机的相同目录,并测试在两台主机上的运行情况
2. 建立一个资源组,加上普遍配置:逻辑主机名、存储等
3. 在Cluster的资源组里注册一个GDS类型资源
4. 指定该资源的启动、检测和中止脚本为我们刚刚编写的脚本
5. 测试资源组的online和offline的功能是否正常
2.5 Informix双机互备的配置
双机互备在Sun Cluster里边是很简单的设置两个资源组即可,但是在Informix中,一台主机上运行两个实例是需要一些不同的配置的,所以有一些需要注意的地方:
1. 两个实例应该有不同的实例名
通过设置INFORMIXSERVER和ONCONFIG可以做到
2. 两个实例名的ONCONFIG文件中需要不同的参数
ROOTPATH、DBSERVERNAME自不必说,需要注意的是SERVERNUMBER必须是不同的数字
3. 两个实例不能使用相同的端口服务
因此,需要设置/etc/services文件中两个service名字和端口,例如:
sqlexec 8766/tcp
sqlexec2 8765/tcp
而在$INFORMIXDIR/etc/sqlhosts文件中,为两个实例分别指定不同的协议
阅读(769) | 评论(0) | 转发(0) |