Chinaunix

标题: linux cluster4.0双机配置请教 [打印本页]

作者: wind1211    时间: 2008-04-29 17:20
标题: linux cluster4.0双机配置请教
两台主机为rhas4+cluster4.0 ,一台为app应用服务器,一台为数据库服务器,两台互备,连接在共享光纤存储上。应用服务器安装应用程序app为主,oracle为辅;在数据库服务器上app为辅,oracle为主。数据文件存放在光纤存储上。
请问一下应该怎样规划app的安装和cluster的配置,对linux cluster概念有点晕。
问题:1.要对app实现双机,app是否安装在光纤存储上?
问题:2.oracle程序安装分别安装在两台主机的本地磁盘上,那么利用cluster怎么实现oracle双机,是不是同时只跑一个oracle数据库服务,当掉的话,cluster去启动另一台服务器的oracle,那app呢?
作者: jerrywjl    时间: 2008-04-29 17:20
问题:1.要对app实现双机,app是否安装在光纤存储上?
问题:2.oracle程序安装分别安装在两台主机的本地磁盘上,那么利用cluster怎么实现oracle双机,是不是同时只跑一个oracle数据库服务,当掉的话,cluster去启动另一台服务器的oracle,那app呢?


第一个问题:app应该和oracle一样都在两台主机上安装。
第二个问题:利用cluster实现oracle双机不是一句话就能说明的,不过的确是一台在运行服务,而另外一台就能够接管,这才叫做HA。

如果你的分数能够先兑现的话,我可以将自己写的RHEL4的HA配置给你,保证完全本人原创。相信至少能够起到比较好的参考作用。
别怪我势利,实在是因为CU上的悬赏信誉太差!虽然说不能百分百解决问题,但是我已经给了很多人至少是比较有用的建议,最后都没有下文不了了之。

LZ想好了,可以给我站内短信。

[ 本帖最后由 jerrywjl 于 2008-5-1 11:46 编辑 ]
作者: nczch    时间: 2008-04-30 01:09
双机互备,建两个failover
作者: wind1211    时间: 2008-05-01 01:34
嗯,我先试试。谢谢楼上
作者: wind1211    时间: 2008-05-02 20:44
标题: 再次请教
现在环境是这样的,RHAS4 U5两台,cluster4.0集群套件。HP460C刀片服务器两台(app,datadb),一台光纤交换机,一台MSA1000光纤存储,存储上划分了两个逻辑单元lun1,lun2,app机和datadb机都可以访问。
app机上运行app1服务(由4个后台进程组成),后台数据库为datadb机上的oracle数据库,现在要实现app机上的app1服务和datadb上的oracle都能够双机切换。
我是这样想的一个思路:
在app机上和datadb机上都安装oracle程序,将oracle数据文件放到光纤存储上的lun1,将app1程序安装在光纤存储上的lun2上
1.app机上,在lun2上划分分区,创建文件ext3系统,并创建/app1目录,将其挂载并安装app1程序
   datadb机上:在lun1上划分分区,创建ext3文件系统,挂载到/oradata并安装oralce数据实例
2. 在app机上配置cluster,首先创建share raw device(仲裁分区)/dev/raw/raw1,/dev/raw/raw2,并添加到/etc/sysconfig/rawdevices 文件中.
    启动system-config-cluster,命名集群为cluster-app,添加share raw devcie
    添加member,将成员app,datadb都加入进来
    然后针对每个memebert添加fence设备。
    然后添加failover domain并添加app、datadb这两个member
    创建文件系统资源,资源名称为APP1,文件系统为ext3,挂在点为/app1,设备名称/dev/sda2
    创建IP资源,也就是该app1运行的服务IP
    创建控制该服务的脚本资源(/app1/app.sh)
    最后创建该群集服务名为app1,并添加以上的资源
    然后拷贝app机上的cluster.conf到datadb机上
    启动集群
3.在datadb机上也用上述的方法来配置oracle服务的双机

问题1:我上述的想法可以实现吗app1和oracle的双机切换吗?
问题2:app1是java程序写的服务,这样需要在这两台机器上都要安装jdk,想问的是,我用app机在共享光纤存储上lun2上创建的/app1文件系统,datadb机可以mount吗? 同理,datadb机可以mount app机在光纤存储上创建的文件系统吗?
问题3:可以用ilo地址做心跳地址吗?
作者: wind1211    时间: 2008-05-03 20:07
建两个 failover domain试试
一个用来restart app机上的app    //*当app有问题时,只在app机上重启
一个用来reload datadb上的oracel    //*当oracel有问题时可以切换到app机上去
明天去试,再来贴结果
作者: dyingcc    时间: 2008-05-03 21:43
看着就可么复杂,不好维护吧
作者: wind1211    时间: 2008-07-30 20:11
标题: 双机测试结果成双机热被
我现在配置成两个failover domain与两个service,一个service 跑应用,另一个service 跑数据库(应用和service 是关联的)
但是启动双机后,结果并不时互备的模式,而是双机热备的模式,两个应用都运行在一台主机上,今天测试了一下双机切换,也可以切换,请问如下是我的cluster.conf文件 与clustat状态

<?xml version="1.0" ?>
<cluster config_version="6" name="Cluster_DB">
        <quorumd device="/dev/sdd2" interval="1" label="raw1" min_score="2" tko="10" votes="2">
                <heuristic interval="2" program="ping -c2 -t32 11.88.17.250" score="1"/>
        </quorumd>
        <fence_daemon post_fail_delay="0" post_join_delay="3"/>
        <clusternodes>
                <clusternode name="itsmdb" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="ilo_db"/>
                                </method>
                        </fence>
                </clusternode>
                <clusternode name="itsmapp" votes="1">
                        <fence>
                                <method name="1">
                                        <device name="ilo_app"/>
                                </method>
                        </fence>
                </clusternode>
        </clusternodes>
        <cman/>
        <fencedevices>
                <fencedevice agent="fence_ilo" hostname="11.88.30.200" login="Administrator" name="ilo_db" passwd="BP968SCA"/>
                <fencedevice agent="fence_ilo" hostname="11.88.30.201" login="Administrator" name="ilo_app" passwd="FPM9GJBA"/>
        </fencedevices>
        <rm>
                <failoverdomains>
                        <failoverdomain name="DB" ordered="1" restricted="1">
                                <failoverdomainnode name="itsmdb" priority="1"/>
                                <failoverdomainnode name="itsmapp" priority="2"/>
                        </failoverdomain>
                        <failoverdomain name="app" ordered="1" restricted="1">
                                <failoverdomainnode name="itsmapp" priority="1"/>
                                <failoverdomainnode name="itsmdb" priority="2"/>
                        </failoverdomain>
                </failoverdomains>
                <resources>
                        <ip address="11.88.17.94" monitor_link="1"/>
                        <fs device="/dev/sdd1" force_fsck="0" force_unmount="1" fsid="48148" fstype="ext3" mountpoint="/oraitsmdata" name="oraitsmdata" options="" self_fence="0"/>
                        <script file="/etc/init.d/oracled" name="oracled"/>
                        <ip address="11.88.17.93" monitor_link="1"/>
                        <fs device="/dev/sdc1" force_fsck="0" force_unmount="1" fsid="55636" fstype="ext3" mountpoint="/nmsapp" name="nmsapp" options="" self_fence="0"/>
                        <script file="/etc/init.d/nms" name="nms"/>
                </resources>
                <service autostart="1" domain="DB" name="DB">
                        <ip ref="11.88.17.94"/>
                        <fs ref="oraitsmdata"/>
                        <script ref="oracled"/>
                </service>
                <service autostart="1" domain="app" name="Nms">
                        <ip ref="11.88.17.93"/>
                        <fs ref="nmsapp"/>
                        <script ref="nms"/>
                </service>
        </rm>
</cluster>




[root@xjwlqywpt-itsmdb cluster]# clustat
Member Status: Quorate

  Member Name                              Status
  ------ ----                              ------
  itsmdb                                   Online, Local, rgmanager
  itsmapp                                  Online, rgmanager

  Service Name         Owner (Last)                   State         
  ------- ----         ----- ------                   -----         
  DB                   itsmdb                         started         
  Nms                  itsmdb                         started
作者: jerrywjl    时间: 2008-07-31 00:34
明天找一个DB跑CLUSTER的给你看看。哦,是今天!
作者: wind1211    时间: 2008-07-31 20:23
可以通过启动后再手工切换,使应用服务器跑应用,数据库服务器跑oracle服务,但是这样似乎和别的双机互备不一样,这么说吧,还不能算是双机,这是一个问题。

另一个问题,今天当我power off其中一台主机后,双机服务不能切换,日志报fenced failed之类的,会不会是调用fence设备出错(fence设备是hp的ilo),想问的是 心跳地址是否一定要能和hp的ilo地址通信(在同一网段)?
作者: jerrywjl    时间: 2008-07-31 21:18
一般情况下,心跳和服务在一条线路上;而fence必须要保证在另外一条线路上。这两个线路不能是一个网段,当然也不能说绝对不行,总之会有些问题。
作者: wind1211    时间: 2008-07-31 23:55
fence_ilo的网段 是11.88.30.0/24
心跳的地址:192.168.0.95 , 192.168.0.96
服务IP的网段:11.88.17.0/24
作者: jerrywjl    时间: 2008-07-31 23:58
这个配置应该没有什么太大问题。
作者: wind1211    时间: 2008-08-01 12:10
标题: 是不是因为fenced的问题呢?
现在只做一个服务的双机(oracle)
网卡宕和oracle服务宕都可以自动切换,唯有我手工power off跑oracle的节点时,oracle服务不能切换,另一台主机的messages日志不断的提示msg_receive_simple: Connection reset by peer

当我手工用fence_ilo命令测试:fence_ilo -a 11.88.30.201 -l Administrator -p EIFEJOEJ -o status 返回POWER is on success
用fence_ilo -a 11.88.30.201 -l Administrator -p EIFEJOEJ -o reboot返回:error: Command without TOGGLE="Yes" attribute is ignored when host power is off.
power_on: unexpected error   结果是11.88.30.201也没能重启成功,貌似是关机的效果
作者: 鬼才小科    时间: 2008-08-01 15:55
心跳线的跳数是一跳,就是TTL=1,不能经过路由等三层设备,最好能让两服务器有一条"专线"来连接...
作者: wind1211    时间: 2008-08-01 16:07
没有经过路由设备,心跳网卡是通过刀片柜上的交换机连接的,和直连没什么区别
作者: anli20080710    时间: 2008-08-01 22:52
提示: 作者被禁止或删除 内容自动屏蔽
作者: jerrywjl    时间: 2008-08-01 23:16
原帖由 wind1211 于 2008-8-1 12:10 发表
现在只做一个服务的双机(oracle)
网卡宕和oracle服务宕都可以自动切换,唯有我手工power off跑oracle的节点时,oracle服务不能切换,另一台主机的messages日志不断的提示msg_receive_simple: Connection reset ...


ILO不应该有这样的问题,如果cluster.conf文件内容没有错误的话,应该重点检查FENCE设备的配置。你所说的网卡当掉或者服务当掉,我估计你的前提是心跳没有断,照你这种情况看,你断了心跳试试。估计不会fence成功,如果不能fence成功服务也无法切换。
作者: jerrywjl    时间: 2008-08-01 23:17
原帖由 鬼才小科 于 2008-8-1 15:55 发表
心跳线的跳数是一跳,就是TTL=1,不能经过路由等三层设备,最好能让两服务器有一条"专线"来连接...


没听说过。
作者: wind1211    时间: 2008-08-02 11:47
谢谢楼上的指点,周一再去检查fence的配置。
现在在这三种情况下可以自动切换:shutdown -h now关机;oracle服务停掉;服务网卡(11.88.17.0/24的地址)ifdown;
另外想请教一下,如果我启用了qdiskd服务,是不是要在两个节点上都要启动(先前测试 在启动ccsd服务之前启动qdiskd,在两台节点启动 cman后,node1节点messages日志报node2 shutdown,node2节点日志报node1 shutdown,但是继续启动fenced、rgmanager,双机服务仍能可用,但在cluster manager member中看到qdiskd的分区是dead状态,不知道这是什么原因)
作者: wind1211    时间: 2008-08-04 13:38
标题: 检查完fence后发现的问题
刚才检查了ilo fence配置,按理说应该没错,可是当节点异常掉电时 节点fence就会抱错,日志信息提示
agent "fence_ilo" reports: error: Command without TOGGLE="Yes" attribute is ignored when host power is off. power_on: unexpected error
fence "node1" failed
手动fence_ilo命令也不成功,如节点1上运行以下命令重启节点2,
[root@xjwlqywpt-itsmdb ~]# fence_ilo -a 11.88.30.201 -l Administrator -p FPM9GJBA -o reboot
error: Command without TOGGLE="Yes" attribute is ignored when host power is off.
power_on: unexpected error,,之后节点2处于关机状态。
网上查到和这个fence_ilo 的一个bug :http://www.redhat.com/archives/c ... -June/msg00169.html,我照着上面修改了/sbin/fence_ilo的
sendsock $socket, "<HOLD_PWR_BTN TOGGLE=\"Yes\" />\n";
我这边的hp ilo的firmware version是1.42,不知道是否要升级
作者: wind1211    时间: 2008-08-04 18:19
标题: fence设备问题已经解决
已经可以通过fence_ilo 命令对节点reboot on off status
先说一下环境:ilo firmware版本为1.42,redhat4u5,cluster4.0
参考了一篇文章(http://www.mail-archive.com/linux-cluster@redhat.com/msg00097.html),更改系统中的/sbin/fence_ilo脚本,更改完后 ,同步该两节点下的/sbin/fence_ilo文件
vi打开fence_ilo文件,增加以下内容
#第280行下修改如下

        foreach my $line (@response)
        {
              if ($line =~ /FIRMWARE_VERSION\s*=\s*\"(.*)\"/) {
                       $firmware_rev = $1;
               }
                if ($line =~ /MANAGEMENT_PROCESSOR\s*=\s*\"(.*)\"/) {
                        if ($1 eq "iLO2") {
                                $ilo_vers = 2;
                               print "power_status: reporting iLO2\n" if ($verbose);
                               print "power_status: reporting iLO2 $firmware_rev\n" if ($verbose);
                        }
                }

#上述更改完保存,打开文件,定位到第365行,修改如下:
                # HOLD_PWR_BUTTON is used to power the machine off, and
                # PRESS_PWR_BUTTON is used to power the machine on;
                # when the power is off, HOLD_PWR_BUTTON has no effect.
               sendsock $socket, "<HOLD_PWR_BTN/>\n";
               if ($firmware_rev > 1.29) {
                       sendsock $socket, "<HOLD_PWR_BTN TOGGLE=\"Yes\" />\n";
               } else {
                       sendsock $socket, "<HOLD_PWR_BTN/>\n";
               }
        }
        # As of firmware version 1.71 (RIBCL 2.21) The SET_HOST_POWER command

# is no longer available. HOLD_PWR_BTN and PRESS_PWR_BTN are used
#保存上述修改,再打开该文件,定位到524行,修改成如下,其实是加了firmware_rev的声明
$action = "reboot";
$ribcl_vers = undef; # undef = autodetect
$ilo_vers = 1;
$firmware_rev = 0;

[ 本帖最后由 wind1211 于 2008-8-4 19:59 编辑 ]
作者: wind1211    时间: 2008-08-04 20:14
标题: 终于完成了双机互备测试
先将数据库服务和应用服务的recover模式设置成relocate,当双机服务启动时 ,肯定会将数据库服务和应用服务启动到一台节点上,这时在这台节点上手工停掉其中的一个服务(比如oracle),这时服务会发生切换,这样两个节点可以各跑各的应用,又可以热备自己的服务,达到“双机互备”
,过两天将配置笔记贴上来
在这里非常感谢jerrywjl    ^_^
作者: chameleon    时间: 2008-08-19 10:38
呵呵,不错啊




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2