分布式數據庫DDM Sidecar模式負載均衡
時間: 2018-09-21來源:OSCHINA
前景提要
簡介
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在同一節點。

科技資訊:

科技學院:

科技百科:

科技書籍:

網站大全:

軟件大全:

熱門排行
女人个人私人电话联系杭州的|热久久久久香蕉无品码|爱情岛亚洲永久自拍品质|国产丶欧美丶日本不卡