Oracle RAC中的几个IP
oracle11g开始,设置了SCAN ip,除此之外还有public ip,virtual ip,private ip,容易让人犯晕。 下面逐一解释: public ip: 类似与单实例的oracle数据库ip,主要用于管理访问。 virtual ip(vip): oracle在rac架构中专用,这个vip用于实现故障转移,当一个节点发生故障时,其vip会“浮动”到另外一个正常的节点,也即该正常节点对应着两个vip了。 SCAN: Single Client AccessName,单一客户访问名称,意思是客户端(如jdbc,pl/sql等)访问数据库时的公共域名,由于rac是多节点的,客户端要访问数据库,通过scan机制,只需要提供一个访问名称,oracle rac会自动为客户端分配一个节点,这对客户端来说是透明的。 private ip:私有ip,oracle 内部用于节点间通讯的ip,不对外开放。 public ip: 必须是专用ip,必须在安装oracle rac前配置好,能与网络连通。public ip,vip,scan ip必须在同一个网络网段内。 vip: 必须是专用ip,必须安装oracle rac前配置好,能与网络连通,public ip,vip,scan ip必须在同一个网络网段内。该ip及域名虽然配置,但必须保持不能使用(不能被访问,如ping)。 scan : 建议通过dns配置三个专用ip,在安装前必须配置好,当有请求者时,由dns随机分配。暂不使用。scan ip需要给出唯一的名字,也即三个ip对应一个域名。名字只能是字符和'-'。oracle不推荐通过hosts文件来配置,那样只能得到一个scan ip。 scan也是一个虚拟ip名,类似与虚拟ip名,但不同的是,虚拟ip是一个节点一个ip地址一个域名,scan是针对整个cluster的,一个域名对应着多个节点,多个ip地址。 private ip: 必须是专用ip,必须在安装前配置好,必须在一个专用私有网络中,只能被另外的rac节点解析,不能被其它网络解析。从11.2.0.2开始,oracle可以自动使用至多4块私有网卡,以实现内部节点的负载均衡及冗余。 GNS:Grid Naming Service。 以下是网上的资料 在Oracle RAC环境下,每个节点都会有多个IP地址,分别为Public/Private/Vip,这三个IP到底有啥区别呢?分别用在那些场合呢?来看看老外的回答。
Oracle RAC中每个节点都有一个虚拟IP,简称VIP,与公网IP在同一个网段。 没有VIP时,Oracle客户端是靠“TCP/IP协议栈超时”来判断服务器故障。而TCP/IP协议栈是作为OS Kernel的一部分来实现,不同的OS有不同的阀值,用户获悉数据库异常的时间完全取决于OS Kernel的实现,虽然有些OS允许修改这个阀值,但是会对其它程序产生未知影响。因此,oracle RAC引入了VIP,从而避开对TCP协议栈超时的依赖。 VIP和IP最主要的不同之处在于:VIP是浮动的,而IP是固定的。在所有节点都正常运行时,每个节点的VIP会被分配到public NIC上;在linux下ifconfig查看,public网卡上是2个IP地址;如果一个节点宕机,这个节点的VIP会被转移到还在运行的节点上。也就是幸存的节点的public NIC这个网卡上,会有3个IP地址。 当一个节点宕机,这个节点真实IP就连接不上了,但是这个节点的虚拟IP是可以连接的,他会自动把客户端的连接请求转接给存活的节点。 从上面第6条可以引出一个问题。如果增加一个节点,那么客户端的tnsname.ora需要加入新增节点的VIP。那么想象一下:多个客户端,增加多个节点,那么维护起来特别麻烦。因此到了Oracle11gR2,引入了一个scan的概念。 scan,single client access name。简单客户端连接名,这是一个唯一的名称,在整个公司网络内部唯一,并且在DNS中可以解析为三个ip地址,客户端连接的时候只需要知道这个名称,并连接即可,每个SCAN VIP对应一个scan listener,cluster内部的service在每个scan listener上都有注册,scan listener接受客户端的请求,并foward到不同的Local listener中去,还是由local 的listener提供服务给客户端。 注意:scan不一定要resolve到三个ip,一个也够了。只不过为了防止scan单点故障而推荐3个。 Oracle的TAF就是建立在VIP技术之上的。IP和VIP区别在与:IP是利用TCP层超时,VIP利用的是应用层的立即响应。VIP它是浮动的IP。当一个节点出现问题时会自动的转到另一个节点上。 假设有一个2个节点的RAC,正常运行时每个节点上都有一个VIP。VIP1和VIP2.当节点2发生故障,比如异常关系。RAC会做如下操作: 1).CRS在检测到rac2节点异常后,会触发Clusterware重构,最后把rac2节点剔除集群,由节点1组成新的集群。 2).RAC的Failover机制会把节点2的VIP转移到节点1上,这时节点1的PUBLIC网卡上就有3个IP地址:VIP1,VIP2,PUBLICIP1. 3).用户对VIP2的连接请求会被IP层路由转到节点1 4).因为在节点1上有VIP2的地址,所有数据包会顺利通过路由层,网络层,传输层。 5).但是,节点1上只监听VIP1和publicIP1的两个IP地址。并没有监听VIP2,故应用层没有对应的程序接收这个数据包,这个错误立即被捕获。 6).客户段能够立即接收到这个错误,然后客户段会重新发起向VIP1的连接请求。 VIP特点: 1).VIP是通过VIPCA脚本创建的 2).VIP作为Nodeapps类型的CRSResource注册到OCR中,并由CRS维护状态。 3).VIP会绑定到节点的public网卡上,故public网卡有2个地址。 4).当某个节点发生故障时,CRS会把故障节点的VIP转移到其他节点上。 5).每个节点的Listener会同时监听public网卡上的publicip和VIP 6).客户端的tnsnames.Ora一般会配置指向节点的VIP. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- ruby-on-rails – 如何在我的Gemfile中启用详细标志
- objective-c – applicationDidFinishLaunching未运行
- 详解Vue2+Echarts实现多种图表数据可视化Dashboard(附源码
- Oracle Pl / SQL:如何实现指向内存中记录类型的指针
- React Native 自定义组件报错 has no propType for native
- iOS内部测试 – 无法下载崩溃信息?
- c# – 如何获取文档中所有内容控件的列表?
- Json.Net在序列化期间重命名属性
- Postgresql复制监控计算
- c# – Ninject 2.0 – 绑定到多次使用同一接口的对象?