You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:含2个Zookeeper节点的Thingsboard集群搭建分步指南及疑问解答

嘿,我来帮你搞定这个Thingsboard集群搭建的问题!先直接给你核心答案:Zookeeper必须单独安装——因为Thingsboard集群模式下,Zookeeper是负责服务发现、节点协调和分布式锁的核心组件,官方架构里它是独立部署的,没法用内置替代。下面是针对你说的2个ZK节点、4个TB节点+Cassandra架构的分步实操指南:

一、前置环境准备

先把基础环境捋顺,避免后续踩坑:

  • 所有节点建议用相同的Linux发行版(比如Ubuntu 20.04或CentOS 7),确保节点间网络互通,关闭防火墙或者开放必要端口:
    • Zookeeper:2181(客户端连接)、2888(节点间通信)、3888(选举端口)
    • Cassandra:7000(节点内部通信)、9042(CQL客户端连接)
    • Thingsboard:8080(HTTP后台)、1883(MQTT)、5683(CoAP)、9090(节点RPC通信)
  • 给所有节点设置主机名并配置/etc/hosts解析,比如:
    # 在所有节点的/etc/hosts中添加以下内容(替换成你的实际IP和节点名)
    192.168.1.10 zk-node1
    192.168.1.11 zk-node2
    192.168.1.20 cass-node1
    192.168.1.21 cass-node2
    192.168.1.22 cass-node3
    192.168.1.30 tb-node1
    192.168.1.31 tb-node2
    192.168.1.32 tb-node3
    192.168.1.33 tb-node4
    
  • 所有节点安装Java 11(Thingsboard 3.x及以上版本依赖Java 11),以Ubuntu为例:
    sudo apt update && sudo apt install openjdk-11-jdk -y
    # 验证安装
    java -version
    
二、安装配置Zookeeper集群(2节点)
  1. 下载并解压稳定版Zookeeper(这里用3.8.0版本,你也可以选最新稳定版):
    wget https://dlcdn.apache.org/zookeeper/zookeeper-3.8.0/apache-zookeeper-3.8.0-bin.tar.gz
    sudo tar -xzf apache-zookeeper-3.8.0-bin.tar.gz -C /opt/
    sudo ln -s /opt/apache-zookeeper-3.8.0-bin /opt/zookeeper
    
  2. 创建数据和日志存储目录:
    sudo mkdir -p /var/lib/zookeeper/data
    sudo mkdir -p /var/lib/zookeeper/log
    
  3. 修改Zookeeper核心配置:
    • 复制模板配置文件:
      sudo cp /opt/zookeeper/conf/zoo_sample.cfg /opt/zookeeper/conf/zoo.cfg
      
    • 编辑/opt/zookeeper/conf/zoo.cfg,修改以下关键项:
      # 数据存储目录
      dataDir=/var/lib/zookeeper/data
      # 日志存储目录
      dataLogDir=/var/lib/zookeeper/log
      # 添加集群节点,格式为server.N=节点地址:通信端口:选举端口,N是节点的myid值
      server.1=zk-node1:2888:3888
      server.2=zk-node2:2888:3888
      
  4. 设置节点唯一标识myid:
    • 在zk-node1上执行:
      echo "1" | sudo tee /var/lib/zookeeper/data/myid
      
    • 在zk-node2上执行:
      echo "2" | sudo tee /var/lib/zookeeper/data/myid
      
  5. 启动并验证Zookeeper服务:
    # 启动服务
    sudo /opt/zookeeper/bin/zkServer.sh start
    # 检查节点状态,正常会显示leader或follower
    sudo /opt/zookeeper/bin/zkServer.sh status
    
三、安装配置Cassandra集群

建议至少用3个Cassandra节点做副本(数据可靠性更高),如果只有2个也可以调整副本数:

  1. 添加Cassandra软件源(以Ubuntu为例):
    echo "deb https://debian.cassandra.apache.org 41x main" | sudo tee /etc/apt/sources.list.d/cassandra.sources.list
    curl https://downloads.apache.org/cassandra/KEYS | sudo apt-key add -
    sudo apt update
    
  2. 安装Cassandra:
    sudo apt install cassandra -y
    
  3. 配置Cassandra集群参数:
    • 编辑/etc/cassandra/cassandra.yaml,修改以下核心配置:
      # 集群名称,所有节点必须一致
      cluster_name: 'Thingsboard_Cluster'
      # 种子节点,列出所有Cassandra节点的地址
      seeds: "cass-node1,cass-node2,cass-node3"
      # 当前节点的监听地址(替换成自身IP)
      listen_address: 192.168.1.20
      # RPC通信地址(替换成自身IP)
      rpc_address: 192.168.1.20
      # 数据中心配置
      endpoint_snitch: GossipingPropertyFileSnitch
      
    • 编辑/etc/cassandra/cassandra-rackdc.properties,设置数据中心和机架:
      dc=DC1
      rack=RAC1
      
  4. 重启Cassandra并验证集群状态:
    sudo systemctl restart cassandra
    # 查看集群节点状态,所有节点应该显示为UN(Up/Normal)
    nodetool status
    
  5. 创建Thingsboard专用Keyspace:
    登录任意Cassandra节点,执行CQL命令:
    # 进入CQL交互终端
    cqlsh
    # 创建Keyspace,副本数根据节点数调整(3个节点设3,2个节点设2)
    CREATE KEYSPACE IF NOT EXISTS thingsboard WITH replication = {'class': 'NetworkTopologyStrategy', 'DC1': 3};
    
四、安装配置Thingsboard集群(4节点)
  1. 下载并安装Thingsboard(这里用3.5.1版本,可替换为最新稳定版):
    wget https://github.com/thingsboard/thingsboard/releases/download/v3.5.1/thingsboard-3.5.1.deb
    sudo dpkg -i thingsboard-3.5.1.deb
    
  2. 配置Thingsboard集群模式:
    编辑/etc/thingsboard/conf/thingsboard.conf,修改以下关键环境变量:
    # 启用集群节点模式
    export TB_NODE_TYPE=cluster
    # 开启Zookeeper支持,配置集群地址
    export ZOOKEEPER_ENABLED=true
    export ZOOKEEPER_CLUSTER=zk-node1:2181,zk-node2:2181
    # 配置Cassandra数据库连接
    export DATABASE_TYPE=cassandra
    export CASSANDRA_CLUSTER_NODES=cass-node1:9042,cass-node2:9042,cass-node3:9042
    export CASSANDRA_KEYSPACE=thingsboard
    # 节点RPC通信端口(所有节点可保持默认9090,确保端口互通)
    export RPC_PORT=9090
    
  3. 初始化数据库(仅在第一个TB节点执行):
    # 如果需要导入演示数据,用--loadDemo;不需要则用--install
    sudo thingsboard-install.sh --loadDemo
    
  4. 启动所有Thingsboard节点:
    在4个TB节点上分别执行:
    sudo systemctl start thingsboard
    # 检查服务状态
    sudo systemctl status thingsboard
    
五、集群验证
  • 访问任意TB节点的http://<节点IP>:8080,用默认租户账号登录(用户名:tenant@thingsboard.org,密码:tenant)
  • 进入系统管理 -> 节点页面,应该能看到4个TB节点都处于在线状态
  • 测试设备连接:用MQTT客户端连接任意TB节点的1883端口,发送测试数据,确认后台能正常接收;可以尝试停止其中一个TB节点,验证其他节点能正常接管服务,确保集群高可用

内容的提问来源于stack exchange,提问作者user3931134

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.26 10:10:57