Chinaunix

标题: 求教LINUX下的HA和ORACLE下的RAC的区别? [打印本页]

作者: dgvri    时间: 2006-09-12 17:05
标题: 求教LINUX下的HA和ORACLE下的RAC的区别?
按小弟的理解,LINUX的HA或称“双机热备”,是两台机器装上同样的系统,配好后通过“心跳线”互相监测,数据存放在共享阵列库中,当主服务器出现问题时,负服务器会接管主服务器上的所有服务,而当主服务器恢复正常后,负服务器再交出所有服务。
    而ORACLE下的RAC好像也是这样功能,它是先配好RAC,然后安装ORACAL,ORACLA直接认出有两台服务器,一个共享阵列,安装时也会安到两个服务器上;但不知道是不是主服务器出现问题时负服器也会接管主服务器上的服务,使现和HA一样的功能?小弟不才,请高手指点。
作者: blue_stone    时间: 2006-09-12 20:56
oracle rac是一种比较特殊的集群解构, 在rac中数据库放在了共享存储设备上, 每个节点都会运行oracle实例, 这些实例同时对放置在存储设备上的数据库进行操作, 并通过cache fusion机制实现各实例之间缓存的同步,  访问任何节点都能得到相同的效果.

rac中一个实例挂起, 并不影响其他实例正常运行, 通过配置oracle net, rac中只要有一个节点工作正常, 客户就可以访问数据库

rac的节点可能会有多个. 而不止是2个.
作者: dgvri    时间: 2006-09-13 09:32
噢,也就是说它并不像是HA那样,同时只有一个结点在工作,当主结点宕机时另外一个结点才工作?那这样的话RAC并不是“双机热备”的概念了?
作者: blue_stone    时间: 2006-09-13 09:38
RAC是真实应用集群(Real Application Cluster)的缩写,它提供了高可用性(HA),但并不是“双机热备)

个人感觉,RAC和负载均衡集群有点类似。
作者: dgvri    时间: 2006-09-13 11:03
噢,刚才也看了几个资料,发现有这样说的,先调试好HA,这样在安装ORCALE时它会自动认出“Cluster Node selection”(串结点选择),这样就算是HA+RAC 了,也就实现了系统的“双机热备”和ORACLE的双系统,不知道我这样理解对不对?
作者: blue_stone    时间: 2006-09-13 11:26
No. 比如你在aix平台上安装oracle 9i rac
则需要先安装hacmp, 建立concurrent卷组, 再安装oracle
此时hacmp为oracle提供了对资源的共享访问以及其他集群服务,没有提供通常的HA功能
总的来说,整个系统只有oracle rac没有通常的”双机热备“

你也可以为oracle rac的instance做ha, 但是这样做没有意义。
作者: dgvri    时间: 2006-09-13 11:29
不太明白?是说HA和RAC的共存没有实际使用价值?还是说HA和RAC根本就是无法共存的?或者说HA提供的就是单个结点的访问,而RAC提供的是两个或者多个结果的同时访问?

[ 本帖最后由 dgvri 于 2006-9-13 11:34 编辑 ]
作者: blue_stone    时间: 2006-09-14 10:02
可以共存, 但没有实际意义.
HA的作用是保证一个服务在某一个节点上运行, 如果当前运行的节点出现问题,则自动切换到其他节点.
RAC会使得所有节点都运行一个实例, 只要RAC所有节点中还有一个可以正常运行, 就可以对外提供服务.

考虑rac和ha配合使用的情况,用ha保证rac实例的高可用, 当一个节点发生故障后, 将这个节点上的数据库企切换到其他节点. 在被切换的节点上运行2个数据库实例, 浪费了系统资源,可用性也没有提高
并且实施起来难度也比较大, rac instance使用的所有资源, 内网地址,外网地址,都必须切换.
作者: dgvri    时间: 2006-09-14 10:55
“RAC会使得所有节点都运行一个实例, 只要RAC所有节点中还有一个可以正常运行, 就可以对外提供服务. ”
这样就需要DNS轮换了吧,否则怎么实现两个节点同时可以访问,两个节点应该是相同的内容的。

另:如果必须使用HA,一般的是把数据库做成什么样子的?谢谢。
作者: blue_stone    时间: 2006-09-14 13:37
原帖由 dgvri 于 2006-9-14 10:55 发表
“RAC会使得所有节点都运行一个实例, 只要RAC所有节点中还有一个可以正常运行, 就可以对外提供服务. ”
这样就需要DNS轮换了吧,否则怎么实现两个节点同时可以访问,两个节点应该是相同的内容的。

另:如果必 ...


不需要配置dns, 只需要在tnsnames.ora中进行配置.
rac一般不和普通的ha集群配合使用, 两者选一吧.
你做一遍rac就能了解差不多了
作者: dgvri    时间: 2006-09-14 14:38
好。先做做试试再说。谢谢。
作者: myprotein    时间: 2006-09-20 16:11
那么aix下面,rac可以脱离hacmp么?既然rac只需要并发卷组,那么hacmp似乎不需要吧,并发卷组用clvm就可以做了,不清楚hacmp给rac到低提供了什么东西
作者: blue_stone    时间: 2006-09-21 11:24
原帖由 myprotein 于 2006-9-20 16:11 发表
那么aix下面,rac可以脱离hacmp么?既然rac只需要并发卷组,那么hacmp似乎不需要吧,并发卷组用clvm就可以做了,不清楚hacmp给rac到低提供了什么东西

oracle 9i rac for aix 必须使用hacmp,
oracle 10g rac for aix 则可以不使用hacmp, 因为oracle 10g rac运行在oracle crs上, 而crs可以依赖hacmp运行, 也可以脱离hacmp运行.
集群功能(比如判断节点的加入, 离开, 检查节点状态) 也是由集群软件(hacmp, 或者crs)来完成的.

[ 本帖最后由 blue_stone 于 2006-9-21 11:30 编辑 ]
作者: myprotein    时间: 2006-09-21 12:41
谢谢蓝石老大

但是,ha里面还需要做资源组么?好像用了rac,不需要切换了吧,多此一举,是么?
ha只是:比如判断节点的加入, 离开, 检查节点状态,是么?并不会做切换动作,这么理解对么
作者: blue_stone    时间: 2006-09-21 14:21
原帖由 myprotein 于 2006-9-21 12:41 发表
谢谢蓝石老大

但是,ha里面还需要做资源组么?好像用了rac,不需要切换了吧,多此一举,是么?
ha只是:比如判断节点的加入, 离开, 检查节点状态,是么?并不会做切换动作,这么理解对么


ha软件中的资源组的作用是将几个相关的资源放在一起,以便进行统一管理. 个人感觉, 资源组的主要作用是从逻辑上将多个资源根据相关性进行划分, 便于管理, 对于集群软件来说, 意义不大.

在hacmp+oracle rac的情况中, hacmp中只有concurrent vg资源, 自然没有必要做切换. 但是其他情况下, 比如使用hacmp保护单机oracle的情况下, 则hacmp在检测到集群状况发上变化后有可能做切换.

[ 本帖最后由 blue_stone 于 2006-9-21 14:22 编辑 ]
作者: myprotein    时间: 2006-09-21 15:35
多谢蓝石老大




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