• 分布式数据库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在同一节点。

  • 相关阅读:
    IOS开发创建开发证书及发布App应用(六)——打包应用
    IOS开发创建开发证书及发布App应用(四)——创建配置概要文件
    IOS开发创建开发证书及发布App应用(五)——编译应用
    如何查看SQL Server的版本、补丁包信息?以及如何鉴别是否需要升级自己的SQL Server?
    如何用PowerShell列出你机器上的.NET Framework的版本号和SP服务补丁
    Linux 开放服务端口
    在CentOS/RHEL/Scientific Linux 6下安装 LAMP
    使用ownCloud在Linux安装你的个人云服务
    升級 Centos 6.5 的 php 版本
    reStructuredText(.rst)语法规则快速入门
  • 原文地址:https://www.cnblogs.com/middleware/p/9685067.html
Copyright © 2020-2023  润新知