写点什么

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

评论

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

25个Linux系统性能调优技巧

威哥爱编程

Linux 系统调优

MQTT vs HTTP:谁更适合物联网?

EMQ映云科技

物联网 HTTP mqtt emqx

智算基石全栈加速,百度百舸 4.0 的技术探索和创新

百度Geek说

百度 大模型 技术 优化体系

AIGC技术的变革:语音识别与视觉识别的深度融合

测吧(北京)科技有限公司

测试

文生图与文生视频:从文本到视觉的创作革命

测吧(北京)科技有限公司

测试

开源大模型的私有部署:Llama与千问的比较研究

测吧(北京)科技有限公司

测试

云栖实录 | 大模型驱动,开源融合的 AI 搜索产品发布

阿里云大数据AI技术

大数据 开源 大模型 AI搜索

同风起,耀星河!华为携手伙伴一起创造无限可能

HarmonyOS开发者

HarmonyOS

火山引擎边缘智能×扣子,拓展AI Agent物理边界

火山引擎边缘云

堡垒机价格贵吗?一定要买堡垒机吗?

行云管家

网络安全 堡垒机 数据泄露

得物一面,都是非常经典的问题

王中阳Go

Go 面试 后端

京东零售数据湖应用与实践

京东零售技术

数据湖 数据

部署 LLMs 前如何计算与优化 GPU 内存需求?

Baihai IDP

程序员 AI gpu LLMs

橱窗LED透明屏:展示和广告的新宠

Dylan

广告 制造 LED display LED显示屏 市场

社交软件红包技术解密(二):解密微信摇一摇红包从0到1的技术演进

JackJiang

即时通讯;IM;网络编程

OCR+PDF解析配套前端工具开源详解!

合合技术团队

#开源 #前端 ODR

Kafka集群升级项目实施方案,打造高效数据处理平台

敏捷调度TASKCTL

kafka hadoop cloudera 集群 大数据运维

国内外大模型应用的现状与未来:以ChatGPT、Mixtral和Llama为例

测吧(北京)科技有限公司

测试

世界第一!华为云图引擎服务GES大幅刷新世界纪录

华为云开发者联盟

华为云 图数据库

零信任身份安全的基本原则

芯盾时代

身份安全 零信任模型

1688电商生态新引擎:商品详情API引领行业发展新篇章

代码忍者

pinduoduo API API 性能测试

用豆包MarsCode 和CozeAPI接口全自动做一个文生图组件

Trae

人工智能 大数据 AI Chat

检索增强生成(RAG)技术在知识图谱中的应用:Neo4j的探索

测吧(北京)科技有限公司

测试

罗格科技:全球税务服务领域初露锋芒 罗格罗拉国际税大模型发布

科技热闻

社区周刊·Vol.182

华为云开发者联盟

开发者 华为云

Redis桌面管理工具:Redis Desktop Manager for Mac 中文版

你的猪会飞吗

Mac软件下载站 mac破解软件下载

国际开发者成为 Apache IoTDB Committer,新视角谈开源经验!

Apache IoTDB

数据库 开源 时序数据库 IoTDB Apache IoTDB

测试流程必须严格执行吗?

老张

软件测试 验收测试 质量保障 流程规范

大数据存储计算平台EasyMR:多集群统一管理助力企业高效运维

袋鼠云数栈

揭秘京东商品详情一键获取的API之旅

代码忍者

pinduoduo API API 性能测试

解锁极致性能:Arm Cortex-X925 IPC 提升15%,终端用户体验感再突破

新消费日报

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