【华为云分布式数据库中间件 DDM】sidecar负载均衡配置

目录

福利发放

产品介绍

配置方法


福利发放

目前华为云分布式数据库中间件DDM有试用体验活动,申请华为云账号后可以单击如下图片一键体验:

【华为云分布式数据库中间件 DDM】sidecar负载均衡配置_第1张图片

产品介绍

华为云分布式数据库中间件(Distributed Database Middleware,简称DDM),专注于解决数据库分布式扩展问题,突破了传统数据库的容量和性能瓶颈,实现海量数据高并发访问。

配置方法

该负载均衡配置方式适合除了java语言以外的语言来访问,如python 、php等。

  1. 解压安装程序文件,以“mysql-router-8.0.11-linux-glibc2.12-x86-64bit.tar.gz”版本为例。

    [root@mysqlrouter mytmp]# tar -xzvf mysql-router-8.0.11-linux-glibc2.12-x86-64bit.tar.gz

  2. 重命名安装文件夹。

    [root@mysqlrouter mytmp]# mv mysql-router-8.0.11-linux-glibc2.12-x86-64bit /usr/local/mysqlrouter

  3. 创建日志和配置相关文件存放目录。

    [root@mysqlrouter mytmp]# cd /usr/local/mysqlrouter

    [root@mysqlrouter mysqlrouter]# mkdir logs

    [root@mysqlrouter mysqlrouter]# mkdir etc

  4. 用模板文件创建配置文件。

    [root@mysqlrouter mysqlrouter]#cp share/doc/mysqlrouter/sample_mysqlrouter.conf ./etc/mysqlrouter.conf

    建议应用与MyRouter部署在同一节点,且参考xxx配置和使用Unix sockets连接,以增加安全性和提访问效率。

    1. 使用Unix sockets

      说明:

      APP与Router部署在同一节点,基于安全和高效性考虑,可将绑定IP改为127.0.0.1(vi etc/mysqlrouter.conf)或注释配置项bind_address,只用socket进行连接。

      [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:7002
      
      bind_address = 127.0.0.1:7002
      
      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管理控制台,DDM实例详情中的连接地址获取。

      连接实例如下:

      [root@xxx ]# ./mysql -uddmtest -p -S /tmp/mysqlrouter.sock
      
      Enter password:
      
      
      
      mysql>

       

    2. 使用IP和端口

      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。

  5. 启动mysql router。

    [root@mysqlrouter mysqlrouter]# cd bin

    [root@mysqlrouter bin]# ./mysqlrouter -c /usr/local/mysqlrouter/etc/mysqlrouter.conf &

  6. 连接验证。

    python连接示例:

    import mysql.connector
    
    import time
    
    import traceback
    
    # connection = mysql.connector.Connect(host="128.11.2.2", user="ddmtest", passwd="123456", port=7002)
    
    connection = mysql.connector.Connect(user="ddmtest", passwd="123456", unix_socket="/tmp/mysqlrouter.sock")
    
    cursor = connection.cursor()
    
    for num in range(0, 10):
    
    try:
    
    cursor.execute("use db_demo")
    
    cursor.execute("insert into t_demo(col1) values('haha');")
    
    cursor.execute("select * from t_demo; ")
    
    rows = cursor.fetchall()
    
    for row in rows:
    
    print row[1]
    
    time.sleep(0.1)
    
    except Exception, e:
    
    print traceback.print_exc()
    
    if not connection.is_connected():
    
    connection.reconnect(10, 1)
    
    cursor.close()
    
    connection.close()

     

你可能感兴趣的:(云服务,分布式数据库,mysql)