您好,欢迎访问一九零五行业门户网

oracle 11gr2 rac中的4种IP解说

关于在配置oracle11gr2rac时的4种ip,有不少朋友对此很迷惑,本文在此解说一下。打开一个rac节点的/etc/hosts文件cat/etc/hosts#publicip192.168.1.138rac1.loca
     关于在配置oracle 11gr2  rac时的4种ip,有不少朋友对此很迷惑,本文在此解说一下。
打开一个rac节点的/etc/hosts文件
cat /etc/hosts
# public ip
192.168.1.138rac1.localdomain rac1
192.168.1.139rac2.localdomain rac2
#private ip
172.16.10.138rac1-priv.localdomain rac1-priv
172.16.10.139rac2-priv.localdomain rac2-priv
#virtual ip
192.168.1.140  rac1-vip.localdomain rac1-vip
192.168.1.141  rac2-vip.localdomain rac2-vip
#scan ip
192.168.1.142  rac-scan.localdomain rac-scan
这个文件里设计四种ip,分别有public ip、private ip、virtual ip、scan ip
private ip:即内部ip。用于节点间的通信,通信内容包括network heartbeat和cache fusion
public  ip:即外部ip。用于提供对外数据服务。
virtual ip:即虚拟ip。其最大作用是用于故障切换。
oracle rac中每个节点都有一个虚拟ip,,简称vip, 与公网public  ip在同一个网段。vip 附属在public网口接口。
virtual ip和public ip最主要的不同之处在于:vip是浮动的,而public ip是固定的。在所有节点都正常运行时,每个节点的vip会被分配到public nic上;在linux下ifconfig查看,public网卡上是2个ip地址;如果一个节点宕机,这个节点的vip会被转移到还在运行的节点上。也就是幸存的节点的public nic这个网卡上,会有3个ip地址。
如果没有vip,连接失败节点的process会有一个比较长的tcp超时等待,才能返回错误,有了vip后,节点失效后,由于vip漂移到其它节点,连接该vip的process很快就能返回错误,从而更快的尝试连接其它活动的节点,避免客户端反复连接node1的实例。 如果应用程序和客户机都配置了透明的应用程序故障转移选项,可以在客户端重新连接到剩余的实例。
使用virtual ip的另一个原因,我认为是负载均衡。客户端在配置tnsnames.ora时,有些场合是要使用的vip,而有些场合又必须使用public ip。例如,当你在定位一个数据库的死锁时,使用public ip,可以确保连到你想处理的机器。相反此时使用vip时,会出现不确定性,因为服务器默认是开启负载均衡的,也就是有可能你想连a机,系统却给你分配了b机。
scan ip:在oracle 11gr2中,scan  ip是作为一个新增ip出现的, scan ip其实是oracle在客户端与数据库之间,新加的一个连接层,当有客户端访问时,连接到 scan ip listener, 而scan ip listener接收到连接请求时,会根据 lba 算法将该客户端的连接请求,转发给对应的instance上的vip listener,从而完成了整个客户端与服务器的连接过程。简化如下:
client -> scan listener -> local listener -> local instance
你也可以把scan理解为一个虚拟主机名,它对应的是整个rac集群。客户端主机只需通过这个scan name即可访问数据库集群的任意节点。当然访问的节点是随机的,oracle强烈建议通过dns server的round robin模式配置解析scan,实现负载均衡(即轮换连接scan对应的ip地址)。这有点类似通过vip和listener loadbalance配置实现负载均衡的原理。
那么有了virtual ip后为什么还增加了一个scan ip呢?
在oracle 11.2之前,client链接数据库的时候要用vip,假如你的oracle cluster有4个节点,那么客户端的tnsnames.ora中就对应有四个主机vip的一个连接串,如果cluster增加了一个节点,那么对于每个连接数据库的客户端都需要修改这个tnsnames.ora。
引入了scan以后,就方便了客户端连接的一个接口,顾名思义 single client access name ,简单客户端连接名,这是一个唯一的名称,在整个公司网络内部唯一,并且在dns中可以解析为三个ip地址,客户端连接的时候只需要知道这个名称,并连接即可, 每个scan vip对应一个scan listener,cluster内部的service在每个scan listener上都有注册,scan listener接受客户端的请求,并foward到不同的local listener中去,还是由local 的listener提供服务给客户端。
scan ip主要是为了简化客户端连接,假如你的oracle 集群有20个节点,客户端连接的时候,是不是需要配置20个vip,如果用scan,只需要一个scan name就行了,剩下的事情,scan帮你做了。
本文出自 “滴水穿石孙杰” 博客,请务必保留此出处
其它类似信息

推荐信息