GI 中新的基礎架構 --MDNS, gipc 和 gpnp 是如何協同工作的

531968912發表於2017-07-10

  最近一直有朋友來詢問oracle 的叢集管理軟體從11.2 這個版本開始開始出現的新的元件mdns, gpic,gpnp 是做什麼的,以及他們是如何協調工作的。所以就花了時間寫了這篇文章來解釋一下這些新元件的基本功能和它們之間是如何協同工作的。

  首先來回顧一下歷史。對於10g版本的oracle 叢集管理軟體(CRS),當叢集啟動的時候,叢集節點的列表和每個節點的公網地址,私網地址是可以從OCR當中獲得的,而且如果叢集包含多塊私有網路卡的話,是需要依賴於OS層面的網路卡繫結軟體(例如:linux bonding)的,也就是說叢集的私網網路卡數量是對CRS透明的,叢集只需要知道經過聚合之後的網路卡名稱就可以了。

  但是,在11.2 這個版本開始,oracle的叢集管理軟體(GI)開始需要自己來管理集的網路卡,也就是說GI要能夠管理多塊私網網路卡;另外,由於叢集啟動的流程發生了改變,OLR的出現改變了11.2 叢集啟動的行為,OCR在叢集最初啟動時不再被使用了,而完全變成了叢集應用資源層的一個登錄檔(registry)。所以,就需要一些元件來完成節點發現,叢集節點列表構建的工作(這部分資訊在10.2中都是在OCR中寫好的)。所以,就出現了:

1. mdns:這個元件以mdmsd.bin 的方式出現,他負責在叢集啟動時找到本地節點叢集需要使用的所有網路卡,以便為節點發現提供基本的網路通訊功能。

2. gpnpd:這個元件以gpnpd.bin 的方式出現,它透過維護gpnpd profile 的方式把構建叢集所需要的核心資訊在節點之間進行同步。當然,這種資訊同步的過程是需要藉助mdns來實現的。具體說,gpnpd再啟動之後會:

步驟1:讀取本地的gpnp profile得到構建叢集的核心資訊。

步驟2:和mdns進行通行,透過mdns發現的網路卡向網路中傳送訊息,找到叢集中的其他節點。

步驟3:和其他的節點建立連結,同步彼此的gpnp profile 檔案。

    注意:詳細的gpnpd 的功能,請參考之前的文章 “11gR2新特性---Gpnp守護程式“。gpnp 正常啟動成功之後,實際上節點發現,叢集節點列表構建的工作就結束了

   3.gipc:這部分功能是以gipcd.bin 的方式出現的,它負責管理叢集中節點的私網網路卡。並建立節點和節點之間透過私網的點對點通訊。它相當於gpnp 的一個重要客戶,因為叢集的核心資訊是要透過gpnp來提供的。關於gipc的詳細功能,請參考我之前的文章“11gR2新特性---gipc守護程式”。

  透過上面的三個元件,就可以完成節點發現,叢集節點列表構建的工作,以及管理節點私有網路的工作。而這種設計的另外一個好處在於,它能夠使叢集的結構更加的靈活和有彈性。如果簡單的解釋著三個元件的關係的話,可以認為,mdns gpnp 提供了網路通訊服務, gpnp相當於mdns的客戶;gpnp相當於叢集的其他上層資源的一個服務元件,它能夠向叢集的其它元件提供叢集的基本核心資訊。gipc相當於gpnpd的一個重要客戶,它負責管理叢集節點的私有網路。

  望這篇文章對於大家理解這三個11.2新出現的元件有所幫助。

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

相關文章