更新MQTT SSL证书时,如何缩减AWS上Thingsboard PE的服务器中断时间
缩短Thingsboard PE MQTT SSL证书更新的中断时长
一、把MQTT SSL终止转移到HA Proxy(首推方案)
你已经用HA Proxy搞定了HTTP的SSL处理,直接把MQTT的SSL终止也挪到HA Proxy上就行:
- 修改HA Proxy配置,新增MQTT SSL端口(比如8883)的监听规则,流量转发到后端Thingsboard的普通MQTT端口(1883)
- 之后更新SSL证书时,只需要重启HA Proxy(耗时不到1秒),根本不用碰Thingsboard,直接消除那50秒的中断
- 参考配置片段:
frontend mqtt_ssl bind *:8883 ssl crt /path/to/your/cert.pem mode tcp default_backend tb_mqtt_backend backend tb_mqtt_backend mode tcp server tb1 <你的TB实例IP>:1883 check
二、试试Thingsboard配置热重载(看版本支持)
部分Thingsboard PE版本支持不重启服务就能重载SSL配置:
- 翻下TB的配置文件,找有没有类似
mqtt.ssl.reload.enabled的参数,设为true - 更新证书后,给TB进程发SIGHUP信号:
kill -SIGHUP <TB进程PID> - 注意:这个功能不是所有版本都有,得对照你用的TB PE版本确认
三、集群环境用滚动重启
如果是多节点的TB集群部署:
- 一个节点一个节点地重启,每次只停一个,其他节点正常处理MQTT连接
- 重启前先通过HA Proxy把该节点的流量摘掉,重启完再重新加回来
- 这种方式能把整体中断压到最低,用户基本感觉不到
四、Thingsboard Cloud的实现思路
Thingsboard Cloud用的是SSL终止层和业务服务分离的架构:
- 所有SSL终止(不管是HTTP还是MQTT)都交给前端负载均衡层处理,TB核心业务服务只处理明文流量
- 更新证书时只需要在负载均衡层换证书并重启负载均衡组件,业务服务完全不用动
- 再配合多可用区的集群部署,连负载均衡层更新都不会有单点中断
内容的提问来源于stack exchange,提问作者Taka
相关产品推荐
相关产品推荐

