实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)
接上一篇:實戰_22_Mycat設置開機自啟https://blog.csdn.net/weixin_40816738/article/details/100086556
文章目錄
- 一、高可用集群架構實現思路
- 二、環境部署準備
- 2.1. 環境部署總覽
- 2.2. 架構圖總覽
- 2.3. 架構圖解說明
- 三、架構功能分析
- 3.1. 場景案例分析
- 3.2. 架構功能點分析
- 3.3. 擴展功能能分析
- 3.4. MyCat UI效果圖
- 3.5. Haproxy 監控頁面
一、高可用集群架構實現思路
實現思路:
①MYCAT 作為數據庫中間層,以邏輯庫來操作后臺物理庫
②MYCAT集群之間數據同步,借助ZooKeeper集群來實現高可用
③MYCAT負載均衡,借助Haproxy來實現
④Haproxy高可用,借助Keepalived來實現
⑤訂單表水平分庫分表,數據庫切分4片
⑥商品和客戶數據垂直拆分,采用讀寫分離(基于主從復制)
二、環境部署準備
2.1. 環境部署總覽
| mycat1 | 192.168.43.32 | MYCAT MYSQL,ZK,Haproxy,Keepalived | MYCAT,ORDER_DB01,ORDER_DB02 |
| node1 | 192.168.43.104 | MYSQL,ZK | ORDER_DB03,ORDER_DB04 |
| node2 | 192.168.43.217 | MYSQL,ZK | PRODUCT_DB |
| mycat2 | 192.168.43.172 | MYSQL,MYCAT,Haproxy,Keepalived | CUSTOMER_DB(master) |
| node3 | 192.168.43.76 | MYSQL | CUSTOMER_DB(slave) |
2.2. 架構圖總覽
2.3. 架構圖解說明
1、MYSQL商品模塊和客戶模塊采用數據庫垂直在拆分,數據庫對于大數量級別的數據進行分庫分表操作。
舉個栗子:訂單模塊進行水平擴展,分庫分表,切分4片;商品模塊和客戶模塊數據庫進行主從復制,讀寫分離。
2、MYCAT采用集群部署,MYCAT集群之間借助ZK集群(3個節點)來實現配置文件數據同步和ZK高可用。
舉個栗子:MYCAT集群之間配置文件信息同步,只需要修改ZK集群中的MyCat數據,就可以同步到MYCAT采用集群中,MYCAT不做任何操作。
3、HAProxy 實現了Mycat 多節點的集群高可用和負載均衡, 而 HAProxy 自身的高可用則可以通過Keepalived來實現
因此, HAProxy 主機上要同時安裝 HAProxy 和 Keepalived, Keepalived 負責為該服務器搶占 vip(虛擬 ip,圖中的 192.168.43.100),搶占到 vip 后,對該主機的訪問可以通過原來的 ip(192.168.43.32)訪問,也可以直接通過 vip(192.168.43.172)訪問。
4、Keepalived 搶占 vip 有優先級, 在 keepalived.conf 配置中的 priority 屬性權重決定。但是一般哪臺主機上的 Keepalived服務先啟動就會搶占到 vip,即使是 slave。
5、HAProxy 負責將對 vip 的請求分發到 Mycat 集群節點上, 起到負載均衡的作用。 同時 HAProxy 也能檢測到 Mycat 是否存活, HAProxy 只會將請求轉發到存活的 Mycat 上。
6、如果 Keepalived+HAProxy 高可用集群中的一臺服務器宕機, 集群中另外一臺服務器上的 Keepalived會立刻搶占 vip 并接管服務, 此時搶占了 vip 的 HAProxy 節點可以繼續提供服務。
7、如果一臺 Mycat 服務器宕機, HAPorxy 轉發請求時不會轉發到宕機的 Mycat 上,所以 Mycat 依然可用。
| 綜上: Mycat 的高可用及負載均衡由 HAProxy 來實現,而 HAProxy 的高可用,由 Keepalived 來實現。 |
三、架構功能分析
當前架構,MYCAT已實現負載均衡,Haproxy高可用,MYSQL根據模塊需求應用場景不同已實現符合需求的高可用。
3.1. 場景案例分析
| 訂單數據量級別比較大 | 對訂單表已實現水平擴展,分庫分表 |
| 查詢次數頻繁數據量級不大 | 對此模塊已實現垂直拆分,讀寫分離(基于主從復制) |
3.2. 架構功能點分析
當前架構已實現的功能點:
①MYCAT 作為數據庫中間層,以邏輯庫來操作后臺物理庫
②MYCAT集群之間數據同步,借助ZooKeeper集群來實現高可用
③MYCAT負載均衡,借助Haproxy來實現
④Haproxy高可用,借助Keepalived來實現
⑤訂單表水平分庫分表,數據庫切分4片
⑥商品和客戶數據垂直拆分,采用讀寫分離(基于主從復制)
⑦當前架構已實現跨分片查詢
1>字典類型 解決方案 全局表
2> 查詢次數多 字段多 調用頻繁 實現跨分片查詢 解決方案 ER分片
3.3. 擴展功能能分析
①當前架構已實現跨全局自增ID,解決ID重復問題
②已實現SQL攔截
1>對于delete 沒有where條件,會進行sql攔截
2>對于update和delete影響范圍大的操作,會進行sql攔截
③SQL防火墻已經實現,可以指定服務器和用戶訪問MYCAT
MYCAT web監控后臺已經集成,可以監控MYCAT ,MYSQL數據庫,SQL語句等功能
3.4. MyCat UI效果圖
3.5. Haproxy 監控頁面
http://192.xxx.43.32:48800/admin-status
http://192.168.43.172:48800/admin-status
總結
以上是生活随笔為你收集整理的实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 系统架构设计师 - 构件
- 下一篇: Guns根据条件查询数据_入门试炼04