实战_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. 架构图总览
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)相关推荐
- IPVS-DR+keepalived实现高可用负载均衡集群
IPVS-DR+keepalived高可用负载均衡集群方案前端的负载调度器采用双机热备方式,Keepalived主要用来监测RealServer的健康状态以及主负载均衡器和备份负载均衡器之间的故障转移 ...
- keepalive+nginx实现负载均衡高可用_超详细的LVS+keepalived+nginx实现高性能高可用负载均衡集群教程...
概述 前面已经介绍了前两部分内容,下面主要介绍在nginx服务器方面的配置和测试整个集群是否可用. 在realserver端配置VIP 1.两台nginx服务器都要执行下面脚本: #vi /etc/r ...
- Linux 笔记 - 第十八章 Linux 集群之(三)Keepalived+LVS 高可用负载均衡集群
一.前言 前两节分别介绍了 Linux 的高可用集群和负载均衡集群,也可以将这两者相结合,即 Keepalived+LVS 组成的高可用负载均衡集群,Keepalived 加入到 LVS 中的原因有以 ...
- RHCS套件实现高可用负载均衡集群(三)——共享存储
注:此博文在博文"RHCS套件实现高可用负载均衡集群(二)"的基础上完成 实验开始前设置实验环境 target端配置--server3 [root@server3 ~]# yum ...
- RHCS套件实现高可用负载均衡集群(二)——Fence设备
注:此博文在博文"套件实现高可用负载均衡集群(一)"的基础上完成 环境: 物理机:172.25.54.250,作为fence server1:172.25.54.1 , serve ...
- Keepalived+Nginx实现高可用负载均衡集群
转载自 https://www.cnblogs.com/mrlapulga/p/6857294.html 一 环境介绍 1.操作系统 CentOS Linux release 7.2.1511 (Co ...
- RabbitMQ:使用Docker构建RabbitMQ高可用负载均衡集群
目录 一.构建RabbitMQ集群 1. 启动多个RabbitMQ节点 2. 加入集群 3. 配置镜像队列 二.HAProxy负载均衡 1. 安装HAProxy 2. 配置HAProxy 3. 启动 ...
- 汇总-13台虚拟机搭建一个高可用负载均衡集群架构
要求 用13台虚拟机搭建一个高可用负载均衡集群架构出来,并运行三个站点,具体需求如下. 设计你认为合理的架构,用visio把架构图画出来 搭建lnmp.tomcat+jdk环境 三个站点分别为:dis ...
- LVS+keepalived高可用负载均衡集群部署(一) ----数据库的读写分离
l 系统环境: RHEL7 l 硬件环境:虚拟机 l 项目描述:为解决网站访问压力大的问题,需要搭建高可用.负载均衡的 web集群. l 架构说明:整个服务架构采用功能分离的方式部署.后端采用 ...
最新文章
- mysql show命令用不了_MySQL show命令的用法 | 很文博客
- ubuntu20.04 中ifconfig无ens33
- ICML 2020: 从Alignment 和 Uniformity的角度理解对比表征学习
- 如何解决Bluetooth系统设计的棘手问题
- DataUml Design 介绍8-DataUML 1.2版本正式发布
- 出租车管理系统java_基于jsp的出租车管理系统-JavaEE实现出租车管理系统 - java项目源码...
- Java银行类编程题
- 利用console控制台调试php代码
- 基本运算符中Swift和Java的比较
- 190124每日一句
- echarts3d城市配置项
- 金融业务系统日志精益化分析
- pygame笔记(更新中
- 历程篇 之 我的 2019 (历时一年,只为记录美好生活~)
- SQLZOOL练习题答案和解析 第2关 SELECT from World
- 使用PIL剪切图片和拼接图片
- 默然回首繁忙而充实的2016
- 软件测试是什么?具体的工作内容是什么?有前途吗?
- 文件夹加密和电脑加密软件哪个好?隐身侠和360密盘哪个好?加密软件推永久免费版还抽奖...
- java练习 车费问题
热门文章
- 3w最简单led灯电路图_Mixly 第19课 光感应灯——光敏电阻使用
- android百度多渠道打包,Android多渠道打包方案的实践与优化
- VS2010项目配置详解
- ros(7)自定义service数据
- ubuntu16.04下安装opencv3.2版本
- 2021中国数字服务大会 | 阿里云混合云新一代运维演进与实践
- 独家 | 2021双11背后的数据库硬核科技
- Quick BI电子表格: 新手亦可表格自由
- 阿里云推出全新内存增强型实例re6,性能提升30%
- 假如古代有了云计算,延禧攻略里的各位嫔妃要如何宫斗