一、该问题的重现步骤是什么?
1. broker 集群模式 每个服务如何配置
2. nginx 如何配置
3.
二、你期待的结果是什么?实际看到的又是什么?
三、你正在使用的是什么产品,什么版本?在什么操作系统上?
四、请提供详细的错误堆栈信息,这很重要。
五、若有更多详细信息,请在下面提供。
配置文档看这里:https://iot.bladex.cn/tech/start/backend-cluster.html
如果broker部署多个,要把默认的 8888、1883、8083 这些端口都改成不重复的。
nginx部署配置如下:
设备 ──> mqtt.example.com:1883 / 8083 / 8883 / 8084
│ DNS A 记录 → nginx 公网 IP
▼
nginx stream(四层透传,按设备源 IP 一致性哈希)
├─> broker-1 127.0.0.1:11883(TCP) / 18083(WebSocket)
├─> broker-2 127.0.0.1:11884(TCP) / 18084(WebSocket)
└─> broker-3 127.0.0.1:11885(TCP) / 18085(WebSocket)nginx 不解析 MQTT 协议,只负责转发 TCP 连接。消息能跨节点送达由集群模式的 Kafka 广播保证,与 nginx 无关。
worker_processes auto;
worker_rlimit_nofile 200000;
events {
worker_connections 100000;
}
stream {
upstream mqtt_tcp {
hash $remote_addr consistent;
server 127.0.0.1:11883 max_fails=2 fail_timeout=30s;
server 127.0.0.1:11884 max_fails=2 fail_timeout=30s;
server 127.0.0.1:11885 max_fails=2 fail_timeout=30s;
}
upstream mqtt_ws {
hash $remote_addr consistent;
server 127.0.0.1:18083 max_fails=2 fail_timeout=30s;
server 127.0.0.1:18084 max_fails=2 fail_timeout=30s;
server 127.0.0.1:18085 max_fails=2 fail_timeout=30s;
}
proxy_connect_timeout 3s;
proxy_next_upstream on;
proxy_next_upstream_tries 3;
proxy_timeout 10m;
ssl_certificate /etc/nginx/cert/mqtt.example.com.pem;
ssl_certificate_key /etc/nginx/cert/mqtt.example.com.key;
ssl_protocols TLSv1.2 TLSv1.3;
# MQTT
server {
listen 1883 backlog=4096;
proxy_pass mqtt_tcp;
proxy_protocol on;
}
# MQTT over WebSocket
server {
listen 8083 backlog=4096;
proxy_pass mqtt_ws;
}
# MQTT + TLS
server {
listen 8883 ssl backlog=4096;
proxy_pass mqtt_tcp;
proxy_protocol on;
}
# WebSocket + TLS
server {
listen 8084 ssl backlog=4096;
proxy_pass mqtt_ws;
}
}
http {
upstream broker_http {
server 127.0.0.1:18881 max_fails=2 fail_timeout=30s;
server 127.0.0.1:18882 max_fails=2 fail_timeout=30s;
server 127.0.0.1:18883 max_fails=2 fail_timeout=30s;
keepalive 32;
}
# 平台下发指令入口,供 blade-server 调用
server {
listen 8888;
location / {
proxy_pass http://broker_http;
proxy_http_version 1.1;
proxy_set_header Connection "";
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_read_timeout 15s;
}
}
}
扫一扫访问 Blade技术社区 移动端