NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

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

评论

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

如何赋能企业数字化转型?华为云有妙招

YG科技

星耀数字中国,先要存下宇宙山河

脑极体

存储

与中小企业共生共赢,华为云B2B企业节来了

YG科技

蓝易云:如何在 RHEL 8 或者 CentOS 8 上安装 MongoDB?

百度搜索:蓝易云

mongodb 云计算 centos 运维 RHEL

企业综合信息化,人力资源管理,培训考学管理,电子采购(源码系统)

金陵老街

java;

ARTS 打卡 第一周,初试ARTS

三掌柜

ARTS 打卡计划

使用 NGINX Unit 实施应用隔离

NGINX开源社区

Unit 应用隔离

分布式锁的3种实现!附代码

王磊

Java

泄露个人信息的2300余名“内鬼”被抓?

极盾科技

数据安全

阿里云PAI-灵骏大模型训练工具Pai-Megatron-Patch正式开源!

阿里云大数据AI技术

机器学习 阿里云

Scrum Master,这九个问题你问了吗?

敏捷开发

项目管理 敏捷开发 团队协作 Scrum Master

MGR新节点RECOVERING状态的分析与解决:caching_sha2_password验证插件的影响

GreatSQL

greatsql mgr

Mac电脑最新2023 Xmind 激活中文版

胖墩儿不胖y

思维导图 Mac软件 mac思维导图 思维导图软件

HarmonyOS Codelab 优秀样例——溪村小镇(ArkTS)

HarmonyOS开发者

HarmonyOS

使用代理IP可以解决哪些网络问题?代理ip是怎么优化网络游戏玩家的游戏体验的?

巨量HTTP

代理IP

性能、安全和稳定,DataAPI 为企业 API 保驾护航

袋鼠云数栈

大数据 数据中台 API

跨平台混合应用:用户和开发者的新选择

没有用户名丶

初露头角!Walrus入选服贸会“数智影响力”数字化转型创新案例

SEAL安全

企业数字化转型 数智化 企业号9月PK榜 中国国际服务贸易协会

蓝易云:如何在 Ubuntu 22.04 LTS 上安装分区编辑器 GParted?

百度搜索:蓝易云

云计算 Linux ubuntu 运维 GParted

高性能MySQL实战(三):性能优化 | 京东物流技术团队

京东科技开发者

京东云 企业号9月PK榜

分库表数据倾斜的处理让我联想到了AKF模型 | 京东云技术团队

京东科技开发者

数据库 京东云 企业号9月PK榜

“源聚一堂”开源技术沙龙济南站顺利举办

inBuilder低代码平台

开源 低代码

苹果电脑电量显示软件 Magic Battery中文最新版

mac大玩家j

Mac 软件 电池管理工具 电池软件

奇点云对话顺丰科技、周大生:数据中台不是一次性项目

Geek_2d6073

SPI在Java中的实现与应用 | 京东物流技术团队

京东科技开发者

Java spi 京东云 企业号9月PK榜

2024第二十三届浙江国际智能楼宇技术与智慧安防产品展览会

AIOTE智博会

智慧楼宇展 安防展 智慧安防展

如何实现MongoDB副本集实例间的数据迁移

NineData

数据库 mongodb 复制 迁移 NineData

2024第八届浙江智慧城市与智能建筑产品博览会

AIOTE智博会

智慧城市展 智能建筑展

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