2、环境准备:Linux服务器选型、JDK安装配置、PostgreSQL部署、Redis缓存搭建

好,咱们正式开始动手了。这一章我带你搞定环境准备。说白了,ThingsBoard 再牛,也得有个安稳的家。我见过太多项目,部署方案看着挺美,结果服务器选型就翻车了。嗯,咱们一步步来。

2.1 Linux 服务器选型:别在这上面省钱

我个人习惯,生产环境首选 Ubuntu 20.04 LTSCentOS 7.9。为什么?社区活跃,坑少,ThingsBoard 官方文档也是基于这两个系统写的。

你想想看,如果选个冷门发行版,出问题了连个问的人都没有,多难受。

硬件配置建议(单节点部署)

场景 CPU 内存 磁盘 备注
开发/测试 4核 8GB 50GB SSD 够用,别跑压力
小规模生产(<1000设备) 8核 16GB 200GB SSD 我常用的配置
中规模生产(<5000设备) 16核 32GB 500GB NVMe 磁盘IO是关键

避坑指南: 我曾经在云服务器上选了"突发性能实例",结果设备一多,CPU被限流,整个平台直接卡死。记住,ThingsBoard 对 CPU 的稳定性要求很高,别用 t5、t6 这类突发实例跑生产。

2.2 JDK 安装配置:版本选对,事半功倍

ThingsBoard 3.x 系列,官方推荐 JDK 11。我试过 JDK 17,也能跑,但有些第三方库兼容性不太好。所以,听我一句劝,老老实实用 JDK 11。

安装其实很简单,但有个细节很多人忽略——环境变量

# 下载 JDK 11(以 OpenJDK 为例)
sudo apt update
sudo apt install openjdk-11-jdk -y

# 验证安装
java -version

# 配置环境变量(写入 /etc/profile 或 ~/.bashrc)
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64
export PATH=$PATH:$JAVA_HOME/bin

# 使配置生效
source /etc/profile

我的小技巧: 配置完记得执行 echo $JAVA_HOME 检查一下。我遇到过好几次,明明装了 JDK,但系统 PATH 没生效,ThingsBoard 启动时直接报 "Java not found"。嗯,这种低级错误最坑人。

2.3 PostgreSQL 部署:数据是命根子

ThingsBoard 用 PostgreSQL 存储元数据、设备信息、告警规则等。我个人推荐 PostgreSQL 12 或 14,性能稳定,而且 ThingsBoard 官方测试最多的就是这两个版本。

安装过程不复杂,但有几个参数必须调,不然高并发时你会哭。

# 安装 PostgreSQL
sudo apt install postgresql postgresql-contrib -y

# 启动并设置开机自启
sudo systemctl start postgresql
sudo systemctl enable postgresql

# 切换到 postgres 用户创建数据库
sudo -u postgres psql

# 在 psql 中执行
CREATE DATABASE thingsboard;
CREATE USER tb_user WITH PASSWORD 'your_strong_password';
GRANT ALL PRIVILEGES ON DATABASE thingsboard TO tb_user;
\q

关键参数调整(/etc/postgresql/12/main/postgresql.conf)

参数 默认值 建议值 说明
shared_buffers 128MB 内存的25% 比如16GB内存设4GB
work_mem 4MB 16-64MB 排序操作的内存
maintenance_work_mem 64MB 1GB VACUUM等维护操作
effective_cache_size 4GB 内存的50% 帮助查询规划器

我曾经踩过的坑: 有次部署完,设备一上报数据,PostgreSQL 的 CPU 直接飙到 100%。查了半天,发现是 work_mem 设得太小,排序操作频繁使用磁盘临时文件。调大之后,CPU 直接降到了 30%。所以,这些参数别看小,影响巨大。

2.4 Redis 缓存搭建:给 ThingsBoard 装上加速器

Redis 在 ThingsBoard 里主要干两件事:缓存设备属性、缓存 RPC 请求。说白了,就是给数据库减负。没有 Redis,设备一多,PostgreSQL 直接扛不住。

安装 Redis 很简单,但配置上有个关键点——持久化策略

# 安装 Redis
sudo apt install redis-server -y

# 启动并设置开机自启
sudo systemctl start redis-server
sudo systemctl enable redis-server

# 验证
redis-cli ping
# 返回 PONG 就对了

Redis 配置优化(/etc/redis/redis.conf)

参数 默认值 建议值 说明
maxmemory 0(无限制) 总内存的70% 比如16GB内存设11GB
maxmemory-policy noeviction allkeys-lru 内存满时淘汰最近最少使用
save 900 1 / 300 10 保留默认 RDB持久化,别关
appendonly no yes AOF持久化,数据更安全

我的经验: 生产环境我建议同时开启 RDB 和 AOF。RDB 用于快速恢复,AOF 用于防止数据丢失。你想想看,如果缓存里的设备属性丢了,设备重新上报还好说,但 RPC 请求丢了,那可就麻烦了。

2.5 环境验证:别急着部署 ThingsBoard

所有组件装完后,我习惯先做个快速验证,确保每个服务都正常。

# 1. 检查 JDK
java -version

# 2. 检查 PostgreSQL
sudo -u postgres psql -c "SELECT version();"

# 3. 检查 Redis
redis-cli ping

# 4. 检查端口监听
ss -tlnp | grep -E '5432|6379'

如果以上都返回正常,恭喜你,环境准备就绪。下一章咱们开始正式部署 ThingsBoard。

嗯,这里再啰嗦一句:别图省事跳过环境验证。我见过太多人,装完就急着跑 ThingsBoard,结果报错了才回头查,浪费时间。磨刀不误砍柴工,对吧?