-
1 简介分布式数据库中间件 DDM分布式数据库中间件(Distributed Database Middleware)是解决数据库容量、性能瓶颈和分布式扩展问题的中间件服务,提供分库分表、读写分离、弹性扩容等能力,应对海量数据的高并发访问场景,有效提升数据库读写性能。MySQL Routermysql-router是mysql官方的轻量级的中间件,用于取代MySQL Proxy应用程序像访问MySQL一样访问MySQL Router,由MySQL Router将数据转发给后端的DDM节点,实现Sidecar模式负载均衡。Sidecar模式是一种从应用程序本身剥离应用程序功能作为单独进程的方法。此模式允许我们向应用无侵入添加多种功能,从而无需向应用程序添加其他配置代码。建议MySQL Router与应用程序部署在同一台机器做Sidecar模式负载均衡,相对于服务端形式的负载均衡,Sidecar模式实现负载均衡可以缩短调用链路,减少服务端中心节点的压力,去中心化,使用更加可靠更加高效。参考资料:分布式数据(DDM)https://www.huaweicloud.com/product/ddm.htmlMySQL Router文档https://dev.mysql.com/doc/mysql-router/8.0/en/https://dev.mysql.com/doc/mysql-router/8.0/en/mysql-router-conf-options.htmlmysql-router-8.0.11-linux-glibc2.12-x86-64bit.tar.gz 2 部署Mysql-Router服务# 解压安装程序文件tar -xzvf mysql-router-8.0.11-linux-glibc2.12-x86-64bit.tar.gz # 重命名安装文件夹mv mysql-router-8.0.11-linux-glibc2.12-x86-64bit /usr/local/mysqlrouter # 创建日志和配置相关文件存放目录cd /usr/local/mysqlroutermkdir logsmkdir etc # 利用模板文件创建配置文件cp /usr/local/mysqlrouter/share/doc/mysqlrouter/sample_mysqlrouter.conf ./etc/mysqlrouter.conf # 启动 mysql router/usr/local/mysqlrouter/bin/mysqlrouter -c /usr/local/mysqlrouter/etc/mysqlrouter.conf & 3 配置文件详解首先,获取DDM连接串,如下图所示下面详细介绍mysql-router三种配置方式:I、作为中心代理节使用mysql-router绑定IP不限制,即监听所有ip,任意节点都可以访问,作为数据库访问代理,轮询DDM各个节点。其中,destinations为上文获得的DDM连接串。vi /usr/local/mysqlrouter/etc/mysqlrouter.conf[DEFAULT] logging_folder = /usr/local/mysqlrouter/log/ plugin_folder = /usr/local/mysqlrouter/lib/mysqlrouter/ config_folder = /usr/local/mysqlrouter/etc/ runtime_folder = /usr/local/mysqlrouter/run/ [logger] level = INFO # 负载均衡配置 [routing:balancing] # 绑定的IP地址 bind_address=0.0.0.0 # 监听的端口 bind_port = 7002 # 连接超时时间(秒) connect_timeout = 3 # 最大连接数 max_connections = 100 # 后端服务器地址.默认读进行轮询 destinations = 192.168.4.235:5066,192.168.4.231:5066 # 路由策略 routing_strategy=round-robin [keepalive] interval = 60连接示例:[root@xxx ]# ./mysql -uddmtest -h128.11.2.2 -P7002 -p Enter password: mysql>128.11.2.2为Mysql Router所在IP II、作为本地数据库代理使用mysql-router绑定本地地址127.0.0.1,作为本地数据库访问代理,仅允许当前节点访问数据库。其要求需要访问数据库的应用与router部署在同一节点,更安全可靠。vi /usr/local/mysqlrouter/etc/mysqlrouter.conf[DEFAULT] logging_folder = /usr/local/mysqlrouter/log/ plugin_folder = /usr/local/mysqlrouter/lib/mysqlrouter/ config_folder = /usr/local/mysqlrouter/etc/ runtime_folder = /usr/local/mysqlrouter/run/ [logger] level = INFO # 负载均衡配置 [routing:balancing] # 绑定的IP地址 bind_address=127.0.0.1 # 监听的端口 bind_port = 7002 # 连接超时时间(秒) connect_timeout = 3 # 最大连接数 max_connections = 100 # 后端服务器地址.默认读进行轮询 destinations = 192.168.4.235:5066,192.168.4.231:5066 # 路由策略 routing_strategy=round-robin [keepalive] interval = 60连接示例:[root@xxx ]# ./mysql -uddmtest -h127.0.0.1 -P7002 -p Enter password: mysql>mysql客户端与Mysql Router在同一节点。 III、作为本地数据库代理,使用Unix sockets连接(推荐)mysql-router不绑定ip和端口,只使用Unix sockets连接,这样可以不经过tcp协议转发数据,只走操作系统socket通道,更加高效。其同样要求需要访问数据库的应用与router部署在同一节点,但是安全可靠,且高效。 vi etc/mysqlrouter.conf[DEFAULT] logging_folder = /usr/local/mysqlrouter/log/ plugin_folder = /usr/local/mysqlrouter/lib/mysqlrouter/ config_folder = /usr/local/mysqlrouter/etc/ runtime_folder = /usr/local/mysqlrouter/run/ [logger] level = INFO # 负载均衡配置 [routing:balancing] # 绑定的IP端口 socket = /tmp/mysqlrouter.sock # 连接超时时间(秒) connect_timeout = 3 # 最大连接数 max_connections = 100 # 后端服务器地址.默认读进行轮询 destinations = 192.168.4.235:5066,192.168.4.231:5066 # 路由策略 routing_strategy=round-robin [keepalive] interval = 60其中,destinations为上文获得的DDM连接串 连接示例[root@xxx ]# ./mysql -uddmtest -p -S /tmp/mysqlrouter.sock Enter password: mysql>mysql客户端与Mysql Router在同一节点。
-
本篇文章讲述如何通过创建经典型公网负载均衡 (elb-external)示例模板创建堆栈。该模板创建一个包含一个监听器的经典型公网负载均衡,监听器后端可添加2个弹性云服务器。【部署结果展示】点击资源名称可以跳转到所创建的弹性负载均衡资源页面。健康检查:后端云服务器:【部署过程详解】*部署前准备:创建2台弹性云服务器,云服务器可以不绑定弹性IP。创建弹性云服务器时,如果所选择的的安全组规则未包含监听器衡健康检查需要放行的规则,则需要添加,下面以System-default安全组为例添加规则:其中协议及端口为监听器健康检查使用的协议及端口,源地址固定为100.125.0.0/16:创建弹性云服务器,创建成功后将弹性云服务器的ID拷贝下来,后续填写堆栈配置参数时使用:*参数填写:1.为堆栈填写名称及描述2.填写堆栈的配置参数:模板中包含了负载均衡,监听器,健康检查及后端云服务器四个部分,堆栈配置参数按照这四个部分进行了标签分类,可在对应的标签下填写相关组件的参数。部署时可以直接使用示例模板中的参数,也可以根据实际情况自行选择。2.1 监听器参数:监听器参数说明如下:2.2 负载均衡参数:负载均衡参数如下,其中负载均衡名称自动生成,创建完成后可以在堆栈详情页面看到:模板中的负载均衡默认带有弹性IP,未带有弹性IP的使用方式可以参考经典型私网负载均衡(elb-internal)。参数中的计费方式,EIP类型及VPC的ID均支持下拉选择:2.3 健康检查参数:健康检查的参数设置如下,需要保证协议中设置的访问方式畅通,这里使用TCP 22作为健康检查的协议及端口:2.4 后端云服务器参数:在后端云服务器参数中填写刚才拷贝的弹性云服务器的ID:*模板参数与弹性负载均衡界面对应关系:1.负载均衡:2.监听器:3.健康检查:*扩展:后端云服务器个数的扩展1 通过增加数组长度增加个数:输入界面:2 通过split函数,添加分隔符,弹性云服务器的输入参数可以缩减为一个,这里使用“, ”为分隔符,多个弹性云服务器ID通过“, ”分隔:输入界面:
-
发扬工匠精神,DDM为了给用户提供性能最强的云服务,致力于降低每一个环节上的性能损耗。应用程序连接到DDM的链路上可能会有性能损失,一些企业通过自行研发客户端程序来实现负载均衡,但这样一来,服务部署和升级的复杂度都会大大提升,目前业界并没有通用的成熟的解决方案。针对这一问题,DDM内部实现了MySQL原生通信协议,将自己模拟成一个MySQL客户端,使应用程序连接到DDM和连接到普通的MySQL一样。此外,DDM采用MySQL JDBC驱动自带的负载均衡模型,不仅提供客户端负载均衡,还支持容灾切换,如果集群内部有节点发生故障,驱动会自动屏蔽掉该故障节点,故障恢复后会自动加入到负载均衡。应用程序通过JDBC loadblance连接到DDM,链路畅通无阻,没有中间LB节点带来性能损耗,还提供事务级负载均衡,给用户带来卓越的性能体验。
-
弹性负载均衡使用的IP由ELB独占吗?
-
弹性负载均衡的可以消除单点故障吗?
-
负载均衡运行中是否可调整ECS数量?
-
负载均衡如何收费?
推荐直播
-
HDC深度解读系列 - Serverless与MCP融合创新,构建AI应用全新智能中枢2025/08/20 周三 16:30-18:00
张昆鹏 HCDG北京核心组代表
HDC2025期间,华为云展示了Serverless与MCP融合创新的解决方案,本期访谈直播,由华为云开发者专家(HCDE)兼华为云开发者社区组织HCDG北京核心组代表张鹏先生主持,华为云PaaS服务产品部 Serverless总监Ewen为大家深度解读华为云Serverless与MCP如何融合构建AI应用全新智能中枢
回顾中 -
关于RISC-V生态发展的思考2025/09/02 周二 17:00-18:00
中国科学院计算技术研究所副所长包云岗教授
中科院包云岗老师将在本次直播中,探讨处理器生态的关键要素及其联系,分享过去几年推动RISC-V生态建设实践过程中的经验与教训。
回顾中 -
一键搞定华为云万级资源,3步轻松管理企业成本2025/09/09 周二 15:00-16:00
阿言 华为云交易产品经理
本直播重点介绍如何一键续费万级资源,3步轻松管理成本,帮助提升日常管理效率!
回顾中
热门标签