分布式数据库DDM Sidecar模式负载均衡
简介
1.分布式数据库中间件 DDM
分布式数据库中间件(Distributed Database Middleware)是解决数据库容量、性能瓶颈和分布式扩展问题的中间件服务,提供分库分表、读写分离、弹性扩容等能力,应对海量数据的高并发访问场景,有效提升数据库读写性能。
2.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/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 &
配置文件详解
首先,获取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 -p
Enter 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 -p
Enter 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.sock
Enter password:
mysql>
mysql客户端与Mysql Router在同一节点。
分布式数据库DDM Sidecar模式负载均衡的更多相关文章
- 搞懂分布式技术9:Nginx负载均衡原理与实践
搞懂分布式技术9:Nginx负载均衡原理与实践 本篇摘自<亿级流量网站架构核心技术>第二章 Nginx负载均衡与反向代理 部分内容. 当我们的应用单实例不能支撑用户请求时,此时就需要扩容, ...
- LVS DR模式 负载均衡服务搭建
LVS 负载均衡 最近在研究服务器负载均衡,阅读了网上的一些资料,发现主要的软件负载均衡方案有nginx(针对HTTP服务的负载均衡),LVS(针对IP层,MAC层的负载均衡).LVS模式工作在网络层 ...
- LVS+Keepalived-DR模式负载均衡高可用集群
LVS+Keepalived DR模式负载均衡+高可用集群架构图 工作原理: Keepalived采用VRRP热备份协议实现Linux服务器的多机热备功能. VRRP,虚拟路由冗余协议,是针对路由器的 ...
- SQL Server上唯一的数据库集群:负载均衡、读写分离、容灾(数据零丢失、服务高可用)
SQL Server上唯一的数据库集群:负载均衡.读写分离.容灾(数据零丢失.服务高可用).审计.优化,全面解决数据库用户问题.一键安装,易用稳定,性价比高,下载链接:http://www.zheti ...
- 高级java高并发,高性能,分布式,高可用,负载均衡,系统架构实战
java架构师.集群.高可用.高可扩 展.高性能.高并发.性能优化.Spring boot.Redis.ActiveMQ.Nginx.Mycat.Netty.Jvm大型分布 式项目实战 视频课程包含: ...
- windows NLB实现MSSQL读写分离--从数据库集群读负载均衡
主从模式,几乎大部分出名的数据库都支持的一种集群模式. 当Web站点的访问量上去之后,很多站点,选择读写分离,减轻主数据库的的压力.当然,一主多从也可以作用多个功能,比如备份.这里主要演示如何实现从数 ...
- Dubbo学习(二) Dubbo 集群容错模式-负载均衡模式
Dubbo是Alibaba开源的分布式服务框架,我们可以非常容易地通过Dubbo来构建分布式服务,并根据自己实际业务应用场景来选择合适的集群容错模式,这个对于很多应用都是迫切希望的,只需要通过简单的配 ...
- Linux下Apache与Tomcat的完全分布式集群配置(负载均衡)
最近公司要给客户提供一套集群方案,项目组采用了Apache和Tomcat的集群配置,用于实现负载均衡的实现. 由于以前没有接触过Apache,因此有些手生,另外在网上搜寻了很多有关这方面的集群文章,但 ...
- 基于amoeba实现mysql数据库的读写分离/负载均衡
一.Amoeba的简述:[来自百度百科] Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请 ...
随机推荐
- CAD参数绘制半径标注(网页版)
主要用到函数说明: _DMxDrawX::DrawDimRadial 绘制一个半径标注.详细说明如下: 参数 说明 DOUBLE dCenterX 被标注的曲线的中点X值 DOUBLE dCenter ...
- Java IO(三)--字节流基本使用
I/O流分类: InputStream和Read的子类都有read(),用来读取单个字节或字节数组 OutputStream和write的子类都有write(),用来写入单个字节或字节数组 一般都是通 ...
- SqlServer数据库练习20190211
一条update语句,修改多个条件 update orderdt_jimmy set qty = (case else qty end); 好了,就这样
- 利用jQuery对li标签操作
<ul class="con" id="products"> <li i=" class=""> < ...
- C++如何显式调用常成员函数
C++的常成员函数与同名成员函数重载时,该如何显式调用常成员函数? 具体的一个小例子: #include <iostream> using namespace std; class C1 ...
- 12.Spring通过FactoryBean配置Bean
为啥要使用FactoryBean: 在配置Bean的时候,需要用到IOC容器中的其它Bean,这个时候使用FactoryBean配置最合适. public class Car { private St ...
- mysql查询排名
student_work表 student_info表 sql语句:按grade从高到低排名 结果:
- jQuery的ready与js的load事件的区别
摘自:http://www.cnblogs.com/see7di/archive/2011/07/15/2239677.html 为了理解这两个事件的异同,读者应该先了解HTML文档加载的顺序. DO ...
- stark组件之显示页面内容搭建(六)
之前主要介绍了前端页面list_fiter功能的显示,但是list_display功能的展示并没有过多介绍,这里介绍一下是如何实现的. 可以看到凡是蓝线圈起来的都是通过字段名反射一个个取出来的,红线的 ...
- (十五)python3 可变长参数(arg,*args,**kwargs)
可变长参数(*args,**kwargs) 一.最常见的是在定义函数时,预先并不知道, 函数使用者会传递多少个参数给你, 所以在这个场景下使用这两个关键字.其实并不是必须写成*args 和**kwar ...