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
| Kategorie | Minimum (Entwicklung / Test) | Standard (Betrieb) | Großflächig |
|---|---|---|---|
| CPU | 16 vCPU | 32 vCPU | 48+ vCPU |
| Arbeitsspeicher | 128 GB | 128 GB | 256 GB+ |
| OS-Disk | 200 GB | 256 GB | 512 GB |
| Daten-Disk | 1 TB (SSD) | 1 TB (NVMe SSD) | 4 TB+ (NVMe SSD) |
| Netzwerk | 1 Gbps | 1 Gbps | 10 Gbps |
| OS | RHEL · Rocky · Oracle Linux 8.x oder höher | 9.x oder 10.x | Identisch |
| JDK | OpenJDK 21 LTS | OpenJDK 21 LTS | OpenJDK 21 LTS |
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— Standard96G, 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-Punkt | Kapazität | Disk-Typ | Zweck |
|---|---|---|---|
/ | 256 GB | SSD | OS, Installationsverzeichnis |
/data1 | 1 TB+ | NVMe SSD erforderlich | Hauptdaten |
/data2 ~ /dataN | 1 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).
| OS | Version |
|---|---|
| RHEL · Rocky Linux · Oracle Linux | 8.x · 9.x · 10.x |
| AlmaLinux | 8.x · 9.x |
| Ubuntu | 20.04 oder höher |
| Amazon Linux | 2 · 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 Exposition | Port | Empfehlung |
|---|---|---|
| Web-Konsole | 80, 443 | Empfohlen via nginx/HAProxy |
| Health Check | 4950 | Nur Monitoring-System (HTTPS) |
| MQTT (Extern Device) | 1884 (TLS), 18884 | TLS empfohlen |
| Kafka Externer Client | 9094 (TLS) | TLS erforderlich |
| Daten-Gateway | 5500 | API Key + TLS |
DB / Messaging PLAINTEXT-Ports / JMX sollten auf Nur Privatnetz beschränkt werden.
Unterstützte Browser
Die Web-Konsole unterstützt aktuelle Standardbrowser.
| Browser | Mindestversion | Empfehlung |
|---|---|---|
| Google Chrome | 100+ | Empfohlen |
| Microsoft Edge | 100+ | ✓ |
| Firefox | 100+ | ✓ |
| Safari | 15+ | ✓ |
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
/data1gemountet - OS RHEL/Rocky/Oracle 8+ oder Ubuntu 20.04+
- Statische IP konfiguriert
-
chronydaktiviert (Zeitsynchronisation) - Hostname +
/etc/hostsregistriert - Swap deaktiviert
- Limits wie
nofile 1048576angewendet - sysctl wie
vm.max_map_countangewendet - Firewall-Richtlinien (externe Ports definiert)
- DNS funktionsfähig (
getent hosts <hostname>) - Internetzugang oder Air-Gap-Netzwerk Bundle vorbereitet
Nächste Schritte
- Schnelle Installation → One-Line Installation (Empfohlen)
- Containerbasierte Installation → Docker Installation
- Portkonflikte prüfen → Portkonfiguration