k8s自建emqx对接haproxy问题

使用k8s运用operator部署emqx后 若对外提供wss能力 必须使用nodeport暴露服务么 还有就是确认下haproxy的配置是否正确
目前是采取的nodeport暴露方式
emqx-listeners NodePort 10.103.82.26 8083:31797/TCP,8084:32683/TCP,8883:32035/TCP
listen emqx-wsss
bind *:8084
mode tcp
maxconn 20000
server emqx-wsss1 172.16.0.232:32683 check maxconn 8000 inter 10s downinter 5s rise 2 fall 2 slowstart 60s
server emqx-wsss2 172.16.0.233:32683 check maxconn 8000 inter 10s downinter 5s rise 2 fall 2 slowstart 60s

我不懂K8S和haproxy,可以问问AI或者去operate那里问一下

就是确认使用nodeport方式暴露wss接口是否合适?
还有是对接负载后 emqx是否有提供健康检测的端口确保后端可用?

我觉得合适,
18083上有个status接口用来探活

ok 我试试

经过尝试 发现haproxy代理后端pod wss端口有问题 真机连接不上EMQX WSS服务器 这个具体原因是什么呢请教下:
目前流量:
Haproxy 前端8084 直接tcp代理后端EMQX Pod WSS 8085自定义端口的NodePort30466上面

相关配置
K8S 服务名
emqx-listeners NodePort 10.106.196.123 8084:30856/TCP,8085:30466/TCP,8883:32107/TCP,1883:30880/TCP,1884:32604/TCP,8083:32106/TCP 2d16h

haproxy配置
listen emqx-wsss
bind *:8084
mode tcp
maxconn 20000
server emqx-wsss1 172.16.0.233:30466 check maxconn 8000 inter 10s downinter 5s rise 2 fall 2 slowstart 60s

Pod已经按照官方文档封装TLS证书链到8085端口上面了

大概率是证书错了,
你可以先试一下把不加密的WS端口导出去,
如果成功的话,那就是证书错了。

目前更新证书secret后 经历一段时间后Pod内证书已经变更过来了 业务恢复正常。
延伸的一个问题:
HAProxy直接透传真实IP到服务的WSS话(send proxy)EMQX不需要额外配置吧?
另外想确认的点:
我用HAProxy配置TCP直接负载到后端服务WSS端口下 frontend不需要配置证书就可以连接 是否说明 frontend可以选配SSL相关的配置选项?

(帖子已被作者删除)

需要在监控器处打开 代理协议:详细步骤可以查看官方文档。

这个真的能连上么,我对 HAProxy 了解得还没有你深,就不多说了。

推荐的部署方案是
HAProxy 上来处理证书的事。在 HAProxy 上做了证书终结,直接连到 EMQX 的无证书(TCP)端口即可。不要让 EMQX 处理加密的事,这会更高效。

可以参照这个例子,对你来说就是前面是 tls,后面得对的是ws 端口 8083,而不是 8084

是可以正常连接 四层代理到后端服务 由后端服务终结tls 虽然有性能损失但也问题不大 也是一种部署负载侧的思路