rac 为什么不在一个节点上建立所有节点的监听?

本文探讨了Oracle 10g RAC环境中VIP failover的工作原理及其实现方式,对比11gR2的SCAN机制,深入分析了在不同版本中连接串的配置区别及其对高可用性的影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前段时间进行11.2.0.4的实验,通过不断增加节点和删除节点来完成对RAC服务器的更换时,才偶然发现了一个现象,就是:
假如rac2节点关机,那么rac2-vip会飘到rac1上,此时rac1的public网卡共会有4个IP地址,
但是我通过rac2-vip连接,会报错无监听,那么高可用怎么办呢?

虽然11gR2有scan,我们直接连scan就行了,但是10g怎么办?
我是从11gR2开始学ORACLE的,总是下意识就认为连接串只有一个IP地址.
此时注意区分11gR2和10g的连接串的写法,我们常见的11gR2的连接串直接写的就是scanIP的地址,但是10g中是将所有的vip都写上的

这个是11gR2的样例
ORCL = 
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.115.100)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )
这个是10g的



ORCL = 
  (DESCRIPTION =
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.115.100)(PORT = 1521))
    (ADDRESS = (PROTOCOL = TCP)(HOST = 192.168.115.101)(PORT = 1521))
    (CONNECT_DATA =
      (SERVER = DEDICATED)
      (SERVICE_NAME = orcl)
    )
  )


现在写的是在10g中vip failover的情况:
  1. rac2 重启,rac2-vip被failover到rac1上
  2. rac1会发送ARP广播,告诉交换机,rac2-vip的mac地址变了
  3. 用户对rac2-vip的请求发送到rac1上
  4. 因为rac1有rac2-vip地址,那么数据包会顺利的通过数据链路层,网络层,传输层
  5. rac1上的监听只监听rac1的public-IP和rac1-vip,不监听rac2-vip,于是立刻返回错误给客户端
  6. 客户端立刻收到这个错误,立刻做failover,使用连接串中的另一个vip地址,重新发送rac1-vip的请求
  7. rac1-vip收到请求,监听通过,建立连接

那么既然这么费劲,既然是由客户端发现连接不通,进行的failover,那还要VIP干嘛?直接连IP不就好了?
直连IP利用的是TCP超时,这个是TCP/IP的机制,一般需要一定的时间才能返回无响应
连接VIP利用的应用层的立即响应,使得从发起会话到发现需要failover的这个过程时间极短,

11gR2也是同理,还是对10g的一些特性还是不深刻,要是用过10gRAC的可能直接就理解了,但是这个问题我现在才知道
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值