1. 前言
設置一個統一的入口來控制
mycat
集羣,在這裏我們使用到了HAproxy
來做負載均衡和請求轉發。
2. 架構圖
3. 配置HAproxy
# 創建文件夾
cd /usr/local/docker
mkdir haproxy/etc/haproxy -p
# 創建配置文件
cd /usr/local/docker/haproxy/etc/haproxy
vim 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:123456
#數據庫負載均衡
listen proxy-mysql
#訪問的IP和端口
bind 0.0.0.0:8889
#網絡協議
mode tcp
#負載均衡算法(輪詢算法)
#輪詢算法:roundrobin
#權重算法:static-rr
#最少連接算法:leastconn
#請求源IP算法:source
balance roundrobin
#日誌格式
option tcplog
#對mycat節點進行負載均衡
server mycat_1 mycat:8066 check port 8066 weight 1 maxconn 2000
server mycat_2 mycat02:8066 check port 8066 weight 1 maxconn 2000
#使用keepalive檢測死鏈
option tcpka
4. docker-compose.yml
cd /usr/local/docker/haproxy
vim docker-compose.yml
version: '3'
services:
haproxy:
restart: always
image: haproxy:2.1.2
container_name: haproxy
ports:
- 8888:8888 # 端口來源於haproxy.cfg裏面配置
- 8889:8889 # 統一的端口對mycat, haproxy.cfg裏面配置
volumes:
- ./etc/haproxy:/usr/local/etc/haproxy:ro #ro 表示僅僅只能讀
networks:
default:
external:
name: mysql_network
5. 效果圖
5.1 容器效果
5.2 節點安全圖
ip:port/dbs
5.3 navicat連接圖
6. 補充說明
到現在你會發現。我們出現了一個新的負載均衡軟件。
那麼我們來簡單說說兩者的區別。
nginx
是一個HTTP
服務器/反向代理服務器及電子郵件(IMAP/POP3
)代理服務器。Nginx
跟HAproxy
其實他們兩個的定位是有所不同的,Nginx
的定位是一個server
,HAproxy
的定位是一個load balancer
.HAproxy
負載均衡性能比nginx
好,有一個狀態統計頁面,官方支持會話保持、健康檢查等