MyCat-集群-集群架构 | 学习笔记

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
传统型负载均衡 CLB,每月750个小时 15LCU
简介: 快速学习 MyCat-集群-集群架构

开发者学堂课程【全面讲解开源数据库中间件MyCat使用及原理(三):MyCat-集群-集群架构 】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/757/detail/13284


MyCat-集群-集群架构

内容介绍:

一、 集群架构

二、 高可用集群搭建

三、 课程总结

 

一、 集群架构

1. MyCat 实现读写分离架构

通过 MyCat 来实现 MySQL 集群的负载均衡,如下面的结构图:

image.png

当客户端(应用程序)连接 MyCat 时,通过 MyCat 来完成 MySQL 的读写分离,写操作直接转发到 MySQL 的 Master 节点,读操作可以转发到 MySQL 的 Slave 节点,从而来分担或降低仅仅依靠单台 MySQL 的压力。

但是以上架构存在问题,由于 MyCat 中间件是单节点的服务,也就是只有一台 MyCat,即使后端的 MySQL 是双主双从,或者是主节点更多,从节点更多,也只能保证 MySQL 一个界面停止工作了,会有另外的备用界面替补上来,对于 MyCat 来说是单节点的,无论后端有多少台 MySQL ,而如果 MyCat 只有一台,前端客户端所有的压力过来都直接请求这一台 MyCat ,存在单点故障,因此此时需要考虑 MyCat 的集群;

2. MyCat 集群架构

通过 MyCat 来实现后端 MySQL 的负载均衡,通过 HAProxy 再实现 MyCat 集群的负载均衡;以下图的架构是基于上图进行演变的。

所有的客户端(应用程序)在去访问的时候,不会直接访问 MyCat ,因为要实现 MyCat 的高可用,至少 MyCat 需要有两台服务器,这两台服务器同时对外进行服务,应用程序不会连接这两台服务器中的任意一台,会连接一个负载均衡的服务器(HAProxy),通过 HAProxy 来实现 MyCat 的负载均衡,因此所有的应用程序(客户端)在连接的时候直接去请求 HAProxy ,HAProxy 会将请求分发到后端的 MyCat ,由 MyCat 将请求分发到后端的 MySQL ,所以 HAProxy 主要充当 MyCat 的负载均衡,而 MyCat 又充当后端 MySQL 的负载均衡,此时,当第一台 MyCat 宕机了,所有的请求不会转发到第一台 MyCat ,而是直接转发到另一台 MyCat ,这样能保证 MyCat 的高可用,但是实际上此架构图也存在问题,HAProxy 是一个负载均衡器,所有的客户端都要去连接此 HAProxy 。

image.png

HAProxy 负责将请求分发到 MyCat 上,起到负载均衡的作用,同时 HAProxy 也能检测到 MyCat 是否存活,HAProxy 只会将请求转发到存活的 MyCat 上,如果一台 MyCat 服务器宕机,HAProxy 转发请求时不会转发到宕机的 MyCat 上,所以 MyCat 依然可用。

HAProxy 介绍:

HAProxy 是一个开源的、高性能的基于 TCP (第四层)和 HTTP (第七层)应用的负载均衡软件。使用 HAProxy 可以快速、可靠地实现基于 TCP 和 HTTP 应用的负载均衡解决方案。

具有以下优点:

①.可靠性和稳定性好;

②.处理能力强,最高可以通过维护 4w-5w 个并发连接,单位时间处理的最大请求个数达到 2w 个;

③.支持多种负载均衡算法;

④.有功能强大的监控界面,通过此界面可以实时了解系统的运行情况;

但是,上述的架构也是存在问题的,因为所有的客户端请求都是先到达 HAProxy ,由 HAProxy 再将请求再向下分发,在业务系统比较繁忙的系统当中,如果并发量比较高,或者这台服务器断电,或者一些服务器的故障,造成 HAProxy 宕机。如果 HAProxy 宕机的话,就会造成整个 MyCat 集群不能正常运行,依然存在单点故障。

 

二、 MyCat 的高可用集群

image.png

如上图,所有的应用程序(客户端)不会直接去连接 HAProxy ,所有的应用程序(客户端)是通过虚拟的 VIP 去连接 HAProxy ,借助 Keepalived 保证 HAProxy 高可用。

在这两台服务器上会安装 HAProxy, 同时还会安装另外一个软件 keepalived, 客户端所有请求会转发到第一台 HAProxy, 那么第一台 HAProxy 如果宕机的话,所有的请求又会转发到第二台 HAProxy。

它的机制与  keepalived 有关,在这幅架构图当中,如果没有 keepalived, 客户端要么连接第一个,要么连接第二个。实际上客户端(应用程序)再去连接第一个或第二个时都不合适。如果所有的客户端或者应用程序连接第一个  HAProxy, 当第一个 HAProxy 停止工作了,很难自动切换到第二个 HAProxy, 实际操作中不可能在每一个应用程序上都修改它的配置文件,再把它的地址指向第二个 HAProxy 。

如果要做到当第一个 HAProxy 停止工作了,能够自动切换到第二个 HAproxy。此时要借助 keepalived, keepalived 这个组件会虚拟出一个 VIP,虚拟出的此 VIP 会和当前此服务器进行绑定,这两个 keepalived 的都会共同虚拟出这样一个 VIP,和当前的服务器 IP 地址进行绑定,这两个 keepalived 在启动之后都需要进行抢占,如果第一个 keepalived 抢占了,那么此时这个 VIP 就会和第一台服务器进行绑定,如果第二台抢占了,就会和第二台服务器进行绑定,这两个服务器它们之间会维护一个心跳,这个心跳是为了监测对方是否正常工作,当第一个 keepalived( Master) 发送一个心跳包到备用节点,备用节点回复它。重复这个环节,当主节点(Master)发送心跳包到备用节点,备用节点没有监测到,那么备用节点会判定当前主节点宕机了。如果主节点宕机了,此时备用节点就会抢占 VIP,当抢占好 VIP后,会自动与这二台服务器的 HAProxy 进行绑定。一旦和这个服务器的IP进行绑定了之后,接下来客户端在请求的时候依然请求的是这个 VIP, 此 VIP 由于和第二台服务器进行绑定了,此时它就会转发到第二台 HAProxy,从而来保证 HAProxy 的高可用。

下面是图解说明:

1). HAProxy 实现了 MyCat  多节点的集群高可用负载均衡,而HAProxy 自身的高可用则可以通过 keepalived 来实现,因此,  HAProxy 主机上要同时安装 HAProxy 和 Keepalived,  Keepalived 负责为该服务器抢占 vip(虚拟 ip),抢占到 vip 后,对该主机的访问可以通过原来的 ip 访问,也可以直接通过 vip 访问。

2). Keepalived 抢占 vip 有优先级,在 keepalived .conf 配置中 priority 属性决定。但是一般哪台主机上的 Keepalived 服务先启动就会抢占到 vip ,即使是 slave ,只要先启动也能抢到(要注意避免 Keepalived 的资源抢占问题)

3). HAProxy 负责将 vip 的请求分发到 MyCat 集群节点上,起到负载均衡的作用。同时 HAProxy 也能监测到 MyCat 是否存活,HAProxy 只会将请求转发到存活的 MyCat 上。

4).如果 Keepalived+HAProxy 高可用集群中的一台服务器宕机,集群中的另一台服务器上的 Keepalived 会立刻抢占VIP并接管服务,此时抢占了 vip 的 Keepalived 节点可以继续提供服务。

5).如果一台 MyCat 服务器宕机,  HAProxy 转发请求时不会转发到宕机的 MyCat 上,所以 MyCat 依然可用。

综上: MyCat 的高可用及负载均衡由 HAProxy 来实现,而 HAProxy 的高可用由 keepalived 来实现。

Keepalived 介绍:

Keepalived 是一种基于 VRRP 协议来实现的高可用方案,可以利用其避免单点故障。通常有两台甚至多台服务器运行 Keepalived,一台为主服务器( Master ),其他为备份服务器,但是对外表现为一个虚拟 IP ( VIP ),主服务器会发送特定的消息给备份服务器,也就是说它们之间会维持一个心跳,主服务器要发送一个心跳包给备用服务器,当备用服务器接收不到这个消息时(备用服务器无任何压力)即认为主服务器宕机,备用服务器就会将此 IP 与当前服务器进行绑定,一旦与当前服务器的 IP 绑定好之后,接下来客户端请求此 VIP 时就会将请求转发到第二台服务器上,此时相当于备用服务器生效了,备份服务器就会接管虚拟 IP ,继续提供服务,从而保证了整个集群的高可用。

VRRP (虚拟路由冗余协议﹣Virtual Router Redundancy Protoco1)协议是用于实现路由器冗余的协议, VRRP 协议将两台或多台路由器设备虚拟成一个设备,对外提供虚拟路由器 IP (一个或多个),而在路由器组内部,如果实际拥有这个对外 IP 的路由器如果工作正常的话就是 MASTER ,或者是通过算法选举产生, MASTER 实现针对虚拟路由器 IP 的各种网塔功能,如 ARP 请求, ICMP ,以及数据的转发等;其他设备不拥有该虚拟 IP ,状态是 BACRUP ,除了接收 MASTER 的 VRRP 状态通告信息外,不执行对外的网络功能。

当主机失效时, BACKUP 将接管原先 MASTER 的网络功能。 VRRP 协议使用多插数据来传输 VRRP 数据, VRRP 数据使用特殊的虚拟源 MAc 地址发送数据而不是自身网卡的 MAC 地址, VRRP 运行时只有 MASTER 路由器定时发送 VRRE 通告信息,表示 MASTER 工作正常以及虚拟路由器 IP (组), BACKUP 只接收 VRRP 数据,不发送数据,如果一定时间内没有接收到 MASTER 的通告信息,各 BACKUP 将宣告自己成为 MASTER ,发送通告信息,重新进行 MASTER 选举状态。

 

三、 课程总结

在这一小节上讲到 MyCat 集群的一个演变,共提到了三种架构。第一个是通过 MyCat 来实现 MySQL 的读写分离架构,由于 MyCat 是一个单节点,存在单节点的故障。

第二个是通过 HAProxy 负载均衡器来完成 MyCat 的高可用,在此幅架构图中,MyCat 是高可用的,通过 HAProxy 来完成它的负载均衡。但是 HAProxy 却是单节点的,当 HAProxy 的压力过大的时候,  HAProxy 就会宕机,此时实际上后面的 MyCat 没有任何意义,因此衍生出了第三个集群 , MyCat 的高可用集群,在其中要通过 HAProxy 和 Keepalived来完成这个高可用集群。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
148 6
|
11天前
|
人工智能 云计算 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日~10日在江苏张家港召开的CCF ChinaNet(即中国网络大会)上,众多院士、教授和业界技术领袖齐聚一堂,畅谈网络未来的发展方向,聚焦智算集群网络的创新变革。
阿里云引领智算集群网络架构的新一轮变革
|
12天前
|
负载均衡 Dubbo 算法
集群容错架构设计
集群容错架构设计
23 1
集群容错架构设计
|
10天前
|
人工智能 运维 网络架构
阿里云引领智算集群网络架构的新一轮变革
11月8日至10日,CCF ChinaNet(中国网络大会)在江苏张家港召开,众多院士、教授和技术领袖共聚一堂,探讨网络未来发展方向。阿里云研发副总裁蔡德忠发表主题演讲,展望智算技术发展趋势,提出智算网络架构变革的新思路,发布高通量以太网协议和ENode+超节点系统规划,引起广泛关注。阿里云HPN7.0引领智算以太网生态蓬勃发展,成为业界标杆。未来,X10规模的智算集群将面临新的挑战,Ethernet将成为主流方案,推动Scale up与Scale out的融合架构,提升整体系统性能。
|
8天前
|
存储 缓存 NoSQL
【赵渝强老师】Memcached集群的架构
Memcached 是一个高性能的分布式内存对象缓存系统,通过在内存中维护一个巨大的 Hash 表来存储各种格式的数据,如图像、视频、文件及数据库检索结果等。它主要用于减轻数据库压力,提高网站系统的性能。Memcached 不支持数据持久化,因此仅作为缓存技术使用。其数据分布式存储由客户端应用程序实现,而非服务端。
【赵渝强老师】Memcached集群的架构
|
8天前
|
调度 Docker 容器
【赵渝强老师】Docker Swarm集群的体系架构
Docker Swarm自1.12.0版本起集成至Docker引擎,无需单独安装。它内置服务发现功能,支持跨多服务器或宿主机创建容器,形成集群提供服务。相比之下,Docker Compose仅限于单个宿主机。Docker Swarm采用主从架构,Swarm Manager负责管理和调度集群中的容器资源,用户通过其接口发送指令,Swarm Node根据指令创建容器运行应用。
|
1月前
|
负载均衡 安全 调度
Docker Swarm集群架构
【10月更文挑战第8天】
57 1
|
1月前
|
消息中间件 分布式计算 Kafka
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
大数据-98 Spark 集群 Spark Streaming 基础概述 架构概念 执行流程 优缺点
39 0
|
1月前
|
SQL 存储 分布式计算
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
大数据-93 Spark 集群 Spark SQL 概述 基本概念 SparkSQL对比 架构 抽象
40 0
|
1月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
47 0