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

举报
勤劳的星星 发表于 2018/09/21 10:01:25 2018/09/21
【摘要】 分布式数据库中间件DDM提供分库分表、读写分离、弹性扩容等能力,应对海量数据的高并发访问场景,有效提升数据库读写性能。Sidecar模式是一种从应用程序本身剥离应用程序功能作为单独进程的方法。此模式允许我们向应用无侵入添加多种功能,从而无需向应用程序添加其他配置代码。Sidecar模式实现负载均衡可以缩短调用链路,减少服务端中心节点的压力,去中心化,使用更加可靠更加高效。

1 简介

分布式数据库中间件 DDM

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


MySQL Router

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

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


参考资料:

分布式数据(DDM

https://www.huaweicloud.cn/product/ddm.html

MySQL 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.html

mysql-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/mysqlrouter

mkdir logs

mkdir 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连接串,如下图所示

image.png



下面详细介绍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.2Mysql 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在同一节点。

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。