Mysql分布式部署高可用集群方案


 

 HAproxy+Mycat +MySQL主從集群高可用方案

 

 

 

  1. 1.         HAproxy高可用方案:

haproxy+keepalived,利用keepalived的VIP浮動能力,(多台haproxy對應同一個虛擬IP)實現haproxy集群高可用。

 

  1. 2.         Mycat高可用方案

可以使用xinetd來實現,通過xinetd,HAProxy可以用httpchk來檢測Mycat的存活狀態。

HAProxy負責將請求分發到Mycat上,起到負載均衡的作用,同時HAProxy也能檢測到Mycat是否存活,HAProxy只會將請求轉發到存活的Mycat上。如果一台Mycat服務器宕機,HAPorxy轉發請求時不會轉發到宕機的Mycat上,所以Mycat依然可用。

 

  1. 3.         Mysql讀寫分離

MySQL節點開啟主從復制的配置方案,並將主節點配置為Mycat的dataHost里的writeNode,從節點配置為readNode,同時Mycat內部定期對一個dataHost里的所有writeHost與readHost節點發起心跳檢測,正常情況下,Mycat會將第一個writeHost作為寫節點,所有的DML SQL會發送給此節點,若Mycat開啟了讀寫分離,則查詢節點會根據讀寫分離的策略發往readHost(+writeHost)執行。

 

 

  1. 4.         Mysql高可用

在一個dataHost里面配置了兩個或多個writeHost,如果第一個writeHost宕機,則Mycat會在默認的3次心跳檢查失敗后,自動切換到下一個可用的writeHost執行DML SQL語句,並在conf/dnindex.properties文件里記錄當前所用的writeHost的index(第一個為0,第二個為1,依次類推)

 

問題:當原來配置的MySQL寫節點宕機恢復以后,怎么重新加入Mycat,要不要恢復為原來的寫節點?關於這個問題,我們也曾與DBA討論很久,最終的建議方案是,保持現有狀態不變,改旗易幟,恢復后的MySQL節點作為從節點,跟隨新的主節點,重新配置主從同步,原先跟隨該節點做同步的其他節點也同樣換帥,重新配置同步源,這些節點的數據手工完成同步以后,再加入Mycat里。目前1.3版本的Mycat還沒有實現監控MySQL主從同步狀態的功能,因此這個過程里,DBA可以先修改MySQL的密碼,讓Mycat無法鏈接故障服務器,等同步完成以后,恢復密碼,這樣Mycat就自動重新將修復好的Mycat納管進來了

 

 

  1. 5.         haproxy介紹

  HAProxy提供高可用性、負載均衡以及基於TCP和HTTP應用的代理,支持虛擬主機。HAProxy特別適用於那些負載特大的web站點,這些站點通常又需要會話保持或七層處理。HAProxy運行在時下的硬件上,完全可以支持數以萬計的並發連接。並且它的運行模式使得它可以很簡單安全的整合進您當前的架構中, 同時可以保護你的web服務器不被暴露到網絡上。HAProxy實現了一種事件驅動、單一進程模型,此模型支持非常大的並發連接數。多進程或多線程模型受內存限制 、系統調度器限制以及無處不在的鎖限制,很少能處理數千並發連接。事件驅動模型因為在有更好的資源和時間管理的用戶端(User-Space) 實現所有這些任務,所以沒有這些問題。此模型的弊端是,在多核系統上,這些程序通常擴展性較差。這就是為什么他們必須進行優化以 使每個CPU時間片(Cycle)做更多的工作。

 

 

  1. 6.         keepalived介紹

keepalived理論工作原理

         keepalived可提供vrrp以及health-check功能,可以只用它提供雙機浮動的vip(vrrp虛擬路由功能),這樣可以簡單實現一個雙機熱備高可用功能。

         keepalived是一個類似於layer3, 4 & 5交換機制的軟件,也就是我們平時說的第3層、第4層和第5層交換。Keepalived的作用是檢測web 服務器的狀態。 Layer3,4&5工作在IP/TCP協議棧的IP層,TCP層,及應用層,原理分別如下:

         Layer3:Keepalived使用Layer3的方式工作式時,Keepalived會定期向服務器群中的服務器 發送一個ICMP的數據包(既我們平時用的Ping程序),如果發現某台服務的IP地址沒有激活,Keepalived便報告這台服務器失效,並將它從服務器群中剔除,這種情況的典型例子是某台服務器被非法關機。Layer3的方式是以服務器的IP地址是否有效作為服務器工作正常與否的標准。在本文中將采用這種方式。

         Layer4:如果您理解了Layer3的方式,Layer4就容易了。Layer4主要以TCP端口的狀態來決定服務器工作正常與否。如web server的服務端口一般是80,如果Keepalived檢測到80端口沒有啟動,則Keepalived將把這台服務器從服務器群中剔除。

         Layer5:Layer5就是工作在具體的應用層了,比Layer3,Layer4要復雜一點,在網絡上占用的帶寬也要大一些。Keepalived將根據用戶的設定檢查服務器程序的運行是否正常,如果與用戶的設定不相符,則Keepalived將把服務器從服務器群中剔除。

         vip即虛擬ip,是附在主機網卡上的,即對主機網卡進行虛擬,此IP仍然是占用了此網段的某個IP。

 

keepalived的用途:

         Keepalived是一個基於VRRP協議來實現的WEB 服務高可用方案,可以利用其來避免單點故障。一個WEB服務至少會有2台服務器運行Keepalived,一台為主服務器(MASTER),一台為備份服務器(BACKUP),但是對外表現為一個虛擬IP,主服務器會發送特定的消息給備份服務器,當備份服務器收不到這個消息的時候,即主服務器宕機的時候,備份服務器就會接管虛擬IP,繼續提供服務,從而保證了高可用性。

         在lvs+keepalived高可用負載均衡架構中,lvs本身不支持對后端real server進行健康狀態檢測,而keepalived的誕生不僅能是lvs均衡器實現了高可用,而且還能對lvs后端的real server進行健康狀態檢測。如果有一台web服務器死機,或工作出現故障,Keepalived將檢測到,並將有故障的web服務器從系統中剔除,當web服務器工作正常后Keepalived自動將web服務器加入到服務器群中,這些工作全部自動完成,不需要人工干涉,需要人工做的只是修復故障的web服務器。

 

  1. 7.         Mycat介紹

Mycat是一個代理層中間件,Mycat系統的高可用涉及到Mycat本身的高可用以及后端MySQL的高可用,前面章節所講的MySQL高可用方案都可以在此用來確保Mycat所連接的后端MySQL服務的高可用性。在大多數情況下,建議采用標准的MySQL主從復制高可用性配置並交付給Mycat來完成后端MySQL節點的主從自動切換。

 

  1. 8.         xinetd介紹

extended internet daemon,xinetd是新一代的網絡守護進程服務程序,又叫超級Internet服務器。經常用來管理多種輕量級Internet服務。xinetd提供類似於inetd+tcp_wrapper的功能,但是更加強大和安全。xinetd為linux系統的基礎服務


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM