系统要求
PlantPulse 平台稳定运营所需的硬件 / OS / 网络要求说明。基于经验证的标准环境编写。
一览要求
| 分类 | 最小 (开发 / 测试) | 标准 (运营) | 大规模 |
|---|---|---|---|
| CPU | 16 vCPU | 32 vCPU | 48+ vCPU |
| 内存 | 64 GB | 128 GB | 256 GB+ |
| OS 磁盘 | 200 GB | 256 GB | 512 GB |
| 数据磁盘 | 200 GB (SSD) | 1 TB (NVMe SSD) | 4 TB+ (NVMe SSD) |
| 网络 | 1 Gbps | 1 Gbps | 10 Gbps |
| OS | RHEL/Rocky/Oracle 8.x | RHEL/Rocky/Oracle 9.x | 同上 |
| JDK | OpenJDK 21 LTS | OpenJDK 21 LTS | OpenJDK 21 LTS |
验证环境:生产验证环境(参考开发服务器)当前运行配置为 48 vCPU / 188 GB RAM / 4.8 TB NVMe SSD / RHEL 9 / Temurin OpenJDK 21.0.11 LTS。
硬件
CPU
- 推荐:32 vCPU 及以上(Intel Xeon、AMD EPYC、ARM Graviton 等)
- IIoT 引擎使用 36 线程管道(
engine.pipeline.threads) - Spark 分布式分析额外消耗(
PP_CLUSTER_CORES) - 核心数越多,并发消息吞吐量越高 ↑
内存
- 基础 128 GB 及以上 · 运营推荐 256 GB
- 内存作为页面缓存直接影响 Cassandra / Kafka 性能
- Cassandra 堆:主机内存的 1/4(最大 32 GB)
- 容器内存限制:
DOCKER_PP_MEMORY最多可使用主机内存的 90%
磁盘
推荐 OS / 数据磁盘分离:将 OS 磁盘(
/)和数据磁盘(/data1)分离,便于备份 / 扩展 / 故障隔离。
/ # OS 디스크 (256 GB)
└── opt/kopens/ # PlantPulse 바이너리 설치
/data1/ # 데이터 디스크 (1 TB+ NVMe SSD)
├── pp-data/ # Cassandra · PostgreSQL · MinIO · Valkey
├── pp-temp/ # Spark / 처리 임시
└── pp-backup/ # 백업 산출물
| 挂载点 | 容量 | 磁盘类型 | 用途 |
|---|---|---|---|
/ | 256 GB | SSD | OS、二进制文件 |
/data1 | 1 TB+ | NVMe SSD 必需 | 主要数据 |
/data2 ~ /dataN | 1 TB+ | NVMe SSD | (可选)Cassandra 数据 / commitlog 分离 |
Cassandra 磁盘优化(高级)
大规模环境中,将 commitlog 和数据分离到不同磁盘可显著提升写入吞吐量。
/data1/pp-data/cassandra/data/ # SSTable (대용량 NVMe)
/data2/pp-data/cassandra/commitlog/ # commitlog (별도 NVMe, sync I/O)
操作系统
支持的 OS
| OS | 版本 | 验证 | 推荐 |
|---|---|---|---|
| Oracle Linux | 8.x, 9.x | ✓ | 推荐 |
| RHEL | 8.x, 9.x | ✓ | 推荐 |
| Rocky Linux | 8.x, 9.x | ✓ | 推荐 |
| AlmaLinux | 8.x, 9.x | ✓ | |
| Ubuntu | 20.04+ | ✓ | |
| Amazon Linux | 2, 2023 | ✓ |
以下所有说明均基于 RHEL/Rocky/Oracle 9.x。使用 Ubuntu / Amazon Linux 时,请仅将包管理命令(
apt/yum)替换为对应环境的命令。
Java (JDK)
PlantPulse 基于 Java 21 LTS。setup.sh / tools/java/ 会自动安装。
$ java -version
openjdk version "21.0.11" 2026-04-21 LTS
OpenJDK Runtime Environment Temurin-21.0.11+10 (build 21.0.11+10-LTS)
如需手动安装:
# RHEL/Rocky/Oracle
dnf install -y java-21-openjdk java-21-openjdk-devel
# Ubuntu
apt-get install -y openjdk-21-jdk
JAVA_HOME 环境变量会自动注册,所有模块通过 JAVA_TOOL_OPTIONS="-Duser.language=${PP_LANG} -Duser.timezone=${PP_TZ}" 统一应用。
网络 / 主机名
主机名
hostnamectl set-hostname plantpulse-prod-01
# /etc/hosts
vi /etc/hosts
# 첫 행 직후에 추가:
# 192.168.0.41 plantpulse-prod-01 plantpulse-prod-01.local
静态 IP
服务器 IP 变更将导致集群 / 客户端连接中断,必须使用静态 IP。
# NetworkManager (RHEL 9+)
nmcli con mod ens33 ipv4.method manual \
ipv4.addresses 192.168.0.41/24 \
ipv4.gateway 192.168.0.1 \
ipv4.dns "168.126.0.1 8.8.8.8"
nmcli con up ens33
时间同步(必需)
分布式组件(Cassandra、Kafka 等)对节点间时间精度非常敏感。
dnf install -y chrony
systemctl enable --now chronyd
chronyc tracking # 동기화 상태 확인
chronyc -a makestep # 즉시 동기화
OS 调优(必需)
以下值为 install.sh(一键安装 / Docker 安装)自动应用的值。仅在手动环境中需要相同配置。
文件描述符 / 进程限制
# /etc/security/limits.conf
* - memlock unlimited
* - nofile 1048576
* - nproc 32768
* - as unlimited
内核参数
# /etc/sysctl.conf (install.sh 자동 적용)
net.ipv4.tcp_keepalive_time = 60
net.ipv4.tcp_keepalive_probes = 3
net.ipv4.tcp_keepalive_intvl = 10
net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.core.somaxconn = 1024
vm.max_map_count = 1048576
vm.overcommit_memory = 0
fs.file-max = 1048576
sysctl -p /etc/sysctl.conf
禁用 Swap
数据库 / Java 进程必须避免 swap。
swapoff --all
# /etc/fstab 의 swap 라인 주석 처리
sed -i '/swap/s/^/#/' /etc/fstab
SELinux
setup.sh 会自动将其转换为 permissive。手动修改:
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
Native 库
用于增强 Cassandra 性能的库。
dnf install -y jna jemalloc jemalloc-devel zstd libpq
磁盘 I/O 调优
NVMe SSD
# /etc/udev/rules.d/60-ioscheduler.rules
ACTION=="add|change", KERNEL=="nvme[0-9]*", ATTR{queue/scheduler}="none"
ACTION=="add|change", KERNEL=="sd*", ATTR{queue/rotational}=="0", ATTR{queue/scheduler}="mq-deadline"
# 즉시 적용
udevadm trigger
HDD(运营不推荐)
echo mq-deadline > /sys/block/sdb/queue/scheduler
blockdev --setra 128 /dev/sdb
防火墙
install.sh 会启用 firewalld(systemctl enable --now firewalld)并自动开放平台所需端口。如防火墙由外部管理(公司防火墙 / 云安全组),仅需使用 SKIP_FW=1 跳过此步骤。
手动环境手动开放示例:
systemctl enable --now firewalld
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
firewall-cmd --permanent --add-port=7443/tcp
firewall-cmd --permanent --add-port=4950/tcp
firewall-cmd --permanent --add-port=1883/tcp
firewall-cmd --permanent --add-port=1884/tcp
firewall-cmd --permanent --add-port=9092/tcp
firewall-cmd --permanent --add-port=9094/tcp
firewall-cmd --reload
完整端口列表见 端口配置信息。
上层防火墙 / 云安全组:公司 / 云防火墙单独管理,需同步允许。建议对私有网段(RFC 1918、Tailscale CGN)进行源 IP 限制。
外部接入 / 暴露建议
| 外部暴露 | 端口 | 推荐 |
|---|---|---|
| 网页控制台 | 80, 443, 7443 | 推荐经过 nginx/HAProxy |
| 健康检查 | 4950 | 仅监控系统(HTTPS) |
| MQTT(外部设备) | 1884 (TLS), 18884 | 推荐 TLS |
| Kafka 外部客户端 | 9094 (TLS) | TLS 必需 |
| 数据网关 | 5500 | API Key + TLS |
DB / 消息 PLAINTEXT 端口 / JMX 必须限制为私有网仅。
支持的浏览器
网页控制台支持最新标准浏览器。
| 浏览器 | 最低版本 | 推荐 |
|---|---|---|
| Google Chrome | 100+ | 推荐 |
| Microsoft Edge | 100+ | ✓ |
| Firefox | 100+ | ✓ |
| Safari | 15+ | ✓ |
安装前检查清单
安装前请确认以下各项。
- CPU 16+ vCPU、内存 64+ GB、数据磁盘 200+ GB
- 数据磁盘单独挂载到
/data1 - OS 为 RHEL/Rocky/Oracle 8+ 或 Ubuntu 20.04+
- 静态 IP 已配置
-
chronyd已启用(时间同步) - 主机名 +
/etc/hosts已注册 - swap 已禁用
-
nofile 1048576等 limits 已应用 -
vm.max_map_count等 sysctl 已应用 - 防火墙策略已明确(外部暴露端口)
- DNS 正常工作(
getent hosts <hostname>) - 互联网接入或隔离网络捆绑包已准备