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让已连上的继续连

你可能感兴趣的:(RAC CRS Resource之VIP)