作者:warcraft04 | 来源:互联网 | 2023-09-25 12:11
在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机。
例如:
下面的例子就是使用的VIP
- infodb8 =
- (DESCRIPTION =
- (ADDRESS= (PROTOCOL= TCP)(HOST= 138.*.1.81)(PORT= 1521))
- (ADDRESS= (PROTOCOL= TCP)(HOST= 138.*.1.82)(PORT= 1521))
- (LOAD_BALANCE = yes)
- (FAILOVER = ON)
- (CONNECT_DATA =
- (SERVER= DEDICATED)
- (SERVICE_NAME = infodb)
- (FAILOVER_MODE =
- (TYPE= SELECT)
- (METHOD= BASIC)
- (RETRIES = 30)
- (DELAY = 5)
- )
- ))
- 下面的例子就是使用的Public IP,指定连接1机,注意红色字体infodb1进一步限制连接的实例。
- INFODB83 =
- (DESCRIPTION =
- (ADDRESS_LIST =
- (ADDRESS= (PROTOCOL= TCP)(HOST= 138.*.1.83)(PORT= 1521))
- )
- (CONNECT_DATA =
- (SERVICE_NAME = infodb)
- (INSTANCE_NAME = infodb1)
- )
- (HS = OK)
- )