複製鏈接
請複製以下鏈接發送給好友

Moebius

(基於SQL Server的產品)

鎖定
當今世界是一個高度依賴於計算機系統的世界,數據庫中所存儲的數據代表了企業對於客户、訂單、供應商、員工等所積累的知識。但是多少年來SQL Server行業內一直以來都缺少負載均衡的產品或方案。這既是由於數據庫引擎的事務性,也是由於數據庫處於系統的核心位置。任何在應用程序與數據庫之間的中間件都可能引入單點故障點。
在任何組織內,IT員工都必須要對是否對數據庫層面進行負載均衡做出決策,如果答案是肯定的,則還需要考慮數據庫層面的負載均衡是否適合或滿足現有系統架構的需要。莫比斯(Moebius)是一款基於SQL Server的產品,可以為非常複雜系統的負載均衡提供多種選項,來提升數據庫系統的安全性、性能和可用性。
中文名
莫比斯
外文名
Moebius
方案演進
開始
集羣最開始並不是在數據庫系統上產生的,而是在應用服務器上。在計算機的早期,由於大型計算機成本昂貴,就產生了由多個微型計算機組成的集羣,在該類集羣中,每一個節點上都運行各自的操作系統和應用,共同來為用户提供服務,組建應用集羣的目的是為了性能和可用性。
此時,數據庫層面還是單機運行,沒有對應的集羣產品。
雙機共享存儲
隨着應用服務器集羣技術的發展,由第三方廠商開始基於現有的商用數據庫推出了數據庫共享存儲的集羣。集羣之間通過共享存儲來實現高可用性,如圖1所示。
圖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架構又分為兩種,首先是分佈式架構。將數據庫中的數據按照某一標準分佈到多台機器中,查詢或插入時按照條件查詢或插入對應的分區。
另一種是每一個節點完全獨立,節點之間通過網絡連接,通常是通過光纖等專用網絡。如圖2所示。
圖2 雙機不共享存儲 圖2 雙機不共享存儲
在Share-Nothing架構中,每一個節點都擁有自己的內存和存儲,都保留數據的完整副本。通常來説,又可以分為兩種,可以負載均衡和不可以負載均衡。
首先談談不可負載均衡的集羣,在不可負載均衡的技術中,集羣中的節點會被分為主節點和輔助節點,主節點向外提供服務,輔助節點作為熱備(二階段事務提交)或暖備(不需要保證事務同步),同時有可能使得輔助節點提供只讀的服務。使用這個架構的技術包括:SQL ServerAlwaysOn,SQL Server Mirror,Oracle Data Guard這種架構帶來的好處包括:
  • 輔助節點數據和主節點保持同步或準同步,當搭配第三方仲裁後,可以實現自動的故障轉移,從而實現了高可用
  • 輔助節點由於和主節點完全獨立,數據同步或準同步,因此主節點出現數據損壞後,可以從輔助節點恢復數據(自動或手動),從而保證了數據的安全性
  • 由於Share-Nothing架構使用了本地存儲(或SAN),相較於Share-Disk架構在慢速網絡時有非常大的性能優勢當然,弊端也顯而易見,因為輔助節點無法對外提供服務或只能提供只讀服務,因此該類集羣的弊端包括:
  • 擴展能力非常有限
  • 對性能沒有提升,因為涉及到各節點的數據同步,甚至帶來性能的下降
  • 輔助節點如果可讀,雖然提升性能,但需要修改前端應用程序,對應用程序不透明
多機負載均衡
在Share-Nothing架構的基礎上,使得負載均衡架構成為可能。所謂負載均衡就是將對數據庫的負載分佈到集羣中的多個節點上,在集羣中的每一個節點都可以對外提供服務,從而達到更高的吞吐量,更好的資源利用率和更低的響應時間。前端通過代理進行調度。使用該類架構的技術包括:MySQL上的Amoeba,MySQL上的HA Proxy。
多機負載均衡 多機負載均衡
多機負載均衡 多機負載均衡
該類負載均衡有一個共同點,就是前端需要一個單獨的網關進行調度,因此引入了單點故障點,網關處還需要做額外的高可用方案。該方案的好處包括:
  • 由於每一個節點都可以對外提供服務,因此可以提升性能
  • 擴展性得到提升,可以通過向集羣添加節點直接進行Scale-Out擴充
莫比斯(Moebius)集羣
莫比斯集羣是一個為SQL Server用户提供負載均衡、高可用、數據安全解決方案的產品。在基於前文提到的多機負載均衡的基礎之上,做了大幅改進。架構圖如圖3所示 [1] 
圖3 莫比斯(Moebius)集羣 圖3 莫比斯(Moebius)集羣
莫比斯集羣在多機負載均衡的基礎上,前端調度是依賴於數據庫引擎,每個數據庫引擎上都存在調度節點,但同一時間只有一個主調度節點承載調度任務,當主節點宕機後,任何一個節點都可以接替調度任務,從而避免了前端網關類型引入的單點故障。
此外,莫比斯還有如下好處:
數據同步引擎
同步數據,保證數據一致性
數據實時複製是構建多機高可用及負載均衡,系統實時容災、備份所採用的一種核心技術。Moebius Core宿主在SQL Server 數據庫引擎中,監測數據庫內數據的變化並分析導致數據變化的原因,將變化的數據以最小的消耗同步到其它節點中,保證數據的實時一致性及事務的連續性。
故障監控引擎
快速發現故障節點並將其剝離
Moebius 集羣通過“網絡心跳”及“仲裁機制”可以實現自動故障監測,當偵測到集羣中某節點發生故障時,會在最短的時間內發現並通過虛擬IP轉移技術自動將故障節點的業務轉移,同時將此節點剝離出集羣。
SQL解析及調度引擎
監控SQL語句,透明地切分應用與數據庫
解析:解析應用程序傳遞的SQL語句,並作相應的優化及緩存。
調度:按照業務的需要將SQL語句調度到相應的服務器上;在對SQL語句進行分發時採用多種負載均衡策略,可以實現SQL語句一級的負載均衡。
處理:按照業務的需要對SQL語句進行相應的處理,包括修改、替換SQL語句等等。
參考資料