配合上篇文章 MySQL集
使用Haproxy做負載均衡,請求被均勻分發給每個節點,單節點負載低,性能好
1.下載Haproxy
docker pull haproxy
2.編輯haproxy配置文件
放在 /home/soft/haproxy/haproxy.cfg
global
#工作目錄
chroot /usr/local/etc/haproxy
#日誌文件,使用rsyslog服務中local5日誌設備(/var/log/local5),等級info
log 127.0.0.1 local5 info
#守護進程運行
daemon
defaults
log global
mode http
#日誌格式
option httplog
#日誌中不記錄負載均衡的心跳檢測記錄
option dontlognull
#連接超時(毫秒)
timeout connect 5000
#客戶端超時(毫秒)
timeout client 50000
#服務器超時(毫秒)
timeout server 50000
#監控界面
listen admin_stats
#監控界面的訪問的IP和端口
bind 0.0.0.0:8888
#訪問協議
mode http
#URI相對地址
stats uri /dbs
#統計報告格式
stats realm Global\ statistics
#登陸帳戶信息
stats auth admin:abc123456
#數據庫負載均衡
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
運行鏡像
docker run -it -d -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
進入容器命令
docker exec -it h1 bash #進入h1容器
haproxy -f /usr/local/etc/haproxy/haproxy.cfg 執行
要在數據庫創建一個用戶 haproxy(因爲haproxy配置文件有數據庫驗證)
CREATE USER 'haproxy'@'%' IDENTIFIED BY '';
進入 haproxy監控後臺關聯
賬戶配置文件裏面 有賬戶和密碼
admin:abc123456