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