資料庫負載均衡(上)

2021-09-24 16:42:05 字數 3225 閱讀 1731

雖然搭建了集群,但是不使用資料庫負載均衡,單節點處理所有請求,負載高,效能差

使用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儲存引...