1. 程式人生 > >轉載:細說oracle 11g rac 的ip地址

轉載:細說oracle 11g rac 的ip地址

捕獲 ted 失效 服務 修改 機器 發生 操作 自己

本文轉載自:細說oracle 11g rac 的ip地址

http://blog.sina.com.cn/s/blog_4fe6d4250102v5fa.html

以前搭建oracle rac的時候(自己摸索搭建),對ip規劃很是茫然,看到此文,突然理解了很多,就轉載了此文,供大家參考,謝謝。

oracle11g開始,設置了SCAN ip,除此之外還有public ip,virtual ip,private ip,容易讓人犯暈。
下面逐一解釋:
public ip:
類似與單實例的oracle數據庫ip,主要用於管理\訪問。
virtual ip(vip):
oracle在rac架構中專用,這個vip用於實現故障轉移,當一個節點發生故障時,其vip會“浮動”到另外一個正常的節點,也即該正常節點對應著兩個vip了。
SCAN:
Single Client Access Name,單一客戶訪問名稱,意思是客戶端(如jdbc,pl/sql等)訪問數據庫時的公共域名,
由於rac是多節點的,客戶端要訪問數據庫,通過scan機制,只需要提供一個訪問名稱,oracle rac會自動為客戶端分配一個節點,這對客戶端來說是透明的。
private ip:私有ip,oracle 內部用於節點間通訊的ip,不對外開放。
public ip:
必須是專用ip,必須在安裝oracle rac前配置好,能與網絡連通。public ip,vip,scan ip必須在同一個網絡網段內。
vip:
必須是專用ip,必須安裝oracle rac前配置好,能與網絡連通,public ip,vip,scan ip必須在同一個網絡網段內。該ip及域名雖然配置,但必須保持不能使用(不能被訪問,如ping)。
scan :
建議通過dns配置三個專用ip,在安裝前必須配置好,當有請求者時,由dns隨機分配。暫不使用。scan ip需要給出唯一的名字,
也即三個ip對應一個域名。名字只能是字符和‘-‘。oracle不推薦通過hosts文件來配置,那樣只能得到一個scan ip。
scan也是一個虛擬ip名,類似與虛擬ip名,但不同的是,虛擬ip是一個節點一個ip地址一個域名,scan是針對整個cluster的,一個域名對應著多個節點,多個ip地址。
private ip:
必須是專用ip,必須在安裝前配置好,必須在一個專用私有網絡中,只能被另外的rac節點解析,不能被其它網絡解析。
從11.2.0.2開始,oracle可以自動使用至多4塊私有網卡,以實現內部節點的負載均衡及冗余。
GNS:Grid Naming Service。

以下是網上的資料
在Oracle RAC環境下,每個節點都會有多個IP地址,分別為Public/Private/Vip,這三個IP到底有啥區別呢?分別用在那些場合呢?來看看老外的回答。
1. private IP address is used only for internal clustering processing (Cache Fusion)
私有IP用於心跳同步,這個對於用戶層面,可以直接忽略,簡單理解,這個Ip用來保證兩臺服務器同步數據用的私網IP。
2. virtual IP 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)
)
Oracle RAC中每個節點都有一個虛擬IP,簡稱VIP,與公網IP在同一個網段。
沒有VIP時,Oracle客戶端是靠“TCP/IP協議棧超時”來判斷服務器故障。而TCP/IP協議棧是作為OS Kernel的一部分來實現,
不同的OS有不同的閥值,用戶獲悉數據庫異常的時間完全取決於OS Kernel的實現,雖然有些OS允許修改這個閥值,但是會對
其它程序產生未知影響。因此,oracle RAC引入了VIP,從而避開對TCP協議棧超時的依賴。
VIP和IP最主要的不同之處在於:VIP是浮動的,而IP是固定的。在所有節點都正常運行時,每個節點的VIP會被分配到public NIC上;
在linux下ifconfig查看,public網卡上是2個IP地址;如果一個節點宕機,這個節點的VIP會被轉移到還在運行的節點上。也就是幸存的節點的public NIC這個網卡上,會有3個IP地址。
當一個節點宕機,這個節點真實IP就連接不上了,但是這個節點的虛擬IP是可以連接的,他會自動把客戶端的連接請求轉接給存活的節點。
在tnsname.ora文件裏,指定Address列表,客戶端會隨機選擇一個節點來連接數據庫,而不是順序選擇的。

VIP特點:
1 VIP是在clusterware安裝最後階段,通過腳本VIPCA創建的;
2 VIP作為一個Nodeapps類型的CRS Resource註冊到OCR中,並由CRS維護狀態;
3 VIP會綁定到節點的public 網卡上;那麽public網卡就有兩個地址了;
4 當某個節點發生故障時,CRS會把故障節點的VIP轉移到其他節點上;
5 每個節點的Listener會同時在public網卡的public IP和VIP兩個地址上監聽;
6 客戶端的tnsname.ora一般會配置指向節點的VIP;

從上面第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.

轉載:細說oracle 11g rac 的ip地址