写点什么

干货丨分布式数据库 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:59975

评论

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

阿里云全球大崩溃是意外?盘点那些自称安全的云厂商

轶天下事

WorkPlus IM即时通讯软件:私有化部署、安全加密、信创适配

BeeWorks

WorkPlus Meet:局域网内部使用的高效视频会议系统

BeeWorks

KK 架构训练营 - Week3

jjn0703

架构

华大北斗荣获2023年度卫星导航定位科技进步奖特等奖

江湖老铁

Linux提取RPM包文件

芯动大师

CnosDB 狂欢!全面支持 Helm 部署,轻松搞定你的分布式时序数据库!

CnosDB

开源 时序数据库 CnosDB

从“浮云”到“冰山”:华为云安全的绝世“五功”

轶天下事

文心一言 VS 讯飞星火 VS chatgpt (133)-- 算法导论11.2 5题

福大大架构师每日一题

福大大架构师每日一题

Console LDAP 配置解密

极限实验室

console ldap

为什么说Kstry是业务架构首选框架

lykan

微服务 后端 并发 规则引擎 流程编排

阿里云全球宕机:从阿里云故障看企业IT挑战

轶天下事

阿里云的故障是一次意外还是一次危机?

轶天下事

WorkPlus即时通讯app:10分钟快速搭建,支持局域网私有化部署!

BeeWorks

如何在 Python 中执行 MySQL 结果限制和分页查询

小万哥

Python 程序员 软件 后端 开发

选购护眼台灯,全网都没有说清一个关键点!——照度均匀度

电子信息发烧客

AWS云服务器EC2实例进行操作系统迁移

乌龟哥哥

AWS Amazon EC2

阿里云全球性故障引发技术圈热议,企业IT应急应该怎么办?

轶天下事

阿里云严重故障,全线产品受影响(已恢复)

轶天下事

AI应用新时代的起点,亚马逊云科技加速大模型应用

不叫猫先生

人工智能 大语言模型 Amazon CodeWhisperer

2.4.0 Milky Way 强势登场!新功能大爆炸,让你High翻全场!

CnosDB

开源 时序数据库 CnosDB

低代码观点分享文,邀您来讨论

inBuilder低代码平台

低代码平台

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