Oracle RAC 用於INTERCONNECT 的內網卡的物理連接方式的選擇:采用交換機連接或是網線直連。
itpub討論中談到直連的弊端,一旦一個節點機的內網卡出現故障,Oracle從OS得到兩個節點的網卡狀態都是不正常的,因而會導致兩個實例都宕掉。
下面是討論過程:
biti說:
從理論上來推測
這裡面要注意區分 使用switch 和 直連 的情況:
如果使用交換機,拔掉a的,b 會知道自己是活的,a 知道自己出問題了。那麼b能提供服務,a將不能提供服務,應該選擇down掉是合理的選擇。
如果是直連,可能出現 brain split,兩個節點都不能正常提供服務。
但kamus反駁說:
即使是private直連,在我的印象中,至少9i的RAC有primary節點和second節點之分,這是按照啟動順序分的,先啟動的節點為primary,那麼當interconnect發生故障,RAC會選擇down掉second,存活primary。
brain split的現象好像是出現在一般的cluster系統中,比如用串口線通訊的沒有配置voting disk的HACMP?
又有人兄支持biti觀點:
在interconnect線路出現問題,應該都叫brain split吧。
在interconnect線路出現問題時,Oracle一般情況下會啟動一個競爭機制來決定哪個實例宕掉,如果宕掉的實例正好是好的實例的話, 這樣就會導致兩個實例都宕掉。
在9i中,oracle在啟動競爭機制之前,會先等待一段時間,等待OS將網絡的狀態發給oracle,如果在超時之前,Oracle獲得哪個實例的網卡是down的話,則將該實例宕掉,這樣的話,則可以保留正常的那個實例繼續服務,否則還是進入競爭機制。
按biti說的分兩種情況:
1.是接在交換機上面,此時一般情況下,是會保證正常的實例繼續服務的,但有的時候如果os來不及將網卡狀態送到Oracle時,也是有可能會導致兩個節點都宕掉的。
2.如果是直連的話,則會導致兩個實例都宕掉。