HAProxy配置SSL后连接Apache Pulsar Admin REST API报错咨询
问题核心原因
你当前的HAProxy配置存在逻辑冲突,是访问异常的直接诱因:
在mode tcp下给bind配置了ssl crt参数代表HAProxy会在入口侧完成SSL终结,将解密后的明文流量转发给后端,但你转发的目标是Pulsar Proxy的8443端口(默认是Pulsar Proxy的HTTPS/SSL监听端口),明文流量发给要求SSL握手的端口自然会被拒绝,或者握手失败触发不安全告警。
两种部署方案的证书配置要求
你可以根据场景二选一,不同方案对Pulsar侧的证书配置要求完全不同:
方案1:SSL终结在HAProxy侧(推荐测试/内网环境使用)
该场景下Pulsar Proxy和Broker不需要单独配置公网SSL证书:
- HAProxy侧保留现有
bind :8443 ssl crt /etc/letsencrypt/live/my_url/haproxy_cert.pem配置,负责公网侧的SSL加密/解密 - 修改HAProxy后端转发目标为Pulsar Proxy的HTTP Admin默认端口
8080,而非HTTPS的8443端口,示例配置调整:
listen https_frontend bind :8443 ssl crt /etc/letsencrypt/live/my_url/haproxy_cert.pem # 也可以改成mode http,支持更丰富的HTTP层健康检查、规则配置 mode tcp option tcplog balance roundrobin server proxy1 10.0.0.X:8080 check maxconn 10000 server proxy2 10.0.0.X:8080 check maxconn 10000 server proxy3 10.0.0.X:8080 check maxconn 10000 server proxy4 10.0.0.X:8080 check maxconn 10000
- Pulsar Proxy无需开启SSL配置,保持默认HTTP监听即可,Pulsar Broker也仅需要和Proxy保持内网非SSL通信即可,无需额外配置证书。
方案2:SSL透传(推荐安全要求高的生产环境使用)
该场景下需要给所有Pulsar Proxy单独配置和公网域名匹配的SSL证书,如果要求Proxy到Broker的内网通信也加密,Broker也需要配置内网信任的SSL证书:
- 调整HAProxy配置,删除
bind后的SSL证书配置,仅做TCP流量透传,不参与SSL握手:
listen https_frontend bind :8443 mode tcp option tcplog balance roundrobin server proxy1 10.0.0.X:8443 check maxconn 10000 server proxy2 10.0.0.X:8443 check maxconn 10000 server proxy3 10.0.0.X:8443 check maxconn 10000 server proxy4 10.0.0.X:8443 check maxconn 10000
- 所有Pulsar Proxy的8443端口都需要配置和你访问域名匹配的Let's Encrypt证书,否则客户端会触发证书不匹配的不安全警告。
内容的提问来源于stack exchange,提问作者madtowneast
相关产品推荐
相关产品推荐

