求助:含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节点)
- 下载并解压稳定版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 - 创建数据和日志存储目录:
sudo mkdir -p /var/lib/zookeeper/data sudo mkdir -p /var/lib/zookeeper/log - 修改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
- 复制模板配置文件:
- 设置节点唯一标识myid:
- 在
zk-node1上执行:echo "1" | sudo tee /var/lib/zookeeper/data/myid - 在
zk-node2上执行:echo "2" | sudo tee /var/lib/zookeeper/data/myid
- 在
- 启动并验证Zookeeper服务:
# 启动服务 sudo /opt/zookeeper/bin/zkServer.sh start # 检查节点状态,正常会显示leader或follower sudo /opt/zookeeper/bin/zkServer.sh status
三、安装配置Cassandra集群
建议至少用3个Cassandra节点做副本(数据可靠性更高),如果只有2个也可以调整副本数:
- 添加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 - 安装Cassandra:
sudo apt install cassandra -y - 配置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
- 编辑
- 重启Cassandra并验证集群状态:
sudo systemctl restart cassandra # 查看集群节点状态,所有节点应该显示为UN(Up/Normal) nodetool status - 创建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节点)
- 下载并安装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 - 配置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 - 初始化数据库(仅在第一个TB节点执行):
# 如果需要导入演示数据,用--loadDemo;不需要则用--install sudo thingsboard-install.sh --loadDemo - 启动所有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
相关产品推荐
相关产品推荐

