對於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...