Doris数据库负载均衡:基于Docker的HAProxy部署指南
首先上官网文档
负载均衡 - Apache Doris
官网提供了几种方式:nginx,HAproxy,PROXYSQL等。对于我们生产环境而言,同时需要mysql协议和http(stream load)两种方式的负载均衡,那么毫无疑问选择HAproxy最佳,在支持两种方式的情况下支持故障检测和切换,还有一个简单的监控面板可以查看。
由于生产环境全内网+centos7,基本上主流的二进制包都不再支持这个系统了,遂考虑使用docker部署,一开始直接使用doris官方提供的haproxy.conf,发现跑不起来,研究后发现HAproxy的裸金属服务器配置和docker配置是完全不一样的,网上也没搜到相应的docker配置,这里贴出来能正常使用的配置与大家分享。
我这里使用的是haproxy:3.2.7镜像:
docker run -d \
--name doris-proxy \
--restart=always \
-v /opt/haproxy/haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro \
--net=host \
haproxy:3.2.7
global
# 最大连接数
maxconn 10000
# 文件句柄数
ulimit-n 65536
defaults
log global
mode http
option dontlognull
retries 3
option redispatch
timeout connect 5000ms
timeout client 600000ms
timeout server 600000ms
# 1. MySQL 协议 (TCP 模式) - 端口 9030
frontend fe_doris_mysql_9030
# 监听 9030 端口
bind *:9030
mode tcp
# 默认的后端服务器池
default_backend be_doris_mysql_9030
backend be_doris_mysql_9030
mode tcp
balance leastconn
option tcp-check
# !!! 请将这里的 IP 替换为真实 FE IP !!!
server fe_node_1 34.191.49.1:9030 check inter 2s rise 2 fall 3
server fe_node_2 34.191.49.2:9030 check inter 2s rise 2 fall 3
server fe_node_3 34.191.49.3:9030 check inter 2s rise 2 fall 3
# 2. Stream Load (HTTP 模式) - 端口 8030
frontend fe_doris_http_8030
# 监听 8030 端口 (供 Flink/Stream Load 使用)
bind *:8030
mode http
default_backend be_doris_http_8030
backend be_doris_http_8030
mode http
# HTTP 模式使用轮询即可
balance roundrobin
# HTTP 健康检查
option httpchk GET /
http-check expect status 200
# !!! 请将这里的 IP 替换为真实 FE IP !!!
server fe_node_1 34.191.49.1:8030 check inter 2s rise 2 fall 3
server fe_node_2 34.191.49.2:8030 check inter 2s rise 2 fall 3
server fe_node_3 34.191.49.3:8030 check inter 2s rise 2 fall 3
# 3. HAProxy 统计监控页面
listen stats
bind *:19000
mode http
stats enable
stats uri /haproxy_stats
# !!! 请修改为强密码 !!!
stats auth admin:123456
stats refresh 5s