雖然搭建了集群,但是不使用資料庫負載均衡,單節點處理所有請求,負載高,效能差
使用haproxy做負載均衡,請求被均勻分發給每個節點,單節點負載低,效能好
1.安裝haproxy映象
從docker倉庫拉取haproxy映象:
docker pull haproxy
2.建立haproxy配置檔案
haproxy容器使用(docker中未生成配置檔案,我們需要在宿主機中自己建立配置檔案)
# 啟動容器時使用目錄對映技術使容器讀取該配置檔案
vi /home/soft/haproxy/haproxy.cfg
配置檔案詳細可以參考
配置檔案如下:
global
#工作目錄
chroot /usr/local/etc/haproxy
#日誌檔案,使用rsyslog服務中local5日誌裝置(/var/log/local5),等級info
log 127.0.0.1 local5 info
#守護程序執行
#日誌格式
#日誌中不記錄負載均衡的心跳檢測記錄
option dontlognull
#連線超時(毫秒)
timeout connect 5000
#客戶端超時(毫秒)
timeout client 50000
#伺服器超時(毫秒)
timeout server 50000
#監控介面
listen admin_stats
#監控介面的訪問的ip和埠
bind 0.0.0.0:8888
#訪問協議
#uri相對位址
stats uri /dbs
#統計報告格式
stats realm global\ statistics
#登陸帳戶資訊
stats auth admin:123456
#資料庫負載均衡
listen proxy-mysql
#訪問的ip和埠
bind 0.0.0.0:3306
#網路協議
mode tcp
#負載均衡演算法(輪詢演算法)
#輪詢演算法:roundrobin
#權重演算法:static-rr
#最少連線演算法:leastconn
#請求源ip演算法:source
balance roundrobin
#日誌格式
option tcplog
#在mysql中建立乙個沒有許可權的haproxy使用者,密碼為空。haproxy使用這個賬戶對mysql資料庫心跳檢測
option mysql-check user haproxy
server mysql_1 172.18.0.2:3306 check weight 1 maxconn 2000
server mysql_2 172.18.0.3:3306 check weight 1 maxconn 2000
server mysql_3 172.18.0.4:3306 check weight 1 maxconn 2000
server mysql_4 172.18.0.5:3306 check weight 1 maxconn 2000
server mysql_5 172.18.0.6:3306 check weight 1 maxconn 2000
#使用keepalive檢測死鏈
option tcpka
3.在資料庫集群中建立空密碼、無許可權使用者haproxy,來供haproxy對mysql資料庫進行心跳檢測
create user 'haproxy'@'%' identified by '';
3.建立兩個haproxy容器
#建立第1個haproxy負載均衡伺服器
docker run -it -d --restart=always -p 4001:8888 -p 4002:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h1 --privileged --net=net1 --ip 172.18.0.7 haproxy
#進入h1容器,啟動haproxy
docker exec -it h1 bash
haproxy -f /usr/local/etc/haproxy/haproxy.cfg
#建立第2個haproxy負載均衡伺服器
docker run -it -d --restart=always -p 4003:8888 -p 4004:3306 -v /home/soft/haproxy:/usr/local/etc/haproxy --name h2 --privileged --net=net1 --ip 172.18.0.8 haproxy
#進入h2容器,啟動haproxy
docker exec -it h2 bash
haproxy -f /usr/local/etc/haproxy/haproxy.cfg
4.在瀏覽器中開啟haproxy監控介面,埠4001,在配置檔案中定義有使用者名稱admin,密碼123456。
我這邊訪問的是並且要使用使用者名稱密碼進行登入
這時候我們手動掛掉乙個docker節點,看一下變化(我們會發現已經顯示掛掉了)
資料庫負載均衡(下)
單節點haproxy不具備高可用,必須要有冗餘設計 雙機就是兩個請求處理程式,比如兩個haproxy,當乙個掛掉的時候,另外 乙個可以頂上。linux系統可以在乙個網絡卡中定義多個ip位址,把這些位址分配給多個應用程式,這些位址就是虛擬ip,haproxy的雙機熱備方案最關鍵的技術就是虛擬ip。定義...
SQL Server資料庫實現負載均衡
微軟官方方案 1 通過分庫分表 分庫磁碟io share disk架構 2 alwayson 第三方軟體服務 1 dbtwin 2 負載均衡產品moebius for sql server 3 資料庫路由器軟體icx 提供ms sql server資料庫伺服器的集群功能,可以實現資料庫伺服器的並行處...
MySQL資料庫優化及負載均衡
mysql 存在4種資料庫引擎 innodb儲存引擎。myisam儲存引擎。memory儲存引擎。archive儲存引擎。本章內容主要針對 innodb和myisam這兩個最常見的做乙個講解和優化。在優化之前我們需要了解這兩個引擎分別的作用是什麼。myisam儲存引擎 myisam基於isam儲存引...