關於在配置oracle 11gr2 rac時的4種ip,有不少朋友對此很迷惑,本文在此解說一下。
開啟乙個rac節點的/etc/hosts檔案
cat /etc/hosts
# public ip
192.168.1.138rac1.localdomain rac1
192.168.1.139rac2.localdomain rac2
#private ip
172.16.10.138rac1-priv.localdomain rac1-priv
172.16.10.139rac2-priv.localdomain rac2-priv
#virtual ip
192.168.1.140 rac1-vip.localdomain rac1-vip
192.168.1.141 rac2-vip.localdomain rac2-vip
#scan ip
192.168.1.142 rac-scan.localdomain rac-scan
這個檔案裡設計四種ip,分別有public ip、private ip、virtual ip、scan ip
private ip:即內部ip。用於節點間的通訊,通訊內容包括network heartbeat和cache fusion
public ip:即外部ip。用於提供對外資料服務。
virtual ip:即虛擬ip。其最大作用是用於故障切換。
oracle rac中每個節點都有乙個虛擬ip,簡稱vip, 與公網public ip在同乙個網段。vip 附屬在public網口介面。
virtual ip和public ip最主要的不同之處在於:vip是浮動的,而public ip是固定的。在所有節點都正常執行時,每個節點的vip會被分配到public nic上;在linux下ifconfig檢視,public網絡卡上是2個ip位址;如果乙個節點宕機,這個節點的vip會被轉移到還在執行的節點上。也就是倖存的節點的public nic這個網絡卡上,會有3個ip位址。
如果沒有vip,連線失敗節點的process會有乙個比較長的tcp超時等待,才能返回錯誤,有了vip後,節點失效後,由於vip漂移到其它節點,連線該vip的process很快就能返回錯誤,從而更快的嘗試連線其它活動的節點,避免客戶端反覆連線node1的例項。 如果應用程式和客戶機都配置了透明的應用程式故障轉移選項,可以在客戶端重新連線到剩餘的例項。
使用virtual ip的另乙個原因,我認為是負載均衡。客戶端在配置tnsnames.ora時,有些場合是要使用的vip,而有些場合又必須使用public ip。例如,當你在定位乙個資料庫的死鎖時,使用public ip,可以確保連到你想處理的機器。相反此時使用vip時,會出現不確定性,因為伺服器預設是開啟負載均衡的,也就是有可能你想連a機,系統卻給你分配了b機。
scan ip:在oracle 11gr2中,scan ip是作為乙個新增ip出現的, scan ip其實是oracle在客戶端與資料庫之間,新加的乙個連線層,當有客戶端訪問時,連線到 scan ip listener, 而scan ip listener接收到連線請求時,會根據 lba 演算法將該客戶端的連線請求,**給對應的instance上的vip listener,從而完成了整個客戶端與伺服器的連線過程。簡化如下:
client -> scan listener -> local listener -> local instance
你也可以把scan理解為乙個虛擬主機名,它對應的是整個rac集群。客戶端主機只需通過這個scan name即可訪問資料庫集群的任意節點。當然訪問的節點是隨機的,oracle強烈建議通過dns server的round robin模式配置解析scan,實現負載均衡(即輪換連線scan對應的ip位址)。這有點類似通過vip和listener loadbalance配置實現負載均衡的原理。
那麼有了virtual ip後為什麼還增加了乙個scan ip呢?
在oracle 11.2之前,client鏈結資料庫的時候要用vip,假如你的oracle cluster有4個節點,那麼客戶端的tnsnames.ora中就對應有四個主機vip的乙個連線串,如果cluster增加了乙個節點,那麼對於每個連線資料庫的客戶端都需要修改這個tnsnames.ora。
引入了scan以後,就方便了客戶端連線的乙個介面,顧名思義 single client access name ,簡單客戶端連線名,這是乙個唯一的名稱,在整個公司網路內部唯一,並且在dns中可以解析為三個ip位址,客戶端連線的時候只需要知道這個名稱,並連線即可, 每個scan vip對應乙個scan listener,cluster內部的service在每個scan listener上都有註冊,scan listener接受客戶端的請求,並foward到不同的local listener中去,還是由local 的listener提供服務給客戶端。
scan ip主要是為了簡化客戶端連線,假如你的oracle 集群有20個節點,客戶端連線的時候,是不是需要配置20個vip,如果用scan,只需要乙個scan name就行了,剩下的事情,scan幫你做了。
oracle 11gR2 RAC安裝總結
這段時間都在折騰rac,在安裝過程中,確實基本把能碰到的問題都碰到了,悲催的我重複安裝了將近10次,機器效能弱 記憶體僅4g的win7 加上人品不好,練就了我鐵一般的神經,終於,儘管還有小瑕疵,但是也算安裝好了,儘管沒有什麼實用價值,練練命令還是可以的。下面就是我的安裝總結 1.linux版本的選擇...
Oracle 11G R2 RAC 新增節點
1.新增clusterware節點 在已有的節點上 cluvfy stage pre nodeadd n node3 fixup fixupdir fixup dir verbose 11.2.0.2的安裝有bug,共享磁碟檢測總是不成功,所以在確認只有磁碟檢測錯誤,並且在新節點上確定能夠訪問共磁碟...
Oracle11gR2 RAC基本管理命令
crsctl h srvctl h 2 集群狀態檢視與管理 2.1 crsctl config crs 檢視本地伺服器上ohas自動啟動設定 限於11g及以上版本 2.2 crsctl check crs 檢查ohas與crs stack狀態。2.3 crsctl status stat resou...