分佈式數據庫DDM Sidecar模式負載均衡

簡介html

1.分佈式數據庫中間件 DDMmysql

分佈式數據庫中間件(Distributed Database Middleware)是解決數據庫容量、性能瓶頸和分佈式擴展問題的中間件服務,提供分庫分表、讀寫分離、彈性擴容等能力,應對海量數據的高併發訪問場景,有效提高數據庫讀寫性能。linux

2.MySQL Routersql

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在同一節點。

相關文章
相關標籤/搜索