關於 RAC VIP (Oracle10G RAC) 的探討(zt)

tolywang發表於2007-12-14
If a node fails, then the node’s VIP fails over to another node on which the VIP cannot accept connections.

這句話什麼意思啊?按字面翻譯是如果節點失敗,那麼該節點的VIP將會切換到另一個 VIP不能接受連線的節點上,我的疑問是這樣切換的意義是什麼呢?以下的回覆是有道理的:


提升使用者體驗。 如果不用VIP,使用者要忍受長時間的tcp timeout用了VIP之後,使用者連線到crashinstance就會報ora錯誤
客戶端TAF的配置就會嘗試下一個node這也與文件說的一致。那麼我理解這裡有三個層次,首先伺服器實現 VIP 的切換,同時立即給客戶端返回一個連線錯誤;其次客戶端雖然接受到錯誤,但透過 TAF 的配置就會嘗試下一個node;最後對於應用來說,因為是透過客戶端註冊的服務連線伺服器,所以真正做到透明應用失敗切換(TAF

其實在節點一實效之後,vip1可以切換到node2上面去但是node2上的listener不能使用新漂移過來的vip1進行連線服務,因為oracle10G還沒有提供漂移過來的ip自動註冊到listener的功能,因此,vip1切換到其他節點後,這個ip就不能提供連線服務,只是執行了切換過來這個動作。

那麼為何還要讓vip1切換到node2呢,切換過來又沒有什麼用處?

原因是:

使用vip之後,客戶端可以快速判斷vip1沒有listener服務,可以直接嘗試換另外的ip了。減少了嘗試的次數和時間。

簡述過程如下:

vip1切換到node2後,由於不能提供服務了,因此馬上給客戶端返回一個連線錯誤,這個動作會使已連線的客戶端向現在已經停機的節點發出 SQL 時,接收到一個 TCP 重置資訊。連線將使用 tnsname 中的下一個地址,不過這可不是透明的,會產生一個錯誤ORA-3113

如果你希望透明應用程式故障切換,必須要配置 TAF 應用策略。如果配置了TAF策略,客戶端雖然接受到錯誤,但透過 TAF 的配置就會馬上嘗試下一個node的連線,這樣對於應用來說,實現了真正的透明故障切換,同時也減少了客戶端使用者等待時間。如果不使用vip連線,當一個節點實效後,vip1也會自動切換到node2,但是這一切已經連線上的客戶端並不能馬上知道節點一已經實效,因此已經連線到實效節點的客戶端會不斷的嘗試連線,直到連線超時等才會嘗試連線tnsname 中的下一個地址,所以這個切換會花費很長時間,客戶端才能切換到node2.

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/35489/viewspace-85112/,如需轉載,請註明出處,否則將追究法律責任。

相關文章