1、MySQL Clustering(ndb-cluster stogare)
MySQL公司以存儲引擎方式提供的高可靠性方案,是事務安全的,實時復制數據,可用於需要高可靠性及負載均衡的場合。該方案至少需要三個節點服務器才能達到較好的效果。
成本:
(1) 節點服務器對RAM的需求很大,與數據庫大小呈線性比例;
(2) 最好使用千兆以太網絡;
(3) 還需要使用Dolphin公司提供的昂貴的SCI卡。
優點:
(1) 可用於負載均衡場合;
(2) 可用於高可靠性場合;
(3) 高伸縮性;
(4) 真正的數據庫冗余;
(5) 容易維護。
缺點:
(1) 隨著數據庫的變大,對RAM的需求變得更大,因此成本很高;
速度:
(1) 幾乎比典型的單獨服務器(無千兆以太網,無SCI卡,存儲引擎相關的限制少)慢10倍。
應用場合:
(1) 冗余,高可靠性,負載均衡
2、MySQL / GFS-GNBD/ HA (Active/Passive)
GFS是事務安全的文件系統。同一時刻你可以讓一個MySQL使用共享數據。
成本:
(1) 最多n台高性能服務器的成本,其中一個激活的,其他作為備份服務器。
優點:
(1) 高可靠性
(2) 某種程度的冗余
(3) 按照高可靠性進行伸縮
缺點:
(1) 沒有負載均衡
(2) 沒有保證的冗余
(3) 無法對寫操作進行伸縮
速度:
(1) 單獨服務器的2倍。對讀操作支持得較好。
應用場合:
(1) 需要高可靠性的、讀操作密集型的應用
3、MySQL / DRBD / HA (Active/Passive)
DRBD可以提供這樣的共享硬盤。DRBD可以被設置成事務安全的。同一時刻你可以讓一個MySQL使用共享數據。
成本:
(1) 最多n台高性能服務器的成本,其中一個激活的,而其他則作為備份服務器。
優點:
(1) 高可靠性;
(2) 一定程度的冗余;
(3) 以高可靠性名義來看是可伸縮的。
缺點:
(1) 沒有負載均衡
(2) 沒有保證的冗余
(3) 在寫負載方面沒有伸縮性
速度:
(1) 在讀寫方面相當於單獨服務器
應用場合:
(1) 需要高可靠性、讀操作密集型的應用
4、MySQL Write Master / Multiple MySQL Read Slaves (Active/Active)
考慮不同的讀、寫DB數據庫連接的情況。可以使用一台主服務器用於寫操作,而采用n台從服務器用於讀操作。
成本:
(1) 最多1台高性能寫服務器,n台讀服務器的成本
優點:
(1) 讀操作的高可靠性;
(2) 讀操作的負載均衡;
(3) 在讀操作負載均衡方面是可伸縮的。
缺點:
(1) 無寫操作的高可靠性;
(2) 無寫操作的負載均衡;
(3) 在寫操作方面無伸縮性;
速度:
(1) 同單獨服務器;在讀操作方面支持得較好
應用場合:
(1) 讀操作密集型的、需要高可靠性和負載均衡的應用。
5、Standalone MySQL Servers(Functionally separated) (Active)
多台功能分離的單獨服務器,沒有高可靠性、負載均衡能力,明顯缺點太多,不予考慮。
總結:
MySQL官方網站推薦的HA方案是結合DRBD(本文中的方案3)和Replication(本文中的方案4)。假如再加上Linux Heartbeat還可實現Auto-failover功能,在此種情況下,我們會發現,down機時間會大大減少。
我們還看到,雖然上述方案解決了集群問題,但對於MySQL服務器之間的負載均衡還是存在問題的,下面我們就選用官方推薦的方案4,配合梭子魚安全負載均衡機,來實現真正高效可靠的大型應用架構。
梭子魚負載均衡解決方案:
・采用兩台梭子魚安全負載均衡機LB440的雙機HA冗余結構,實現對後端多台MySQL服務器的實時負載均衡。
・采用梭子魚LB440特有的負載均衡算法保證大量的數據庫請求鏈接負載實時高效均衡。
・梭子魚LB440對每台MYSQL服務器的服務端口進行健康檢查,當某台MySQL服務器發生故障,則停止該台設備的工作,並從整個負載均衡隊列中自動移除。
・基於應用的結構,便於以後業務系統無縫拓展。性價比最優的解決方案,保護用戶的投資。
解決方案圖及示意拓撲:
為什麼選擇梭子魚:
・高性能:梭子魚LB440負載均衡機提供業界至強的服務器負載均衡性能,支持每秒100,000的新建連接,900萬的並發連接。
・梭子魚安全負載均衡機獨特的無跳線連接心跳監控方式提供快速切換,是MySQL集群服務這樣的實時關鍵系統所必需的。
・SSL卸載和加速:避免SSL加解密運算對服務器造成的額外壓力,提高服務器的處理能力,保證HTTPS訪問的高效、安全、可靠。
・強大的安全保護:梭子魚安全負載均衡機內置集成了IPS實時安全防護系統,可以檢測並阻擋1000多種入侵攻擊和DOS攻擊。