Zum Hauptinhalt springen

Systemanforderungen

Hier finden Sie die Hardware-, OS- und Netzwerkanforderungen für den stabilen Betrieb der PlantPulse Platform. Diese Angaben basieren auf einer validierten Standardumgebung.

Anforderungen auf einen Blick​

KategorieMinimum (Entwicklung / Test)Standard (Betrieb)Großflächig
CPU16 vCPU32 vCPU48+ vCPU
Arbeitsspeicher128 GB128 GB256 GB+
OS-Disk200 GB256 GB512 GB
Daten-Disk1 TB (SSD)1 TB (NVMe SSD)4 TB+ (NVMe SSD)
Netzwerk1 Gbps1 Gbps10 Gbps
OSRHEL · Rocky · Oracle Linux 8.x oder höher9.x oder 10.xIdentisch
JDKOpenJDK 21 LTSOpenJDK 21 LTSOpenJDK 21 LTS
Data Lake Master benötigt 96 GB oder mehr — 64 GB ist keine unterstützte Spezifikation

Der Data Lake Master Container (plantpulse-datalake) benötigt ein Speicherlimit von mindestens 96 GB. 96 GB ist kein Puffer, sondern das Minimum; 64-GB-Systeme werden nicht unterstützt.

  • Warum 96 GB? — Allein die deklarativ festgelegten Limits der nicht stoppbaren Resident-Services (Aster TSDB Heap 16 GB + direct 6 GB, CEP, HiveMQ, Valkey, PostgreSQL, TSE, Kafka etc.) summieren sich auf etwa 67 GB. In der Validierungsumgebung erreichte dieser Container am 29.10.2026 das 96-GB-Limit, woraufhin Kafka aufgrund eines Speicherzuweisungsfehlers (ENOMEM) abstürzte.
  • Der Host muss größer sein — Das Installationsskript begrenzt das Data Lake Limit auf 90 % des Host-RAM. Wenn der Host-RAM unter 107 GB liegt, können keine 96 GB zugewiesen werden, und der Host ist unterdimensioniert. Bei 64-GB-Systemen würde das Limit auf 57,6 GB gekürzt, sodass der Data Lake nicht gestartet werden kann.
  • Zusätzlicher Bedarf für App-Container — Die Summe der Limits für App-Container, die standardmäßig auf demselben Host laufen, beträgt 32 GB (server-web 14 · batch 4 · warehouse 4 · OPC UA 3 · AASX 3 · HA 2 · Frontline 1 · proxy 1). Master 96 GB + App-Basislimits 32 GB = 128 GB; dies entspricht exakt dem Minimum von 128 GB. Das Aktivieren von mirror-maker (+2 GB) oder das Erhöhen der App-Limits erfordert entsprechend mehr Speicher. Das Limit ist die Obergrenze, nicht die tatsächliche Nutzung. Für den Betrieb werden 256 GB empfohlen.

Ob das Limit nach der Installation ausreicht, wird durch pd doctor des Data Lake CLI geprüft (Abschnitt [9] memory budget, --memory-limit an docker inspect von HostConfig.Memory übergeben).

Validierungsumgebung: Die Betriebsvalidierungsumgebung (Reference Dev Server) wird mit 48 vCPU / 188 GB RAM / 4,8 TB NVMe SSD / RHEL 9 / Temurin OpenJDK 21.0.11 LTS betrieben.

Hardware​

CPU​

  • Empfohlen: 32 vCPU oder mehr (Intel Xeon, AMD EPYC, ARM Graviton etc.)
  • Die IIoT-Engine nutzt eine 36-Thread-Pipeline (engine.pipeline.threads)
  • Spark-verteilte Analysen benötigen zusätzlich PP_CLUSTER_CORES
  • Mehr Kerne erhöhen den gleichzeitigen Nachrichtendurchsatz ↑

Arbeitsspeicher​

  • Basis 128 GB oder mehr · Betriebsempfehlung 256 GB
  • Data Lake Master Container 96 GB oder mehr — Host-RAM unter 107 GB ist unterdimensioniert, 64 GB wird nicht unterstützt (siehe Warnung oben)
  • Der Speicher beeinflusst über den Page Cache direkt die Leistung von Aster TSDB / Kafka
  • Aster TSDB Heap: 16 GB fest + direct Memory 6 GB
  • Speicherlimit Data Lake Container: DOCKER_DATALAKE_MEMORY — Standard 96G, begrenzt auf maximal 90 % des Host-RAM

Festplatten​

Empfehlung: Trennung von OS- und Datenplatte: Die Trennung der OS-Disk (/) von der Daten-Disk (/data1) erleichtert Backup, Erweiterung und Fehlerisolierung.

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

/data1/ # 데이터 디스크 (1 TB+ NVMe SSD)
├── pp-data/ # Aster TSDB · PostgreSQL · RustFS · Valkey
├── pp-temp/ # Spark / 처리 임시
└── pp-backup/ # 백업 산출물
Mount-PunktKapazitätDisk-TypZweck
/256 GBSSDOS, Installationsverzeichnis
/data11 TB+NVMe SSD erforderlichHauptdaten
/data2 ~ /dataN1 TB+NVMe SSD(Optional) Trennung von Aster TSDB Daten / commitlog

Aster TSDB Disk-Optimierung (Advanced)​

In großflächigen Umgebungen erhöht die Platzierung von commitlog und Daten auf separaten Platten den Schreibdurchsatz erheblich.

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

Betriebssystem​

Unterstützte OS​

RHEL · Rocky Linux · Oracle Linux 8.x · 9.x · 10.x — Diese drei Distributionen werden gleichbehandelt (RPM-basiert · identische Paketnamen · identische Firewall-Tools).

OSVersion
RHEL · Rocky Linux · Oracle Linux8.x · 9.x · 10.x
AlmaLinux8.x · 9.x
Ubuntu20.04 oder höher
Amazon Linux2 · 2023

Alle folgenden Anweisungen beziehen sich auf RHEL · Rocky Linux · Oracle Linux 8.x · 9.x · 10.x. Wenn Sie Ubuntu / Amazon Linux verwenden, passen Sie bitte nur die Paketbefehle (apt / dnf) an Ihre Umgebung an.

Java (JDK)​

PlantPulse basiert auf Java 21 LTS. setup.sh / tools/java/ installieren dieses automatisch.

$ 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)

Falls eine manuelle Installation erforderlich ist:

# RHEL/Rocky/Oracle
dnf install -y java-21-openjdk java-21-openjdk-devel

# Ubuntu
apt-get install -y openjdk-21-jdk

Die Umgebungsvariablen JAVA_HOME werden automatisch registriert, und alle Module werden über JAVA_TOOL_OPTIONS="-Duser.language=${PP_LANG} -Duser.timezone=${PP_TZ}" einheitlich angewendet.

Netzwerk / Hostname​

Hostname​

hostnamectl set-hostname plantpulse-prod-01

# /etc/hosts
vi /etc/hosts
# 첫 행 직후에 추가:
# 192.168.0.41 plantpulse-prod-01 plantpulse-prod-01.local

Statische IP​

Da bei einer Änderung der Server-IP die Verbindungen zum Cluster / Client unterbrochen werden, muss zwingend eine statische IP verwendet werden.

# 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

Zeitsynchronisation (Erforderlich)​

Verteilte Komponenten (Aster TSDB, Kafka etc.) reagieren sehr empfindlich auf Zeitabweichungen zwischen den Knoten.

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

OS Tuning (Erforderlich)​

Die folgenden Werte werden von install.sh (One-Line / Docker Installation) automatisch angewendet. In manuellen Umgebungen müssen diese direkt konfiguriert werden.

File Descriptor / Prozesslimits​

# /etc/security/limits.conf
* - memlock unlimited
* - nofile 1048576
* - nproc 32768
* - as unlimited

Kernel-Parameter​

# /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 deaktivieren​

Datenbank- und Java-Prozesse sollten Swap vermeiden.

swapoff --all
# /etc/fstab 의 swap 라인 주석 처리
sed -i '/swap/s/^/#/' /etc/fstab

SELinux​

setup.sh schaltet SELinux automatisch auf permissive um. Manuelle Änderung:

setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config

Native Bibliotheken​

Bibliotheken zur Leistungssteigerung von Aster TSDB.

dnf install -y jna jemalloc jemalloc-devel zstd libpq

Disk I/O Tuning​

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 (Nicht empfohlen für den Betrieb)​

echo mq-deadline > /sys/block/sdb/queue/scheduler
blockdev --setra 128 /dev/sdb

Firewall​

install.sh aktiviert firewalld (systemctl enable --now firewalld) und öffnet automatisch die für die Platform erforderlichen Ports. Überspringen Sie diesen Schritt mit SKIP_FW=1 nur, wenn die Firewall extern verwaltet wird (Unternehmensfirewall / Cloud Security Group).

Beispiel für manuelle Freischaltung:

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

Die vollständige Portliste finden Sie unter Portkonfiguration.

Übergeordnete Firewall / Cloud Security Group: Da Unternehmens- oder Cloud-Firewalls separat sind, müssen diese ebenfalls konfiguriert werden. Für private Netzbereiche (RFC 1918, Tailscale CGN) wird eine Source-Beschränkung auf vertrauenswürdige IPs empfohlen.

Externer Zugriff / Expositionsempfehlung​

Externe ExpositionPortEmpfehlung
Web-Konsole80, 443Empfohlen via nginx/HAProxy
Health Check4950Nur Monitoring-System (HTTPS)
MQTT (Extern Device)1884 (TLS), 18884TLS empfohlen
Kafka Externer Client9094 (TLS)TLS erforderlich
Daten-Gateway5500API Key + TLS

DB / Messaging PLAINTEXT-Ports / JMX sollten auf Nur Privatnetz beschränkt werden.

Unterstützte Browser​

Die Web-Konsole unterstützt aktuelle Standardbrowser.

BrowserMindestversionEmpfehlung
Google Chrome100+Empfohlen
Microsoft Edge100+✓
Firefox100+✓
Safari15+✓

Checkliste Vorabprüfung​

Bitte prüfen Sie Folgendes vor der Installation:

  • CPU 16+ vCPU, RAM 128+ GB (Data Lake Master muss 96 GB zugewiesen bekommen können — 64 GB nicht unterstützt), Daten-Disk 200+ GB
  • Daten-Disk auf separatem /data1 gemountet
  • OS RHEL/Rocky/Oracle 8+ oder Ubuntu 20.04+
  • Statische IP konfiguriert
  • chronyd aktiviert (Zeitsynchronisation)
  • Hostname + /etc/hosts registriert
  • Swap deaktiviert
  • Limits wie nofile 1048576 angewendet
  • sysctl wie vm.max_map_count angewendet
  • Firewall-Richtlinien (externe Ports definiert)
  • DNS funktionsfähig (getent hosts <hostname>)
  • Internetzugang oder Air-Gap-Netzwerk Bundle vorbereitet

Nächste Schritte​