Moebius

Moebius

當今世界是一個高度依賴於計算機系統的世界,資料庫中所存儲的數據代表了企業對於客戶、訂單、供應商、員工等所積累的知識。但是多少年來SQL Server行業內一直以來都缺少負載均衡的產品或方案。這既是由於資料庫引擎的事務性,也是由於資料庫處於系統的核心位置。任何在應用程式與資料庫之間的中間件都可能引入單點故障點。 在任何組織內,IT員工都必須要對是否對資料庫層面進行負載均衡做出決策,如果答案是肯定的,則還需要考慮資料庫層面的負載均衡是否適合或滿足現有系統架構的需要。莫比斯(Moebius)是一款基於SQL Server的產品,可以為非常複雜系統的負載均衡提供多種選項,來提升資料庫系統的安全性、性能和可用性。

資料庫集群方案的演進

無集群

集群最開始並不是在資料庫系統上產生的,而是在套用伺服器上。在計算機的早期,由於大型計算機成本昂貴,就產生了由多個微型計算機組成的集群,在該類集群中,每一個節點上都運行各自的作業系統和套用,共同來為用戶提供服務,組建套用集群的目的是為了性能和可用性。

此時,資料庫層面還是單機運行,沒有對應的集群產品。

雙機共享存儲

隨著套用伺服器集群技術的發展,由第三方廠商開始基於現有的商用資料庫推出了資料庫共享存儲的集群。集群之間通過共享存儲來實現高可用性,如圖所示。

圖1. 圖1.

在此基礎之上,Share-Disk架構又分為單活和雙活,雙活即為集群中的每一個節點都可以同時對外提供服務,而單活為集群中只有一個節點可對外提供服務,集群中的其他伺服器作為冗餘在“活”的節點出現故障時接替該伺服器成為對外提供服務的節點。該類架構最典型的產品就是SQL Server Failover Cluster(SQL Server故障轉移集群)、NEC的EXPRESSCLUSTER、ROSE的ROSE HA。這種方式的弊端也是顯而易見的,如下:

•硬體資源的嚴重浪費,同一時間集群中只有一台伺服器活著,其他伺服器只能作為冗餘伺服器。

•集群無法提升性能,因為只有一台伺服器可用

•存儲方面存在單點故障,除非在存儲層級保證高可用,通常需要昂貴的SAN存儲。

•因此該類方案僅僅可以做到伺服器層面的高可用,無法帶來性能的提升,也無法解決存儲單點故障的問題。因此如果不搭配其他高可用或負載均衡的技術,存在的意義並不是很大。

•另一類技術是Share-Disk中的雙活的技術,與單活技術不同的是,雙活的技術雖然也是共享磁碟,但集群中的所有節點都可以對外提供服務,典型的產品就是Oracle的RAC。RAC的技術性和購買成本都非常的高,因此需要水平比較高的人來運維系統。RAC設計的初衷並不是為了性能,而是為了高可用和擴展性,如果應用程式不是針對RAC架構設計和開發的,則將應用程式遷移到RAC上由於block contention (block busy waits)可能會導致性能的急劇下降,並且節點越多性能下降越明顯。

雙機不共享存儲

Share-Nothing架構又分為兩種,首先是分散式架構。將資料庫中的數據按照某一標準分布到多台機器中,查詢或插入時按照條件查詢或插入對應的分區。

另一種是每一個節點完全獨立,節點之間通過網路連線,通常是通過光纖等專用網路。如圖所示。

Moebius Moebius

在Share-Nothing架構中,每一個節點都擁有自己的記憶體和存儲,都保留數據的完整副本。通常來說,又可以分為兩種,可以負載均衡和不可以負載均衡。

首先談談不可負載均衡的集群,在不可負載均衡的技術中,集群中的節點會被分為主節點和輔助節點,主節點向外提供服務,輔助節點作為熱備(二階段事務提交)或暖備(不需要保證事務同步),同時有可能使得輔助節點提供唯讀的服務。使用這個架構的技術包括:SQL ServerAlwaysOn,SQL Server Mirror,Oracle Data Guard這種架構帶來的好處包括:

•輔助節點數據和主節點保持同步或準同步,當搭配第三方仲裁後,可以實現自動的故障轉移,從而實現了高可用

•輔助節點由於和主節點完全獨立,數據同步或準同步,因此主節點出現數據損壞後,可以從輔助節點恢複數據(自動或手動),從而保證了數據的安全性

•由於Share-Nothing架構使用了本地存儲(或SAN),相較於Share-Disk架構在慢速網路時有非常大的性能優勢

•當然,弊端也顯而易見,因為輔助節點無法對外提供服務或只能提供唯讀服務,因此該類集群的弊端包括:

•擴展能力非常有限

•對性能沒有提升,因為涉及到各節點的數據同步,甚至帶來性能的下降

•輔助節點如果可讀,雖然提升性能,但需要修改前端應用程式,對應用程式不透明

多機負載均衡

在Share-Nothing架構的基礎上,使得負載均衡架構成為可能。所謂負載均衡就是將對資料庫的負載分布到集群中的多個節點上,在集群中的每一個節點都可以對外提供服務,從而達到更高的吞吐量,更好的資源利用率和更低的回響時間。前端通過代理進行調度。使用該類架構的技術包括:MySQL上的Amoeba,MySQL上的HA Proxy。

Moebius Moebius
Moebius Moebius

該類負載均衡有一個共同點,就是前端需要一個單獨的網關進行調度,因此引入了單點故障點,網關處還需要做額外的高可用方案。該方案的好處包括:

•由於每一個節點都可以對外提供服務,因此可以提升性能

•擴展性得到提升,可以通過向集群添加節點直接進行Scale-Out擴充

莫比斯(Moebius)集群

莫比斯集群是一個為SQL Server用戶提供負載均衡、高可用、數據安全解決方案的產品。在基於前文提到的多機負載均衡的基礎之上,做了大幅改進。架構圖如圖所示 。

Moebius Moebius

莫比斯集群在多機負載均衡的基礎上,前端調度是依賴於資料庫引擎,每個資料庫引擎上都存在調度節點,但同一時間只有一個主調度節點承載調度任務,當主節點宕機後,任何一個節點都可以接替調度任務,從而避免了前端網關類型引入的單點故障。

此外,莫比斯還有如下好處:

數據同步引擎

同步數據,保證數據一致性

數據實時複製是構建多機高可用及負載均衡,系統實時容災、備份所採用的一種核心技術。Moebius Core宿主在SQL Server 資料庫引擎中,監測資料庫內數據的變化並分析導致數據變化的原因,將變化的數據以最小的消耗同步到其它節點中,保證數據的實時一致性及事務的連續性。

故障監控引擎

快速發現故障節點並將其剝離

Moebius 集群通過“網路心跳”及“仲裁機制”可以實現自動故障監測,當偵測到集群中某節點發生故障時,會在最短的時間內發現並通過虛擬IP轉移技術自動將故障節點的業務轉移,同時將此節點剝離出集群。

SQL解析及調度引擎

監控SQL語句,透明地切分套用與資料庫

解析:解析應用程式傳遞的SQL語句,並作相應的最佳化及快取。

調度:按照業務的需要將SQL語句調度到相應的伺服器上;在對SQL語句進行分發時採用多種負載均衡策略,可以實現SQL語句一級的負載均衡。

處理:按照業務的需要對SQL語句進行相應的處理,包括修改、替換SQL語句等等。

相關詞條

熱門詞條

聯絡我們