RAC CRS Resource之VIP

每一个node都有一个VIP,VIP就是我们访问的IP,如果一个node down了,他的VIP地址会根据算法浮动到其他的某个node上,
这样在用户访问看来,还是正常访问的

我认为vip最大作用是用于故障切换

当a节点失败后,vip会飘移到b节点,但是b节点并没有对这个vip地址进行监听,这样客户端就能迅速知道a节点宕了,而切换到b节点

如果采用传统的TCP超时那会等很久

如果要实现failover,那在tnsnames.ora里面要有相应的配置

㈠ TCP/IP协议栈超时


从逻辑上看TCP/IP的协议栈是同层之间进行通信

传输层的TCP协议,提供数据传送的完整性服务。也就是,接收端的传输层收到数据包后,必须给发送端的传输层返回一个确认消息。
如果指定的时间内,发送端没有收到这个确认消息,发送端会认为这个包丢失,就会重发;如果几次重发都不能得到响应,
发送端的传输层就知道网络出现了问题,终止了发送尝试,并通知应用层。
比如,user_A用sqlplus连接oracle server,则sqlplus就会抛出连接错误

客户端的连接请求必须等到传输层的超时,才能获知数据库服务器或者监听出现了问题

假设有一个2节点的RAC环境,VIP1 VIP2,现node 2发生故障:
① CRS在检测到node 2异常后,触发clusterware重构,踢出node 2
② VIP2漂移到node 1
③ 用户对VIP2的连接请求会被网络层路由到node 1
④ 因为node 1拥有VIP2,所以数据包会顺利的通过网络接入层、网络层、传输层
⑤ 但是node 1上的监听器只监听VIP1和public IP,没有监听VIP2,也就是,应用层没有对应的程序接收这个包
⑥ 客户端能够立刻收到这个错误,然后客服端就会重新发起向VIP1的连接


㈡ VIP漂移问题


VIP只有在系统故障时才漂移

VIP漂移出去不回来

可以使用crs_relocate把vip"拉"回来

这是一个feature,VIP不自动failover回来是为了防止二次brown out

但是10.2.0.3是一个例外,这个参数被默认打开了,其他的版本默认都是关闭的。
ora_racg_vip_failback=0

我们可以通过v$session.failed_over 是YES表示漂移过、或者crsd.log会有输出

vip 漂移后 listener 并不会自动注册

只是降低连接时 failover 的时间长度而已

漂移后的目的是在进行连接时更快的返回错误, 而不是tns 超时.


㈢ VIP配置


hosts文件中vip的名称

建议采取以下命名hostname-vip,hostname-priv

名字最好不要用下划线。中划线没事



㈣ TAF(Transparent Application Failover)



Oracle的TAF实际是建立在VIP技术上的
如果你希望透明应用程序故障切换,必须要配置 TAF 应用策略。
如果配置了TAF策略,客户端虽然接受到错误,但通过 TAF 的配置就会马上尝试下一个node的连接,
这样对于应用来说,实现了真正的透明故障切换,同时也减少了客户端用户等待时间。
如果不使用vip连接,当一个节点实效后,vip1也会自动切换到node2,
但是这一切已经连接上的客户端并不能马上知道节点一已经实效,
因此已经连接到实效节点的客户端会不断的尝试连接,直到连接超时等才会尝试连接tnsname 中的下一个地址,
所以这个切换会花费很长时间,客户端才能切换到node2.



㈤ IP和VIP区别


① VIP是浮动的,而IP是固定的
② IP利用传输层超时,而VIP利用应用层立即响应
③ IP让未连上的连上,而VIP让已连上的继续连

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值