跳到主要内容

系统要求

PlantPulse 平台稳定运营所需的硬件 / OS / 网络要求说明。基于经验证的标准环境编写。

一览要求

分类最小 (开发 / 测试)标准 (运营)大规模
CPU16 vCPU32 vCPU48+ vCPU
内存64 GB128 GB256 GB+
OS 磁盘200 GB256 GB512 GB
数据磁盘200 GB (SSD)1 TB (NVMe SSD)4 TB+ (NVMe SSD)
网络1 Gbps1 Gbps10 Gbps
OSRHEL/Rocky/Oracle 8.xRHEL/Rocky/Oracle 9.x同上
JDKOpenJDK 21 LTSOpenJDK 21 LTSOpenJDK 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 GBSSDOS、二进制文件
/data11 TB+NVMe SSD 必需主要数据
/data2 ~ /dataN1 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 Linux8.x, 9.x推荐
RHEL8.x, 9.x推荐
Rocky Linux8.x, 9.x推荐
AlmaLinux8.x, 9.x
Ubuntu20.04+
Amazon Linux2, 2023

以下所有说明均基于 RHEL/Rocky/Oracle 9.x。使用 Ubuntu / Amazon Linux 时,请仅将包管理命令(apt / yum)替换为对应环境的命令。

Java (JDK)

PlantPulse 基于 Java 21 LTSsetup.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启用 firewalldsystemctl 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 必需
数据网关5500API Key + TLS

DB / 消息 PLAINTEXT 端口 / JMX 必须限制为私有网仅

支持的浏览器

网页控制台支持最新标准浏览器。

浏览器最低版本推荐
Google Chrome100+推荐
Microsoft Edge100+
Firefox100+
Safari15+

安装前检查清单

安装前请确认以下各项。

  • 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>
  • 互联网接入或隔离网络捆绑包已准备

后续步骤