企业实战_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. 环境部署总览

主机名 IP地址 角色 数据库
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. 架构图总览

企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第1张图片
企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第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效果图

企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第3张图片
企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第4张图片
企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第5张图片
企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第6张图片
企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第7张图片
企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第8张图片
企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第9张图片

3.5. Haproxy 监控页面

http://192.168.43.32:48800/admin-status
企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第10张图片
http://192.168.43.172:48800/admin-status
企业实战_23_高可用负载均衡集群的实现(Mycat+ZK +HAProxy + Keepalived)_第11张图片

你可能感兴趣的:(MyCat,Haproxy)