2021年11月2日 星期二

2. RAC 基礎架構

Oracle RAC 在 Oracle 10g 這個版本開始才比較成熟, Oracle自從 10g 開始有了自己的 Cluster Ware ,搭建 RAC 已經不需要仰賴第三方的 Cluster Ware 。在搭建 RAC 之前,首先要求硬體的基本配置如下:

  • 主機的部分要求兩台或兩台以上的 Server ,需安裝 Oracle Cluster Ware 所支援的作業系統。

  • 網路的部分每台 Server 需要設定兩個網段,一個是對外網段 (Public IP) ,用來提供對外服務的連線所用;另一個是對內網段 (Private IP) ,俗稱心跳線,為 Cluster 成員之間聯繫所用。不論是對內或對外網段,都要求作業系統上所設定的網卡名稱必須相同,例如對外網段的網卡名稱為 eth0 ,那麼所有 Cluster Server 上所設定的對外網卡名稱必須都為 eth0 ;同理若是對內網段的網卡名稱為 eth1 ,那麼所有 Server 的對內網段的網卡名稱必須為 eth1 ,由於心跳線對於 Cluster 來說相對重要,如果有問題的話,很容易發生節點驅逐的情況 (Node Eviction) ,一般來說會針對心跳線做 Redundancy ,例如將兩張網卡綁成一張, eth1 與 eth2 兩個綁成一個 bond0 ,避免單點故障,當然綁成 bond0 之後,所有 Server 上也必須都是 bond0 這個名稱。

  • 存儲 (Storage) 的部分要求共享磁碟,也就是說必須設定 Storage 讓所有的 Server 可以共同存取。


在準備好硬體環境之後,便可以安裝 Oracle Cluster Ware 來搭建 RAC , RAC 搭建完成後會有以下的結構,首先是每台 Server 上面都會運行維持 RAC 運作的 Service Daemon ,對於 RAC 來說,有三個重要的 Daemon 必須存在:


  • CSSD (Cluster Synchronization Services Daemon) : 在作業系統上會運行 ocssd 這個 process ,主要的用途是用來偵測 RAC 節點的成員是否存活,以及自己是否為這個 RAC 成員所屬,當 CSSD 有偵測不到的節點時,就會開始發起仲裁行動,將偵測不到的成員進行驅逐。 CSSD 也是 RAC 啟動時最早執行的 Daemon 。

  • CRSD (Cluster Resource Services Daemon) : 在作業系統上會運行 crsd 這個 process , CRSD 可以說是整個 RAC 架構上的本體,為 RAC 的核心 process , CRSD 用來管理 Cluster 上的所有服務,包括 VIP 、 Database Instance 、 Listener 、 ASM …等, RAC 是否成功啟動,就單看 CRSD 是否有正常運行。

  • EVMD (Event Manager Daemon) : 在作業系統上會運行 evmd 這個 process , EVMD 為事件監控程式,當 RAC 的相關 process 發生異常時, EVMD 便會將這些異常的事件紀錄到 log 當中。


這三個 Daemon 是 RAC 最原始的 Process ,在 RAC 安裝完成後,會於 /etc/init.d 底下設定 init.cssd 、 init.crsd 以及 init.evmd ,也就是說在 Server 開機啟動的時候,同時也啟動這些 RAC 的 Process ,如果不想要 RAC 在 Server 開機的時候啟動,那麼就將這些設定註解掉即可。


在網路的部分, RAC 成功啟動後,每台 Server 都會啟動屬於自己的 VIP , VIP 主要是用來提供對外服務的連線所用,因此 VIP 是設定在對外 (Public) 的網段上, RAC 之所以具有高可用性的特性,就是因為有 VIP 的設定,當 RAC 其中一個節點不可用時,其所在的 VIP 便會轉移到其它節點上,讓 Client 的連線可以繼續運行:

VIP 是在 RAC 成功啟動後才會賦予上去的,在安裝階段,每台 Server 需規劃出一組沒有人在使用的 IP Address 作為將來 VIP 所用。


在 Storage 的部分, RAC 架構上有兩個重要的磁碟, OCR 與 Voting Disk :


  • OCR (Oracle Cluster Repository) : 為 Oracle Cluster 的設定檔,用來記錄 CRS 的設定以及其它 Resource 的狀態等資訊,透過 CRS Daemon 來存取與更新。

  • Voting Disk : 仲裁磁碟,在 Oracle 10g 時可以設定一個或三個 Voting Disk ,當 CSS 偵測到異常節點時,用來決定是否將其驅逐 (Eviction) :

例如在 3 個節點的 RAC 當中,其中第三台的心跳線斷線了,因此 Node1 回報說它只認得節點 1 與 2 ; Node2 回報說它也只認得節點 1 與 2 ;而 Node3 只回報說它只認得節點 3 ,經由這些資訊,便可以知道 Node3 與其它節點失去了聯繫,因此最終會將 Node3 進行驅逐 (Node Eviction) 。


OCR 與 Voting Disk 在 Oracle 10g 時還不能存放在 ASM ,必須額外規劃 RAW Disk 來使用,到了 Oracle 11g 之後就都存放在 ASM 了。


搭建 RAC 在 Shared Storage 的選擇上,可以使用 Raw Volumes (但 Oracle 11g 之後已不支援此方式) 、 Cluster File system (例如 IBM GPFS 、 Veritas VCS 、 OCFS2 …等) ,以及 ASM 。 ASM 是 Oracle 為了因應 RAC 需求所獨創的存儲方式,也是目前使用最多、最建議搭配的 Storage 選項,這樣一來從 Database 、 Cluster Ware ,以及 Storage ,都是 Oracle 自有品牌,整個 RAC 的結構也趨於完整。



沒有留言:

張貼留言