浏览 1.4k
为了使我们的Nginx Plus 具有对MQTT Broker的正常工作状况具有主动健康检查的能力,首先我们要了解MQTT的协议的连接。
0x01 MQTT 协议
第一节我们介绍过,MQTT 是一种基于TCP建立的的一套协议,MQTT报文中也有类似于TCP 三次握手的状态码。
简单来讲,我们只需要构建一个合法的CONNECT 连接,等待MQTT 返回一个CONNACK的回应报文,就能确认MQTT Broker正在处于一个正常工作的状态。
0x02 Nginx Plus构建CONNECT
match mqtt_conn {
# Send CONNECT packet with client ID "nginx health check"
send \x10\x20\x00\x06\x4d\x51\x49\x73\x64\x70\x03\x02\x00\x3c\x00\x12\x6e\x67\x69\x6e\x78\x20\x68\x65\x61\x6c\x74\x68\x20\x63\x68\x65\x63\x6b;
expect \x20\x02\x00\x00; # Entire payload of CONNACK packet
}
send: 表示发送CONNECT 报文
expect: 表示期待服务端回复CONNACK报文
0x03 配置及验证
从上图可见,当我们分别停止和启动mqtt_02 Broker容器,在error_log中会出现健康检查失败的记录。
至此,我们已经介绍过了NGINX Plus 对MQTT 协议的三个使用场景,即负载均衡,会话保持,健康检查。第四节,我们会一起讨论 IoT场景-04:使用NGINX Plus对MQTT的客户端连接进行访问控制。
参考: https://dzone.com/articles/mqtt-load-balancing-and-session-persistence-with-nginx-plus
按点赞数排序
按时间排序