rac环境下vip/public/private IP的区别

每个节点要2块网卡, 3个IP,虚拟IP或者叫做业务IP,单个网卡当掉可以“漂”到其他网卡是继续提供服务

在Oracle RAC环境下,每个节点都会有多个IP地址,分别为Public/Private/Vip,这三个IP到底有啥区别呢?分别用在那些场合呢?来看看老外的回答。
1. private IP address is used only for internal clustering processing (Cache Fusion)
私有IP用于心跳同步,这个对于用户层面,可以直接忽略,简单理解,这个Ip用来保证两台服务器同步数据用的私网IP。
2. VIP is used by database applications to enable fail over when one cluster node fails
虚拟IP用于客户端应用,以支持失效转移,通俗说就是一台挂了,另一台自动接管,客户端没有任何感觉。
这也是为什么要使用RAC的原因之一,另一个原因,我认为是负载均衡。
3. public IP adress is the normal IP address typically used by DBA and SA to manage storage, system and database.
公有IP一般用于管理员,用来确保可以操作到正确的机器,我更愿意叫他真实IP。

通过上述解释,不难理解作为一个DBA,在配置tnsnames.ora时,有些场合是要使用的vip,而有些场合又必须使用public IP。例如,当你在定位一个数据库的死锁时,使用public ip,可以确保连到你想处理的机器,相反此时使用虚拟ip时,会出现不确定性,因为服务器默认是开启负载均衡的,也就是有可能你想连A机,系统却给你分配了B机。

here is reference:

/etc/hosts
#Publict NIC
10.104.4.31          test1.aaa.com                test1
10.104.4.32          test2.aaa.com                test2
#Private NIC
192.168.5.31         test1-pn.aaa.com                test1-pn
192.168.5.32         test2-pn.aaa.com                test2-pn
#oracle Visal NIC for oracle RAC VIP

10.104.4.35          test1-vip.aaa.com                 test1-vip
10.104.4.36          test2-vip.aaa.com                 test2-vip

例如:

      下面的例子就是使用的VIP
  1. infodb8 =
  2. (DESCRIPTION
    =
  3. (ADDRESS=
    (PROTOCOL= TCP)(HOST=
    138.*.1.81)(PORT=
    1521))
  4. (ADDRESS=
    (PROTOCOL= TCP)(HOST=
    138.*.1.82)(PORT=
    1521))
  5. (LOAD_BALANCE
    = yes)
  6. (FAILOVER
    = ON)
  7. (CONNECT_DATA
    =
  8. (SERVER= DEDICATED)
  9. (SERVICE_NAME
    = infodb)
  10. (FAILOVER_MODE
    =
  11. (TYPE=
    SELECT)
  12. (METHOD= BASIC)
  13. (RETRIES
    = 30)
  14. (DELAY
    = 5)
  15. )
  16. ))
    1. 下面的例子就是使用的Public IP,指定连接1机,注意红色字体infodb1进一步限制连接的实例。
    2. INFODB83 =
    3. (DESCRIPTION
      =
    4. (ADDRESS_LIST
      =
    5. (ADDRESS=
      (PROTOCOL= TCP)(HOST=
      138.*.1.83)(PORT=
      1521))
    6. )
    7. (CONNECT_DATA
      =
    8. (SERVICE_NAME
      = infodb)
    9. (INSTANCE_NAME
      = infodb1)
    10. )
    11. (HS = OK)
    12. )
    13. Oracle 11gR2 SCAN 详解
       
      --Alan.Lee原创,转载请注明出处www.dbaleading.com

      在Oracle 11gR2以前,如果数据库采用了RAC架构,在客户端的tnsnames中,需要配置多个节点的连接信息,从而实现诸如负载均衡,failover等等 RAC的特性。因此,当数据库RAC集群需要添加或删除节点时,需要及时对客户端机器的tns进行更新,以免出现安全隐患。

      在11gR2中,为了简化该项配置工作,引入了SCAN(Single Client Access Name)的特性,该特性的好处在于,在数据库与客户端之间,添加了一层虚拟的服务层,就是所谓的scan ip以及scan ip listener,在客户端仅需要配置scan ip的tns信息,通过scan ip listener,连接后台集群数据库。这样,不论集群数据库是否有添加或者删除节点的操作,均不会对client产生影响。

      下面,具体介绍下SCAN(Single Client Access Name)的架构以及配置。

      首先,简要的看下在11gR2中,安装RAC发生的巨大变化,在10g以及11gR1的时代,安装RAC的步骤是先安装CRS,再安装DB,而到了 11gR2的时代,crs与asm被集成在一起,合称为GRID,必须先安装GRID后,才能继续安装DB,否则,你就跟11gR2的RAC无缘咯,呵 呵。
          而被11gR2引入的SCAN,就是包含在安装grid的过程中。SCAN的定义,有两种途径:
          1. 在DNS中定义域名。
          2. 通过oracle提供的Grid Naming Server(GNS)实现DHCP自定义。
          如果通过dns来定义,则需要在网络中定义3个SCAN
      IP地址,指向同一个域名,这3个ip地址必须处于同一个子网内,同时域名不能太长,否则您打字也麻烦不是,哈哈。另外,SCAN IP是由oracle
      clusterware管理的,因此在主机的集群软件(如IBM HACMP,HP SERVICE
      GUARD)中不能将此ip配置进去,类似于10g中的vip,在grid安装前,此IP是无法ping通的。
          范例:
          scan-ip.dbaleading.com  IN A 192.168.1.111
                                  IN A 192.168.1.112
                                  IN A 192.168.1.113
          如果使用GNS的方式,则必须有DHCP服务,在cluster的配置过程中,将会自动向DHCP服务器申请3个IP地址作为SCAN IP使用。

      除了SCAN
      IP,在cluster的配置过程中,SCAN IP LISTENER服务也会被建立,每个SCAN IP对应一个SCAN IP
      LISTENER,并且,为了提升高可用性,3个SCAN IP以及其对应的SCAN IP
      LISTENER将被独立的分配到各个节点上。如果cluster中其中某个运行scan ip的节点出现异常,则其余两个正常的scan
      ip节点将自动接管。注意,此处有个注意点,如果客户端是11gR2的版本,则客户端只需在tns中配置域名解析,即可实现failover,如果客户端
      版本低于11gR2,则无法通过域名解析出3个SCAN
      IP地址,因此如果要实现failover,必须在客户端的tns中配置3个SCAN
      IP的地址进行解析,这也是为何oracle强烈建议在使用11gR2数据库时,客户端也最好使用11gR2的原因。
          范例:
          $srvctl config scan_listener
           SCAN Listener LISTENER_SCAN1 exists. Port: TCP:1521
           SCAN Listener LISTENER_SCAN2 exists. Port: TCP:1521
           SCAN Listener LISTENER_SCAN3 exists. Port: TCP:1521
          $srvctl config scan
          SCAN name: scan-ip, Network: 1/192.168.1.0/255.255.255.0/
          SCAN VIP name: scan1, IP: /scan-ip.dbaleading.com/192.168.1.111
          SCAN VIP name: scan2, IP: /scan-ip.dbaleading.com/192.168.1.112
          SCAN VIP name: scan3, IP: /scan-ip.dbaleading.com/192.168.1.113

       

      上回中,介绍了
      11gR2中 SCAN IP的配置,以及 SCAN IP LISTENER的配置及其作用。本章中,我们来详细了解下,SCAN
      IP在数据库中的配置方法,以及如何用SCAN IP,配置oracle所谓的自动负载平衡(该功能的实际使用,我们将在后续的章节中详细讨论)。
         
          看了第一篇中的SCAN IP介绍,相信很多朋友都有这样一个疑问,既然SCAN
      IP是跟数据库instance无关的,例如一个12节点的RAC或者24节点的RAC,都只有3个SCAN IP,并且SCAN
      IP是随机分布在各个instance的,那么,SCAN IP
      LISTENER如何监听各个节点的数据库呢,同时,该怎么配置哪个instance去哪个SCAN IP LISTENER注册呢。下面将一一解答。
         
          首先,补充一个概念,在11gR2中,SCAN
      IP是作为一个新增IP出现的,原有的CRS中的VIP仍然存在,从这里,就能看出一点端倪,在11gR2的RAC架构中,SCAN
      IP并非独立存在的,而是和原有的 VIP结合在一起的。那么他们是如何工作的呢,先来看下下面这个工作原理图:
         

      从这个原理图,可以看出,scan ip其实是ora  cle在客户端与数据库之间,新加的一个连接层,当有客户端访问时,连接到 SCAN IP
      LISTENER, 而SCAN IP LISTENER接收到连接请求时,会根据 LBA 算法(所谓LBA算法,就是least loaded
      instance),将该客户端的连接请求,转发给对应的instance上的VIP
      LISTENER,从而完成了整个客户端与服务器的连接过程。简化如下:
          client -> scan listener -> local listener -> local instance

      了解了这个过程以后,对SCAN IP的整体架构,就全部清楚了。剩下的,我们再来讲一些技术细节。
          SCAN IP 和 SCAN LISTENER是独立于RAC的各个节点的,而每个节点的 VIP , VIP LISTENER是跟instance绑定的,每个节点的VIP LISTENER,会监听自己所属节点的instance。

      因此,在数据库中,我们需要设置remote_listener参数,这个参数设置很有讲究,因为scan ip有3个,scan
      listener也有三个,但是他们对应的是同一个域名,因此,在数据库中,我们需要使用easy connect naming
      method方式,就是在sqlnet.ora的配置文件中,必须有NAMES.DIRECTORY_PATH=
      (tnsnames,ezconnect)存在。

      另外,配置remote_listener的方式也有讲究,以前的版本中,我们通常是在tnsnames.ora中写好remote_listener的
      地址以及端口,但是对于scan
      listener,不能这么做,必须按照标准格式,设置成REMOTE_LISTENER=SCAN:PORT的形式,以我的测试系统为例,就是
      REMOTE_LISTENER=scan-ip.dbaleading.com:1521,而不需要在tnsnames.ora中进行额外设置。

      经过以上设置后,RAC数据库的每个节点的PMON进程,会用广播的方式向每个SCAN
      LISTENER进行注册,同时CRS的后台进程ONS,会采集各个节点的负载状况,通知scan listener,以便scan
      listener根据负载情况,将新连接分配到当前负载最低的节点上。
         
          以上,就是11gR2 RAC中,新增的SCAN IP 以及 SCAN LISTENER的全部内容了,在下面一章中,我们将针对该新特性,开展一些拓展性的思考以及讨论。

    14. 附录:
    15. 其实在RAC环境, 网卡是工作在混杂模式的, 就像tcpdump那样, 会把发给所有地址的包都抓进来.
    16. 每个节点两个网卡,一个设置公共IP,一个设置私有的IP
      在hosts文件里面要把两个节点共6个IP都要写进去
    17. VIP是不用绑的,ORACLE安装自己会绑的,只需要绑PUBLIC和PRIVATE就可以
    18. Create an Oracle RAC 10g R2 using VMware Workstation 5
    19. http://www.idevelopment.info/data/Oracle/DBA_tips/VMware_Workstation_50/VMWARE_31.shtml

oracle rac IP详解的更多相关文章

  1. Oracle RAC Failover 详解

    Oracle  RAC 同时具备HA(High Availiablity) 和LB(LoadBalance). 而其高可用性的基础就是Failover(故障转移). 它指集群中任何一个节点的故障都不会 ...

  2. Oracle AWR 报告详解

    转自:http://blog.csdn.net/laoshangxyc/article/details/8615187 持续更新中... Oracle awr报告详解 DB Name DB Id In ...

  3. Oracle执行计划详解

    Oracle执行计划详解 --- 作者:TTT BLOG 本文地址:http://blog.chinaunix.net/u3/107265/showart_2192657.html --- 简介:   ...

  4. TCP/IP详解学习笔记

    TCP/IP详解学习笔记(1)-基本概念 TCP/IP详解学习笔记(2)-数据链路层 TCP/IP详解学习笔记(3)-IP协议,ARP协议,RARP协议 TCP/IP详解学习笔记(4)-ICMP协议, ...

  5. TCP/IP详解 (转)

    TCP/IP详解学习笔记(1)-基本概念 为什么会有TCP/IP协议 在世界上各地,各种各样的电脑运行着各自不同的操作系统为大家服务,这些电脑在表达同一种信息的时候所使用的方法是千差万别.就好像圣经中 ...

  6. 『TCP/IP详解——卷一:协议』读书笔记——10

    2013-08-22 22:57:17 3.8 ifconfig命令 这个命令在Linux系统下可以通过下面的指令阅读说明文档: ifconfig 由于书中作者用的系统比较早的某Unix系统,所以我的 ...

  7. 《TCP/IP详解卷1:协议》第1章 概述-读书笔记

    章节回顾: <TCP/IP详解卷1:协议>第1章 概述-读书笔记 <TCP/IP详解卷1:协议>第2章 链路层-读书笔记 <TCP/IP详解卷1:协议>第3章 IP ...

  8. TCP/IP详解--发送ACK和RST的场景

    在有以下几种情景,TCP会把ack包发出去: 1.收到1个包,启动200ms定时器,等到200ms的定时器到点了(第二个包没来),于是对这个包的确认ack被发送.这叫做“延迟发送”: 2.收到1个包, ...

  9. TCP/IP详解--连接状态变迁图CLOSE_WAIT

    终止一个连接要经过4次握手.这由TCP的半关闭(half-close)造成的.既然一个TCP连接是全双工(即数据在两个方向上能同时传递,可理解为两个方向相反的独立通道),因此每个方向必须单独地进行关闭 ...

随机推荐

  1. java枚举类型enum的使用

    2015-10-24 java达人 Java 中 的枚举类型采用关键字enum 来定义,从jdk1.5才有的新类型,所有的枚举类型都是继承自Enum 类型.要了解枚举类型,建议大家先打开jdk 中的E ...

  2. CODEVS 1004四子连棋

    [题目描述 Description] 在一个4*4的棋盘上摆放了14颗棋子,其中有7颗白色棋子,7颗黑色棋子,有两个空白地带,任何一颗黑白棋子都可以向上下左右四个方向移动到相邻的空格,这叫行棋一步,黑 ...

  3. DB天气app冲刺第三天

    昨天很郁闷而且烦躁的的过了一天 什么也没弄.今天其实也没有怎么做..进度非常慢.. 因为个人的问题 所以这两天的效率非常慢. 但今天还是做了一些东西.把listview做出来了.做出了一个按钮的效果. ...

  4. 聊聊iOS开发中耳机的那点事(监听耳机拔插、耳机线控)-b

    如果说一个项目出现的最重大的事故,那无疑就是开发人员使用了不可控的元素. 前言 iOS开发当中有关于视音频播放的开发不在少数,用户时常会使用到一种输出设备,那就是"耳机",这一篇博 ...

  5. new 的用法

     在C#中,new关键字有三种用法: 1.new 运算符,用于创建对象和调用构造函数. 2.new  修饰符,在用作修饰符时,new关键字可以显式隐藏从基类继承的成员. 3.new 约束 ,用于在泛型 ...

  6. 防止横竖屏时,iphone自动缩放的一段js代码

    function orientation_change() {     var viewport = document.querySelector('meta[name="viewport& ...

  7. 网络编程(二)NSURLSessionConfiguration

    1.NSURLSession有三种工作模式 (1)defaultSessionConfiguration(默认):使用的是基于磁盘缓存的持久化策略,Cache,Cookie. (2)ephemeral ...

  8. Ci框架整合smarty模板引擎

    Ci框架整合smarty模板引擎 备注:下载smarty时,最好选择2.6版本,其他测试有坑,ci可以是2.2或其他 大体思路:将smarty封装成ci框架的一个类,然后重新配置一下smarty,这样 ...

  9. JMP软件中的晶圆图( Wafer Map)分析

    关键词:芯片 良率分析 晶圆图 质量管理 JMP Minitab 半导体芯片的生产,简单来讲,是将电路通过各种复杂的物理化学方法制作到晶圆上,在生产的最后阶段会进行不同电性功能的测试以确保产品的功能性 ...

  10. Android 图片处理方法

    //压缩图片大小 public static Bitmap compressImage(Bitmap image) { ByteArrayOutputStream baos = new ByteArr ...