实战_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地址角色数据库
mycat1192.168.43.32MYCAT MYSQL,ZK,Haproxy,KeepalivedMYCAT,ORDER_DB01,ORDER_DB02
node1192.168.43.104MYSQL,ZKORDER_DB03,ORDER_DB04
node2192.168.43.217MYSQL,ZKPRODUCT_DB
mycat2192.168.43.172MYSQL,MYCAT,Haproxy,KeepalivedCUSTOMER_DB(master)
node3192.168.43.76MYSQLCUSTOMER_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
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/523371.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle与db2 市场占有率,oracle 与 DB2 的区别

1、DB2 访问前10行数据与Oracle区别DB2 :select * from test fetch first 10 rows onlyOracle :select * from test where rownum<10查询语句Db2:不提供隐形转换select * from employee where empno1010;oracle&#xff1a;提供隐形转换select * from employee where empno1…

拒修电脑后,妹子又约我学机器学习,好烦(甜)!

事情是这样的&#xff0c;自前年给学妹修了半年电脑后&#xff0c;我俩一直没联系&#xff0c;最近这位学妹最近又联系我&#xff0c;问我是否了解人工智能&#xff0c; 在得知我已经研究并且从事相关工作后&#xff0c;她立马约我出来认真聊聊。我的内心&#xff1a;好烦啊&am…

gbase 8s oracle,GBase8s 查看数据库表空间信息

onstat -d 查看数据库表空间信息onstat -d命令用于检查数据库空间的使用情况[gbasedbtnode13 ~]$ onstat -dYour evaluation license will expire on 2021-08-27 00:00:00GBase Database Server Version 12.10.FC4G1TL -- On-Line (Prim) -- Up 00:16:02 -- 2023104 KbytesDbsp…

2019年普通高等程序员招生统一考试

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 表姐也有话讲来源 | 表哥有话讲2019年普通高等程序员招生统一考试题号一二三总得分一、选择题&#xff08;每题5分&#xff0c;共计50分&#xff09;1、SQL语句写了一天都没过&#xff0c;这个时候应该&#xff08;&#xff…

MybatisPlus_进阶

#数据库连接 spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/mp_high?userSSLfalse&characterEncondingUTF-8&serverTimezoneGMT%2B8username: rootpassword: root # 日志管理 logging:level:root: warncom.gblf…

php 内存队列,memcache构建简单的内存消息队列_PHP教程

本文章来给各位同学介绍使用memcache构建简单的内存消息队列,用一个比较不错的实例来给大家介绍&#xff0c;希望此方法对大家有帮助哦。memcache功能太简单了&#xff0c;只能 set get 和delete&#xff0c; 只能保存key-value的数据&#xff0c; 不能保存列表。 当然也可以把…

idea maven插件tomcat内存溢出

setting->>>Build,Execution->>>Deployment->>>Maven->>>Runner->>>VM Options 粘贴复制以下内容&#xff1a; -Xms1024M -Xmx2048M -XX:PermSize256M -XX:MaxNewSize256M -XX:MaxPermSize512m

搞不懂SDN?那是因为你没看这个小故事…

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者 | 小枣君来源 | 鲜枣课堂很久很久以前&#xff0c;有一个村子&#xff0c;名叫“通信童心村”。村里的每一户&#xff0c;都有一个男人和一个女人。每一户&#xff0c;都以搬砖为生。从不同的地方&#xff0c;搬到不同的地方。…

lighttpd sqlite3 php,fedora linux平台下搭建lighttpd+php+sqlite

(一)lighttpd1. 安装yum install lighttpd安装完成后&#xff0c;系统中应该多了一个用户lighttpd和组lighttpd。这个用户&#xff0c;默认是不允许登陆的。我们修改/etc/passwd&#xff0c;将lighttpd修改为如下形式。lighttpd:x:489:470:lighttpd web server:/home/lighttpd/…

玩转 Linux 常用命令

Linux是目前应用最广泛的服务器操作系统&#xff0c;基于Unix&#xff0c;开源免费&#xff0c;由于系统的稳定性和安全性&#xff0c;市场占有率很高&#xff0c;几乎成为程序代码运行的最佳系统环境。linux不仅可以长时间的运行我们编写的程序代码&#xff0c;还可以安装在各…

良心帖!看完这篇,你的 Python 入门基础就差不多了!

Python将纳入高考内容、小学生教材开始接触Python、Python列入全国计算机等级考试……全民学Python的话题铺天盖地&#xff0c;中国的Python学习者是全球第一&#xff0c;人才如此泛滥&#xff0c;甚至以后孩子都会&#xff0c;学习它还能体现自身高价值&#xff1f;30年前学英…

svm回归matlab工具箱很慢,PSO优化SVM参数进行回归预测,结果很不理想

具体程序代码如下&#xff0c;主要问题就是不管我怎么调整参数&#xff0c;最终的预测结果都没有太大的变化&#xff0c;还请了解这两大算法的帮忙看看问题出在哪里了&#xff0c;十分感谢&#xff01;tic;close all;clear;clc;format compact;load M2.mat %载入数据% 提取数…

Idea 依赖冲突一分钟解决2种方案

文章目录一、Diagrams解决方案1.1. 在pom.xml文件中&#xff0c;右击选择【Diagrams】-【Show Dependencies】1.2. 找到冲突的依赖1.3. 问题定位1.4. 解决方案1.5. 具体实现思路1.5.1. 查看spring-context的全局控版本1.5.2. 找到需要排除activemq-core中的spring-context的3.0…

2019年技术盘点容器篇(一):听UCloud谈风生水起的K8S | 程序员硬核评测

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;刘晶晶据相关调研机构出具的报告数据显示&#xff0c;目前应用容器市场规模将从2016年的 7.62亿美元增长到2020年的27亿美元。显而易见&#xff0c;引入容器所展现的巨大灵活性有效推动了其采用速率&#xff0c;使企…

SpringBoot 整合ActiveMQ_企业实战

文章目录1. 新建Springboot工程2. 引入maven依赖3. ActiveMq配置类4. MQ生产者5. MQ 点对点消费者6. MQ 发布点阅消费者A7. MQ 发布点阅消费者B8. 统一测试类1. 新建Springboot工程 2. 引入maven依赖 <?xml version"1.0" encoding"UTF-8"?> <p…

怎样看Linux字体所在目录,Linux下列出所有字体的目录

fc-list|grep 黑/usr/share/fonts/adobe-source-han-sans/SourceHanSans-Bold.ttc: Source Han Sans HW TC,思源黑體 HW,思源黑體 HW Bold,Source Han Sans HW TC Bold:styleBold,Regular/usr/share/fonts/adobe-source-han-sans/SourceHanSans-Bold.ttc: 思源黑体,Source Han …

Docker精华问答 |为什么巨头会支持Docker?

如今Docker的使用已经非常普遍&#xff0c;特别在一线互联网公司。使用Docker技术可以帮助企业快速水平扩展服务&#xff0c;从而到达弹性部署业务的能力。在云服务概念兴起之后&#xff0c;Docker的使用场景和范围进一步发展。今天&#xff0c;就让我们来看看关于Docker的深度…

Unable to process Jar entry [module-info.class] from Jar

Unable to process Jar entry [module-info.class] from Jar [jar:file:/J:/rep/org/projectlombok/lombok/1.18.8/lombok-1.18.8.jar!/] for annotations org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19 解决方案&…

linux的批处理进程,巧用linux-top的批处理模式

IT技术学习&#xff1a;一种是采用循序渐进的系统式学习&#xff1b;一种是采用“投机取巧”的碎片式学习。我这个人比较赖&#xff0c;也没有那些大牛执着的精神和水平&#xff0c;所以只能和大家分享后者命令简述top命令-是UNIN&&LINUX系统自带的系统管理工具。可以实…