如何使用haproxy去代理8883的端口转发给1883

haproxy如果按照
用 HAProxy 负载均衡 EMQX 集群 | EMQX 5.2 文档
backend mqtt_backend
mode tcp
balance roundrobin
server emqx1 emqx1-cluster.emqx.io:1883 check-send-proxy send-proxy-v2
server emqx2 emqx2-cluster.emqx.io:1883 check-send-proxy send-proxy-v2
server emqx3 emqx3-cluster.emqx.io:1883 check-send-proxy send-proxy-v2

frontend mqtt_tls_frontend
bind *:8883 ssl crt /etc/haproxy/certs/server.pem
required
mode tcp
default_backend mqtt_backend
去配置,但是这里代理转发8883端口,mqtt本身不是就占用8883端口了吗,所以先启动emqx,再启动haproxy会显示8883端口被占用,所以如果是使用haproxy,那么该如何配置haproxy去终结SSL

我haproxy的配置是:
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
stats socket /var/lib/haproxy/stats
ssl-default-bind-ciphers PROFILE=SYSTEM
ssl-default-server-ciphers PROFILE=SYSTEM
tune.ssl.default-dh-param 2048

backend mqtt_backend
mode tcp
balance roundrobin
timeout server 1m
timeout connect 30s
server emqx1 127.0.0.1:1883 check-send-proxy send-proxy-v2

frontend mqtt_tls_frontend
bind *:8884 ssl crt /etc/haproxy/haproxyCer.pem
mode tcp
timeout client 1m
default_backend mqtt_backend

请问问题出在哪里

使用这个配置是不能把 haproxy 跟 emqx 部署在同一个机器上的。你需要另外一个单独的机器部署 haproxy.

如果你希望部署在同一个机器上,你可以修改 emqx 的 listener 配置,让 emqx 不再使用 8883 端口。e.g. listeners.ssl.default.bind = 8893