1. 程式人生 > >【華為雲分散式資料庫中介軟體 DDM】sidecar負載均衡配置

【華為雲分散式資料庫中介軟體 DDM】sidecar負載均衡配置

目錄

福利發放

產品介紹

配置方法

福利發放

目前華為雲分散式資料庫中介軟體DDM有試用體驗活動,申請華為雲賬號後可以單擊如下圖片一鍵體驗:

DDM1.PNG

產品介紹

華為雲分散式資料庫中介軟體(Distributed Database Middleware,簡稱DDM),專注於解決資料庫分散式擴充套件問題,突破了傳統資料庫的容量和效能瓶頸,實現海量資料高併發訪問。

配置方法

該負載均衡配置方式適合除了java語言以外的語言來訪問,如python 、php等。

  1. 解壓安裝程式檔案,以“mysql-router-8.0.11-linux-glibc2.12-x86-64bit.tar.gz”版本為例。

    [[email protected] mytmp]# tar -xzvf mysql-router-8.0.11-linux-glibc2.12-x86-64bit.tar.gz

  2. 重新命名安裝資料夾。

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

  3. 建立日誌和配置相關檔案存放目錄。

    [[email protected] mytmp]# cd /usr/local/mysqlrouter

    [[email protected]

    mysqlrouter]# mkdir logs

    [[email protected] mysqlrouter]# mkdir etc

  4. 用模板檔案建立配置檔案。

    [[email protected] 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例項詳情中的連線地址獲取。

      連線例項如下:

      [[email protected] ]# ./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

      連線示例如下:

      [[email protected] ]# ./mysql -uddmtest -h128.11.2.2 -P7002 -p
      
      Enter password:
      
      mysql>

      其中128.11.2.2為Mysql Router所在IP。

  5. 啟動mysql router。

    [[email protected] mysqlrouter]# cd bin

    [[email protected] 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()