在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)
- )