Azure部署Thingsboard CE:双VM连同数据库可行性及问题求助
关于Azure部署Thingsboard CE的双节点可行性、问题解决及安全建议
双VM共享数据库运行是否可行?
完全可行。Thingsboard CE支持无状态节点的横向扩展架构,多个节点可以共享同一个后端数据库(PostgreSQL/Cassandra等)和分布式缓存/消息中间件,以此实现可用性和弹性扩展。但要注意,仅共享数据库还不够,必须配置共享的消息同步组件,否则会出现你遇到的实时数据不同步问题。
仪表板无法自动更新的问题解决
你遇到的设备连VM1时VM2仪表板不自动刷新的问题,核心原因是两个节点没有共享实时事件的同步机制。默认情况下,Thingsboard的WebSocket实时推送依赖节点本地的会话和事件队列,跨节点的事件无法自动同步。解决步骤如下:
- 部署共享Redis实例:在Azure上创建Azure Cache for Redis实例,作为分布式缓存和消息 broker,用于同步跨节点的WebSocket会话和实时数据事件。
- 修改Thingsboard配置:在两台VM的
thingsboard.conf配置文件中,启用Redis相关配置:# 设置队列类型为Redis TB_QUEUE_TYPE=redis # Redis实例地址(Azure Cache for Redis的主机名) REDIS_HOST=your-redis-host.redis.cache.windows.net # Redis端口(默认6380,Azure Redis的TLS端口) REDIS_PORT=6380 # 启用Redis认证 REDIS_PASSWORD=your-redis-access-key # 启用TLS连接Redis REDIS_SSL_ENABLED=true # 设置WebSocket会话管理器为Redis,实现跨节点会话同步 TB_WS_SESSION_MANAGER_TYPE=redis - 重启两台VM上的Thingsboard服务:配置生效后,两个节点会通过Redis同步实时数据事件,VM2的仪表板就能自动接收到VM1上设备上报的新数据,无需手动刷新。
Azure上安全部署Thingsboard的建议
网络安全
- 将所有Thingsboard VM部署在Azure虚拟网络(VNet)内,禁止直接暴露公网IP,通过Azure Application Gateway或**负载均衡器(LB)**作为流量入口,配置SSL终止和流量分发。
- 配置网络安全组(NSG),严格限制入站端口:
- 仅允许信任IP访问SSH(22)端口
- 仅允许设备端IP范围访问MQTT(1883/8883)、CoAP(5683/5684)等设备协议端口
- 公网用户仅允许访问HTTPS(443)端口
- 启用Azure DDoS保护,防范分布式拒绝服务攻击。
数据库安全
- 使用Azure托管数据库服务(如Azure Database for PostgreSQL)替代VM本地数据库,托管服务自带自动备份、故障转移、防火墙规则等安全特性。
- 配置数据库防火墙,仅允许两台Thingsboard VM的私有IP访问数据库端口,禁止公网访问。
- 启用透明数据加密(TDE)和静态数据加密,保护数据库存储的敏感数据。
应用层安全
- 强制启用HTTPS:使用Azure Key Vault管理SSL证书,在负载均衡器或VM上配置SSL终止,禁止HTTP访问。
- 定期更新Thingsboard到最新稳定版本,及时修复已知安全漏洞。
- 强化身份验证:启用Thingsboard的多因素认证(MFA),删除默认管理员账号或修改强密码,按角色分配最小权限。
- 启用审计日志:将Thingsboard的操作日志、设备连接日志导出到Azure Log Analytics,实时监控异常行为。
缓存与中间件安全
- 使用Azure Cache for Redis时,禁用非TLS端口,配置强访问密码,仅允许Thingsboard VM的私有IP访问。
- 所有中间件(Redis、数据库)均启用Azure的身份验证机制,避免使用弱凭证。
高可用强化
- 通过Azure负载均衡器配置健康探测规则,自动剔除故障节点,确保流量仅分发到正常运行的Thingsboard实例。
- 数据库和Redis均选择Azure的高可用部署模式(如PostgreSQL的区域冗余副本、Redis的主从复制),避免单点故障。
内容的提问来源于stack exchange,提问作者Diogo Mesquita
相关产品推荐
相关产品推荐

