在Oracle RAC環(huán)境下,每個(gè)節(jié)點(diǎn)都會(huì)有多個(gè)IP地址,分別為Public/Private/Vip,這三個(gè)IP到底有啥區(qū)別呢?分別用在那些場(chǎng)合呢?來看看老外的回答。 1. private IP address is used only for internal clustering processing (Cache Fusion) 私有IP用于心跳同步
在Oracle RAC環(huán)境下,每個(gè)節(jié)點(diǎn)都會(huì)有多個(gè)IP地址,分別為Public/Private/Vip,這三個(gè)IP到底有啥區(qū)別呢?分別用在那些場(chǎng)合呢?來看看老外的回答。Oracle RAC中每個(gè)節(jié)點(diǎn)都有一個(gè)虛擬IP,簡(jiǎn)稱VIP,與公網(wǎng)IP在同一個(gè)網(wǎng)段。
沒有VIP時(shí),Oracle客戶端是靠“TCP/IP協(xié)議棧超時(shí)”來判斷服務(wù)器故障。而TCP/IP協(xié)議棧是作為OS Kernel的一部分來實(shí)現(xiàn),不同的OS有不同的閥值,用戶獲悉數(shù)據(jù)庫(kù)異常的時(shí)間完全取決于OS Kernel的實(shí)現(xiàn),雖然有些OS允許修改這個(gè)閥值,但是會(huì)對(duì)其它程序產(chǎn)生未知影響。因此,oracle RAC引入了VIP,從而避開對(duì)TCP協(xié)議棧超時(shí)的依賴。
VIP和IP最主要的不同之處在于:VIP是浮動(dòng)的,而IP是固定的。在所有節(jié)點(diǎn)都正常運(yùn)行時(shí),每個(gè)節(jié)點(diǎn)的VIP會(huì)被分配到public NIC上;在linux下ifconfig查看,public網(wǎng)卡上是2個(gè)IP地址;如果一個(gè)節(jié)點(diǎn)宕機(jī),這個(gè)節(jié)點(diǎn)的VIP會(huì)被轉(zhuǎn)移到還在運(yùn)行的節(jié)點(diǎn)上。也就是幸存的節(jié)點(diǎn)的public NIC這個(gè)網(wǎng)卡上,會(huì)有3個(gè)IP地址。
當(dāng)一個(gè)節(jié)點(diǎn)宕機(jī),這個(gè)節(jié)點(diǎn)真實(shí)IP就連接不上了,但是這個(gè)節(jié)點(diǎn)的虛擬IP是可以連接的,他會(huì)自動(dòng)把客戶端的連接請(qǐng)求轉(zhuǎn)接給存活的節(jié)點(diǎn)。
在tnsname.ora文件里,指定Address列表,客戶端會(huì)隨機(jī)選擇一個(gè)節(jié)點(diǎn)來連接數(shù)據(jù)庫(kù),而不是順序選擇的。
VIP特點(diǎn):
1 VIP是在clusterware安裝最后階段,通過腳本VIPCA創(chuàng)建的;
2 VIP作為一個(gè)Nodeapps類型的CRS Resource注冊(cè)到OCR中,并由CRS維護(hù)狀態(tài);
3 VIP會(huì)綁定到節(jié)點(diǎn)的public 網(wǎng)卡上;那么public網(wǎng)卡就有兩個(gè)地址了;
4 當(dāng)某個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),CRS會(huì)把故障節(jié)點(diǎn)的VIP轉(zhuǎn)移到其他節(jié)點(diǎn)上;
5 每個(gè)節(jié)點(diǎn)的Listener會(huì)同時(shí)在public網(wǎng)卡的public IP和VIP兩個(gè)地址上監(jiān)聽;
6 客戶端的tnsname.ora一般會(huì)配置指向節(jié)點(diǎn)的VIP;
從上面第6條可以引出一個(gè)問題。如果增加一個(gè)節(jié)點(diǎn),那么客戶端的tnsname.ora需要加入新增節(jié)點(diǎn)的VIP。那么想象一下:多個(gè)客戶端,增加多個(gè)節(jié)點(diǎn),那么維護(hù)起來特別麻煩。因此到了Oracle11gR2,引入了一個(gè)scan的概念。
scan,single client access name。簡(jiǎn)單客戶端連接名,這是一個(gè)唯一的名稱,在整個(gè)公司網(wǎng)絡(luò)內(nèi)部唯一,并且在DNS中可以解析為三個(gè)ip地址,客戶端連接的時(shí)候只需要知道這個(gè)名稱,并連接即可, 每個(gè)SCAN VIP對(duì)應(yīng)一個(gè)scan listener,cluster內(nèi)部的service在每個(gè)scan listener上都有注冊(cè),scan listener接受客戶端的請(qǐng)求,并foward到不同的Local listener中去,還是由local 的listener提供服務(wù)給客戶端。
注意:scan不一定要resolve到三個(gè)ip,一個(gè)也夠了。只不過為了防止scan單點(diǎn)故障而推薦3個(gè)。
VIP 原理和特點(diǎn)
Oracle 的TAF 就是建立在VIP 技術(shù)之上的。 IP 和VIP 區(qū)別在與: IP 是利用TCP層超時(shí), VIP 利用的是應(yīng)用層的立即響應(yīng)。VIP 它是浮動(dòng)的IP。 當(dāng)一個(gè)節(jié)點(diǎn)出現(xiàn)問題時(shí)會(huì)自動(dòng)的轉(zhuǎn)到另一個(gè)節(jié)點(diǎn)上。
假設(shè)有一個(gè)2個(gè)節(jié)點(diǎn)的RAC,正常運(yùn)行時(shí)每個(gè)節(jié)點(diǎn)上都有一個(gè)VIP。 VIP1 和VIP2. 當(dāng)節(jié)點(diǎn)2發(fā)生故障,比如異常關(guān)系。 RAC 會(huì)做如下操作:
1). CRS 在檢測(cè)到rac2節(jié)點(diǎn)異常后,會(huì)觸發(fā)Clusterware 重構(gòu),最后把rac2節(jié)點(diǎn)剔除集群,由節(jié)點(diǎn)1組成新的集群。
2). RAC的Failover 機(jī)制會(huì)把節(jié)點(diǎn)2的VIP轉(zhuǎn)移到節(jié)點(diǎn)1上,這時(shí)節(jié)點(diǎn)1的PUBLIC 網(wǎng)卡上就有3個(gè)IP 地址: VIP1,VIP2, PUBLIC IP1.
3). 用戶對(duì)VIP2的連接請(qǐng)求會(huì)被IP層路由轉(zhuǎn)到節(jié)點(diǎn)1
4). 因?yàn)樵诠?jié)點(diǎn)1上有VIP2的地址,所有數(shù)據(jù)包會(huì)順利通過路由層,網(wǎng)絡(luò)層,傳輸層。
5). 但是,節(jié)點(diǎn)1上只監(jiān)聽VIP1和public IP1的兩個(gè)IP地址。并沒有監(jiān)聽VIP2,故應(yīng)用層沒有對(duì)應(yīng)的程序接收這個(gè)數(shù)據(jù)包,這個(gè)錯(cuò)誤立即被捕獲。
6). 客戶段能夠立即接收到這個(gè)錯(cuò)誤,然后客戶段會(huì)重新發(fā)起向VIP1的連接請(qǐng)求。
VIP 特點(diǎn):
1). VIP 是通過VIPCA腳本創(chuàng)建的
2). VIP 作為Nodeapps類型的CRS Resource 注冊(cè)到OCR中,并由CRS 維護(hù)狀態(tài)。
3). VIP 會(huì)綁定到節(jié)點(diǎn)的public 網(wǎng)卡上,故public 網(wǎng)卡有2個(gè)地址。
4). 當(dāng)某個(gè)節(jié)點(diǎn)發(fā)生故障時(shí),CRS 會(huì)把故障節(jié)點(diǎn)的VIP 轉(zhuǎn)移到其他節(jié)點(diǎn)上。
5). 每個(gè)節(jié)點(diǎn)的Listener 會(huì)同時(shí)監(jiān)聽public 網(wǎng)卡上的 public ip 和VIP
6). 客戶端的tnsnames.Ora 一般會(huì)配置指向節(jié)點(diǎn)的VIP.
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com