跳到主要内容

系统要求

本指南旨在提供稳定运行 PlantPulse Platform 所需的硬件 / OS / 网络要求。所有规格均基于经过验证的标准环境编写。

需求概览​

类别最低 (开发 / 测试)标准 (运行)大规模
CPU16 vCPU32 vCPU48+ vCPU
内存128 GB128 GB256 GB+
OS 磁盘200 GB256 GB512 GB
数据磁盘1 TB (SSD)1 TB (NVMe SSD)4 TB+ (NVMe SSD)
网络1 Gbps1 Gbps10 Gbps
OSRHEL · Rocky · Oracle Linux 8.x 及以上9.x 或 10.x相同
JDKOpenJDK 21 LTSOpenJDK 21 LTSOpenJDK 21 LTS
数据湖 Master 需 96 GB 以上 — 64 GB 并非支持规格

数据湖 Master 容器(plantpulse-datalake)需要 96 GB 以上 的内存上限。96 GB 是最小值而非余裕空间,64 GB 规格不支持。

  • 为何需要 96 GB — 仅不可停止的常驻服务(Aster TSDB Heap 16 GB + direct 6 GB, CEP, HiveMQ, Valkey, PostgreSQL, TSE, Kafka 等)的声明上限之和就约为 67 GB。在验证环境中,该容器于 2026-10-29 达到了 96 GB 上限,导致 Kafka 因内存分配失败(ENOMEM)而崩溃。
  • 宿主机内存必须更大 — 安装脚本会将数据湖上限设置为宿主机 RAM 的 90%。因此,若宿主机 RAM 低于 107 GB,则无法提供 96 GB 内存,该宿主机将不符合规格。64 GB 规格的上限将被截断至 57.6 GB,无法部署数据湖。
  • 加上应用容器份额 — 同一宿主机上运行的基础应用容器上限之和为 32 GB(server-web 14 · batch 4 · warehouse 4 · OPC UA 3 · AASX 3 · HA 2 · 前线 1 · proxy 1)。Master 96 GB + 应用基础上限 32 GB = 128 GB,这与 128 GB 最低要求 相符。若开启 mirror-maker (+2 GB) 或调高应用上限,则需要更多内存。上限是天花板而非实际用量。运行环境下建议配置 256 GB。

安装后,可通过数据湖 CLI 的 pd doctor 判断实际上限是否充足(在 [9] memory budget 节中将 docker inspect 的 HostConfig.Memory 值传递至 --memory-limit)。

验证环境:运行验证环境(reference dev server)配置为 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
  • 数据湖 Master 容器 96 GB 以上 — 宿主机 RAM 低于 107 GB 则不符合规格,64 GB 不支持(参考上述警告)
  • 内存通过页缓存直接影响 Aster TSDB / Kafka 性能
  • Aster TSDB Heap: 16 GB 固定 + direct 内存 6 GB
  • 数据湖容器内存限制:DOCKER_DATALAKE_MEMORY — 默认为 96G,且不超过宿主机 RAM 的 90%

磁盘​

建议 OS / 数据磁盘分离:将 OS 磁盘 (/) 与数据磁盘 (/data1) 分离,以便于备份 / 扩展 / 故障隔离。

/ # OS 디스크 (256 GB)
└── opt/kopens/ # PlantPulse 설치 트리

/data1/ # 데이터 디스크 (1 TB+ NVMe SSD)
├── pp-data/ # Aster TSDB · PostgreSQL · RustFS · Valkey
├── pp-temp/ # Spark / 처리 임시
└── pp-backup/ # 백업 산출물
挂载点容量磁盘类型用途
/256 GBSSDOS, 安装树
/data11 TB+必须 NVMe SSD主数据
/data2 ~ /dataN1 TB+NVMe SSD(可选) Aster TSDB 数据 / commitlog 分离

Aster TSDB 磁盘优化 (高级)​

在大规模环境下,将 commitlog 与 data 放置在不同磁盘可显著提升写入吞吐量。

/data1/pp-data/cassandra/data/ # SSTable (대용량 NVMe)
/data2/pp-data/cassandra/commitlog/ # commitlog (별도 NVMe, sync I/O)

操作系统​

支持的 OS​

RHEL · Rocky Linux · Oracle Linux 8.x · 9.x · 10.x — 这三个发行版视为同一类(RPM 系 · 相同软件包名 · 相同防火墙工具)。

OS版本
RHEL · Rocky Linux · Oracle Linux8.x · 9.x · 10.x
AlmaLinux8.x · 9.x
Ubuntu20.04 及以上
Amazon Linux2 · 2023

后续所有指南均基于 RHEL · Rocky Linux · Oracle Linux 8.x · 9.x · 10.x。若使用 Ubuntu / Amazon Linux,请仅将软件包命令(apt / dnf)替换为对应的环境命令。

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

时间同步 (必须)​

分布式组件 (Aster TSDB, Kafka 等) 对节点间的时间精度极其敏感。

dnf install -y chrony
systemctl enable --now chronyd
chronyc tracking # 동기화 상태 확인
chronyc -a makestep # 즉시 동기화

OS 调优 (必须)​

以下数值为 install.sh (One-line / 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 库​

用于提升 Aster TSDB 性能的库。

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) 并自动开放 Platform 所需端口。仅在通过外部(公司防火墙 / 云安全组)管理防火墙时,才使用 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=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。

外部访问 / 暴露建议​

外部暴露端口建议
Web 控制台80, 443建议经由 nginx/HAProxy
健康检查4950仅限监控系统 (HTTPS)
MQTT (外部设备)1884 (TLS), 18884建议 TLS
Kafka 外部客户端9094 (TLS)必须 TLS
数据网关5500API Key + TLS

DB / 消息 PLAINTEXT 端口 / JMX 请限制为 仅限私网。

支持的浏览器​

Web 控制台支持最新的标准浏览器。

浏览器最低版本建议
Google Chrome100+建议
Microsoft Edge100+✓
Firefox100+✓
Safari15+✓

安装前巡检清单​

安装前请确认以下各项:

  • CPU 16+ vCPU, 内存 128+ GB(需能为数据湖 Master 提供 96 GB — 64 GB 为不支持规格), 数据磁盘 200+ GB
  • 数据磁盘挂载至独立的 /data1
  • OS 为 RHEL/Rocky/Oracle 8+ 或 Ubuntu 20.04+
  • 已设置固定 IP
  • chronyd 已激活 (时间同步)
  • 主机名 + /etc/hosts 已注册
  • 已禁用 swap
  • 已应用 limits (如 nofile 1048576)
  • 已应用 sysctl (如 vm.max_map_count)
  • 防火墙策略 (外部暴露端口明确)
  • DNS 正常工作 (getent hosts <hostname>)
  • 具备互联网访问或已准备隔离网络 Bundle

下一步​