Oracle RAC SCAN ip的原理、配置及优缺点
在oracle 11g中,SCAN IP还用的很少。到oracle 12.2或者19c,用户已经基本上清一色的切换到了SCAN IP。所以很有必要理解oracle的SCAN IP运行机制和配置。
先回顾下VIP。
RAC的每个节点都需要有一个虚拟IP,这就是VIP。VIP需要和PUBLIC IP同一个子网,它们是由GI的Clusterware来管理的。VIP在其节点服务器发生故障的时候会自动漂移到另外正常的节点服务器上,如果RAC是多个节点运行的,那具体漂移到哪个活动的节点将由Clusterware决定。VIP发生漂移现象之后,其当前的节点服务器LOCAL LISTENER是不会监听它的请求的,所以有客户端向这个VIP发送请求时,Clusterware的FAN会通知客户端向别的VIP发送请求,客户端收到通知后通过Failover机制把请求重新发送到ADDRESS列表中的其他VIP上,如下所示:
Oracle Clusterware manages VIPs as a node application. When Oracle Clusterware discovers that a node has failed, it will relocate the VIP to one of the remaining nodes. A promiscuous ARP packet is broadcast to inform clients that the MAC address for the VIP has changed.
The relocated VIP does not forward incoming connections to the listener; instead it immediately sends back a failure message to the client. The client can then immediately failover to an alternate address. In the above slide, node 1 has crashed. Oracle Clusterware relocates VIP1 to node2. When the client attempts to connect using VIP1 it receives an error message; when it attempts to connect using VIP2 the connection is forwarded to the listener
Applications that connect to Oracle database in Oracle Clusterware should connect using the VIP address and not the public IP address
The VIP address maps to the MAC address of the adapter. It is possible to use Oracle VIPs with bonded/teamed NICs.
虽然有这种较复杂的过程,但始终对客户端是透明进行的,而且这个过程完成时间非常短暂,客户端也就几乎感受不到有节点宕机。等故障节点恢复正常,漂移的VIP也回到此节点上,继续提供服务。
VIP的优点在于相比TCP,客户端感知失败的时间更短、不需要等待TCP超时。
SCAN IP
总结起来(推荐):
- 配置SCAN域名(负载均衡不需要,没意义)
- 配置多个SCAN IP(负载均衡最好配置,不推荐使用SCAN IP)
oracle初始化参数LOCAL_LISTENER
该参数指定了数据库PMON进程需要将数据库实例注册到哪个端口,如果没有设置这个参数,PMON进程默认将数据库的服务注册到本地节点的1521端口。
SQL> show parameter local_listener; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ local_listener string (ADDRESS=(PROTOCOL=TCP)(HOST=192.168.199.157)(PORT=1521))
oracle初始化参数REMOTE_LISTENER
该参数指定了除了本地监听程序以外,PMON需要把本地实例的服务注册到何位置
例如:在RAC系统中这个参数,意为将本地实例的数据库服务注册到集群其他节点的监听程序或SCAN监听程序上。
SQL> show parameter remote_listener; NAME TYPE VALUE ------------------------------------ ----------- ------------------------------ remote_listener string rac-scan:1521 根据以上的设置,PMON会将本地实例的服务注册到SCAN-rac的1521端口。 其中SCAN-rac是一个可以通过DNS或/etc/hosts文件解析的名称。
oracle各种IP https://www.modb.pro/db/13380
https://www.cnblogs.com/wlzjdm/p/6700678.html
https://blog.csdn.net/jim_cainiaoxiaolang/article/details/77153296
Client Failover Best Practices for Highly Available Oracle Databases Oracle Database 12c