對於
rac來說,最重要的還是要理解內部原理和體系結構。安裝不是非常難的事情。排錯和維護都離不開體系結構以及內部原理。
集群分類 1
、高效能計算
計算任務分配到不同計算機節點來提高整體計算能力,主要應用在科學計算領域。主要利用的是平行計算。 2
、負載均衡集群(lb)
把業務的負載流量盡可能的平均合理的分配到集群的各個節點上,每個節點都可以處理一部分負載,並且可以根據負載情況進行動態的平衡。負載均衡演算法不是簡單的平均,而是根據每個節點的可用資源或網路的特殊情況來進行優化分配。因此分配
+合理才是負載均衡的核心。 3
、高可用性(ha)
側重於提高系統的可用性,整合硬體和軟體的容錯性來實現整體服務的高可用性。如果某個節點發生故障,另外的節點代替他。
rac是真正的lb和
ha的複合體。從某種意義上說,只有最終應用(資料庫)才能實現真正意義上的
lb,而絕大多數的集群都是ha。
集群環境的特殊問題 1
、併發控制
集群環境中,存在共享儲存的問題。集群中各個節點對共享儲存是對等的,所有節點對資料有相同的訪問許可權,因此需要某種機制來控制節點對資料的訪問。 在
rac中,採用的是
dlm(
distribute lock management
)機制來進行例項間的併發控制。 2
、健忘症(
amnesia)
如果集群環境的配置檔案不是集中存放,每個節點都有乙個本地副本,集群正常執行的時候,使用者可以在任何節點修改集群的配置,並且這些更改都會自動同步到其他節點。
如果節點
1因為正常的維護需要關機,節點
2修改了配置,然後關閉節點
2.啟動節點
1,因為之前節點
2做的配置修改沒有同步到節點
1,所以將節點
1啟動以後,他仍然使用舊的配置檔案,造成配置丟失。
3、腦裂(
split brain)
集群中,節點之間需要通過某種機制(心跳)了解彼此的健康情況,以確保各個節點協調工作。假設只是心跳出現故障,各個節點還在正常的工作,每個節點都認為其他節點宕機,自己是整個集群的唯一健在者,因此需要獲得整個集群的「控制權」。儲存是共享的,這就意味著災難,這種情況就是「腦裂」。
投票演算法可以解決這個問題
如果乙個集群分成了兩個
partition
,乙個partition是3
個節點,乙個
partition是2
個節點。那麼
3個節點的
partition
裡面所有的節點的票數都是
3,兩個節點的
partition
裡面所有節點的票數都是
2.擁有兩個節點的
partition
會被踢出,自動重啟。如果兩個
partition
的節點都相同,那麼第乙個控制投票區的
partiton
將會存活,另外乙個
partition
將會被踢出而重啟,這種情況通常是
master
節點(一般是第乙個啟動的節點)所在的
partition
將會存活。
4、io隔離(
io fencing)、
集群出現故障,必須判斷哪個節點應該獲得集群的控制權,那些節點需要被踢出。這時投票需要解決的問題。
僅僅將他們踢出還不足夠,因為他們可能還在繼續執行(只是離開了這個集群),需要保證他們不再訪問共享資料。這就是
io隔離要解決的問題。
io fencing
實現有硬體和軟體方式。各個集群廠商使用的方式不同,有些需要硬體的支援(主要是儲存裝置是否支援某些協議)。
oracle rac
使用的是軟體的 方式,直接重啟故障節點。
無論採用哪種方式,
io fencing
的目的就是保證故障節點不能繼續訪問共享資料。
有一些儲存裝置支援
scsi reserve/release
命令,正常節點使用
scsi reserve
命令鎖住儲存裝置,故障節點發現儲存被鎖定,就知道自己已經被踢出了
cluster
,自行重啟,這種機制叫做自殺機制(
suicide
)。例如
sun和
veritas
的集群使用的就是這種機制。
無論軟體還是硬體,大致原理就是:正常節點通過某種方式告知故障節點,故障節點會進行重啟。告知的方式有硬體和軟體之分,硬體更加安全一些。
Oracle RAC集群簡介
對於rac 來說,最重要的還是要理解內部原理和體系結構。安裝不是非常難的事情。排錯和維護都離不開體系結構以及內部原理。集群分類 1 高效能計算 計算任務分配到不同計算機節點來提高整體計算能力,主要應用在科學計算領域。主要利用的是平行計算。2 負載均衡集群 lb 把業務的負載流量盡可能的平均合理的分配...
Oracle RAC 集群結構
oracle rac的特點 01 可以實現多節點的負載均衡 rac資料庫集群可以根據設定的調整策略,在集群中實現負載均衡的功能,在集群中每個節點都是正常工作的,各個節點也是相互監控的,當集群中某個節點出現故障,rac會自動將故障的節點從集群中隔離,並將在失敗節點上的業務自動切換到其他健康的節點中。0...
ORACLE RAC集群原理
oracle rac原理 在乙個應用環境當中,所有的伺服器使用和管理同乙個資料庫,目的是為了分散每一台伺服器的工作量,硬體上至少需要兩台以上的伺服器,而且還需 要乙個共享儲存裝置。同時還需要兩類軟體,乙個是集群軟體,另外乙個就是oracle資料庫中的rac元件。同時所有伺服器上的os都應該是同一類o...