Oracle RAC的VIP和SCAN IP

    文章來自:Virson Ma http://www.cnblogs.com/mawanglin2008/articles/3472395.html


    我們都知道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個。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章