50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

干货丨分布式数据库 DDM Sidecar 模式负载均衡

  • 2019-10-21
  • 本文字数:2079 字

    阅读完需:约 7 分钟

干货丨分布式数据库DDM Sidecar模式负载均衡

01 分布式数据库中间件 DDM

分布式数据库中间件(Distributed Database Middleware)是解决数据库容量、性能瓶颈和分布式扩展问题的中间件服务,提供分库分表、读写分离、弹性扩容等能力,应对海量数据的高并发访问场景,有效提升数据库读写性能。

02 MySQL Router

mysql-router 是 mysql 官方的轻量级的中间件,用于取代 MySQL Proxy 应用程序像访问 MySQL 一样访问 MySQL Router,由 MySQL Router 将数据转发给后端的 DDM 节点,实现 Sidecar 模式负载均衡。


Sidecar 模式是一种从应用程序本身剥离应用程序功能作为单独进程的方法。此模式允许我们向应用无侵入添加多种功能,从而无需向应用程序添加其他配置代码。建议 MySQL Router 与应用程序部署在同一台机器做 Sidecar 模式负载均衡,相对于服务端形式的负载均衡,Sidecar 模式实现负载均衡可以缩短调用链路,减少服务端中心节点的压力,去中心化,使用更加可靠更加高效。

部署 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 &
复制代码

配置文件详解

首先,获取 DDM 连接串,如下图所示:



下面详细介绍 mysql-router 三种配置方式:

01 作为中心代理节使用

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 -pEnter password:
mysql>
复制代码


128.11.2.2 为 Mysql Router 所在 IP。

02 作为本地数据库代理使用

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 -pEnter password:
mysql>
复制代码


mysql 客户端与 Mysql Router 在同一节点。

03 作为本地数据库代理,使用 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.sockEnter password: mysql>
复制代码


mysql 客户端与 Mysql Router 在同一节点。


本文转载自公众号中间件小哥(ID:huawei_kevin)。


原文链接:


https://mp.weixin.qq.com/s/SjgzSkzNXGrQfD-9QNYUzw


2019-10-21 23:59938

评论

发布
暂无评论
发现更多内容

HarmonyOS :自定义弹窗(CustomDialog)的解耦实践

李小轰

HarmonyOS NEXT

HarmonyOS :扩展修饰器,实现节流、防抖、权限申请

李小轰

HarmonyOS NEXT

HarmonyOS :ArkUI `动态组件` 与`组件工厂` 的最佳封装策略

李小轰

HarmonyOS NEXT

基于 AutoFlow 快速搭建基于 TiDB 向量能力的本地知识库问答机器人

TiDB 社区干货传送门

8.x 实践

【解锁】华为云全栈可观测平台——9月10月新功能特性

平平无奇爱好科技

淘宝天猫API接口:解锁商品详情与关键字搜索的无限可能

代码忍者

API 接口 pinduoduo API

Domino 流计算快速上手 - 2. 聚集

YMatrix 超融合数据库

数据库 数据仓库 流计算 超融合数据库

记一起 TiFlash 副本同步被卡住的问题

TiDB 社区干货传送门

管理与运维 7.x 实践

亚洲唯一!华为云入选Gartner®云应用平台魔力象限

平平无奇爱好科技

租用 4090 算力云电脑,这些性能指标需关注!

Finovy Cloud

云桌面 显卡 云电脑

HarmonyOS :基于 emitter 封装了一个便捷的 EventBus 事件通知

李小轰

HarmonyOS NEXT

HarmonyOS UI动态化:探索自定义组件的创建与实时更新技术

李小轰

HarmonyOS NEXT

华为云软件开发生产线(CodeArts)10月新功能特性

平平无奇爱好科技

汽车摆臂行业数字化转型方案及MES系统具体功能介绍

万界星空科技

汽车 mes 汽车零部件mes 汽车摆臂行业 汽车摆臂mes

HarmonyOS :自定义组件 @BuilderParam 中 this 作用域填坑小记

李小轰

HarmonyOS NEXT

ClkLog埋点系统基于ClickHouse的百万日活测试报告

ClkLog

测试 数据采集 sdk 用户分析 开源软件

TiDB 无统计信息时执行计划如何生成

TiDB 社区干货传送门

管理与运维 TiDB 源码解读

内存分配 Allocstall 导致 SQL 抖动的分析

TiDB 社区干货传送门

管理与运维 故障排查/诊断

HarmonyOS :面向对象式网络请求库,我发布的第一个鸿蒙三方库

李小轰

HarmonyOS NEXT

探索HarmonyOS:一键掌握Router与NavPathStatck的传参和页面回调技巧

李小轰

HarmonyOS NEXT

V7.5.3安装tidb ipv6集群(redhat 7.9)

TiDB 社区干货传送门

管理与运维 安装 & 部署 7.x 实践

必看!淘宝商品详情数据接口调用,助力商城上货实战全流程(仅供参考)

tbapi

淘宝商品详情接口 商品上货接口

小红书详情API接口的获取与应用

科普小能手

API Python JSON 小红书API接口 小红书笔记接口 小红书API

模拟器快速上手,助力HarmonyOS应用/服务高效开发

白晓明

HarmonyOS 模拟器 HarmonyOS NEXT

HarmonyOS :适配折叠屏展开与收起,实现单屏与双屏UI的无缝切换

李小轰

HarmonyOS NEXT

50万奖金池等你来战! 第二届OpenHarmony创新应用挑战赛再度起航

科技热闻

TIDB 利用follower 角色实现读写分离

TiDB 社区干货传送门

实战丨证券 HTAP 混合业务场景的难点问题应对

TiDB 社区干货传送门

TiDB 优化器丨执行计划和 SQL 算子解读最佳实践

TiDB 社区干货传送门

干货丨分布式数据库DDM Sidecar模式负载均衡_文化 & 方法_姚东海_InfoQ精选文章