从上面第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个。
VIP 原理和特点
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, PUBLIC IP1.
3). 用户对VIP2的连接请求会被IP层路由转到节点1
4). 因为在节点1上有VIP2的地址,所有数据包会顺利通过路由层,网络层,传输层。
5). 但是,节点1上只监听VIP1和public IP1的两个IP地址。并没有监听VIP2,故应用层没有对应的程序接收这个数据包,这个错误立即被捕获。
6). 客户段能够立即接收到这个错误,然后客户段会重新发起向VIP1的连接请求。
VIP 特点:
1). VIP 是通过VIPCA脚本创建的
2). VIP 作为Nodeapps类型的CRS Resource 注册到OCR中,并由CRS 维护状态。
3). VIP 会绑定到节点的public 网卡上,故public 网卡有2个地址。
4). 当某个节点发生故障时,CRS 会把故障节点的VIP 转移到其他节点上。
5). 每个节点的Listener 会同时监听public 网卡上的 public ip 和VIP
6). 客户端的tnsnames.Ora 一般会配置指向节点的VIP.