Systemanforderungen
Dieses Dokument beschreibt die Hardware-, Betriebssystem- und Netzwerkanforderungen für den zuverlässigen Betrieb der PlantPulse Platform. Es basiert auf verifizierten Standard-Umgebungen.
Anforderungen auf einen Blick
| Kategorie | Minimal (Entwicklung / Test) | Standard (Produktion) | Großformat |
|---|---|---|---|
| CPU | 16 vCPU | 32 vCPU | 48+ vCPU |
| Arbeitsspeicher | 64 GB | 128 GB | 256 GB+ |
| OS-Festplatte | 200 GB | 256 GB | 512 GB |
| Datenfestplatte | 200 GB (SSD) | 1 TB (NVMe SSD) | 4 TB+ (NVMe SSD) |
| Netzwerk | 1 Gbps | 1 Gbps | 10 Gbps |
| OS | RHEL/Rocky/Oracle 8.x | RHEL/Rocky/Oracle 9.x | Identisch |
| JDK | OpenJDK 21 LTS | OpenJDK 21 LTS | OpenJDK 21 LTS |
Verifizierte Umgebung: Der Referenz-Produktions-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 und höher (Intel Xeon, AMD EPYC, ARM Graviton usw.)
- Die IIoT-Engine nutzt eine 36-Thread-Pipeline (
engine.pipeline.threads) - Spark-Verteilungsanalyse nutzt zusätzlich
PP_CLUSTER_CORES - Mehr Kerne erhöhen den gleichzeitigen Nachrichtendurchsatz ↑
Arbeitsspeicher
- Minimum 128 GB · für Produktion empfohlen 256 GB
- Der Speicher wirkt sich direkt auf die Cassandra- und Kafka-Leistung über den Page Cache aus
- Cassandra Heap: 1/4 des Host-Speichers (Maximum 32 GB)
- Container-Speicherlimit:
DOCKER_PP_MEMORYbis 90 % des Host-Speichers möglich
Festplatte
Empfohlen: OS- und Datenfestplatte trennen: Die Trennung von OS-Festplatte (
/) und Datenfestplatte (/data1) vereinfacht Sicherung, Skalierung und Fehler-Isolation.
/ # OS 디스크 (256 GB)
└── opt/kopens/ # PlantPulse 바이너리 설치
/data1/ # 데이터 디스크 (1 TB+ NVMe SSD)
├── pp-data/ # Cassandra · PostgreSQL · MinIO · Valkey
├── pp-temp/ # Spark / 처리 임시
└── pp-backup/ # 백업 산출물
| Einhängepunkt | Kapazität | Festplattentyp | Zweck |
|---|---|---|---|
/ | 256 GB | SSD | OS, Binärdateien |
/data1 | 1 TB+ | NVMe SSD erforderlich | Hauptdaten |
/data2 ~ /dataN | 1 TB+ | NVMe SSD | (Optional) Cassandra-Daten / commitlog-Trennung |
Cassandra-Festplatte-Optimierung (erweitert)
In großflächigen Umgebungen führt die Trennung von commitlog und Daten auf separate Festplatte zu deutlich höherem Schreibdurchsatz.
/data1/pp-data/cassandra/data/ # SSTable (대용량 NVMe)
/data2/pp-data/cassandra/commitlog/ # commitlog (별도 NVMe, sync I/O)
Betriebssystem
Unterstützte Betriebssysteme
| OS | Version | Verifiziert | Empfohlen |
|---|---|---|---|
| Oracle Linux | 8.x, 9.x | ✓ | Empfohlen |
| RHEL | 8.x, 9.x | ✓ | Empfohlen |
| Rocky Linux | 8.x, 9.x | ✓ | Empfohlen |
| AlmaLinux | 8.x, 9.x | ✓ | |
| Ubuntu | 20.04+ | ✓ | |
| Amazon Linux | 2, 2023 | ✓ |
Alle nachfolgenden Anweisungen basieren auf RHEL/Rocky/Oracle 9.x. Bei Verwendung von Ubuntu / Amazon Linux ersetzen Sie bitte nur die Paketbefehle (
apt/yum) gemäß Ihrer Umgebung.
Java (JDK)
PlantPulse basiert auf Java 21 LTS. setup.sh / tools/java/ wird automatisch installiert.
$ 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)
Wenn 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 JAVA_HOME Umgebungsvariable wird automatisch registriert, und alle Module verwenden JAVA_TOOL_OPTIONS="-Duser.language=${PP_LANG} -Duser.timezone=${PP_TZ}" für die einheitliche Anwendung.
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-Adresse
Wenn sich die Server-IP ändert, werden Cluster- und Client-Verbindungen unterbrochen. Verwenden Sie daher unbedingt eine statische IP-Adresse.
# 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 (Cassandra, Kafka usw.) sind sehr empfindlich gegenüber Zeitgenauigkeit 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 stellen Sie die gleichen Werte bitte direkt ein.
Dateideskriptoren / 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- / Java-Prozesse sollten Swap vermeiden.
swapoff --all
# /etc/fstab 의 swap 라인 주석 처리
sed -i '/swap/s/^/#/' /etc/fstab
SELinux
setup.sh wechselt automatisch zu permissive. Manuelle Änderung:
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
Native Bibliotheken
Bibliotheken zur Verbesserung der Cassandra-Leistung.
dnf install -y jna jemalloc jemalloc-devel zstd libpq
Festplatten-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 (für Produktion nicht empfohlen)
echo mq-deadline > /sys/block/sdb/queue/scheduler
blockdev --setra 128 /dev/sdb
Firewall
install.sh aktiviert firewalld (systemctl enable --now firewalld) und öffnet die für die Platform erforderlichen Ports automatisch. Wenn die Firewall extern verwaltet wird (Unternehmens-Firewall / Cloud-Sicherheitsgruppe), überspringen Sie diesen Schritt nur mit SKIP_FW=1.
Beispiel für manuelle Freigabe:
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
Die vollständige Portliste finden Sie unter Portkonfigurationsinformationen.
Übergeordnete Firewall / Cloud-Sicherheitsgruppe: Da Unternehmens- / Cloud-Firewall separat ist, bitte dort ebenfalls zulassen. Für private Adressbereiche (RFC 1918, Tailscale CGN) wird die Beschränkung auf vertrauenswürdige IPs empfohlen.
Externe Zugriffe / empfohlen exponiert
| Extern exponiert | Port | Empfohlen |
|---|---|---|
| Web-Konsole | 80, 443, 7443 | über nginx/HAProxy empfohlen |
| Zustands-Check | 4950 | nur Überwachungssysteme (HTTPS) |
| MQTT (externe Geräte) | 1884 (TLS), 18884 | TLS empfohlen |
| Kafka externe Clients | 9094 (TLS) | TLS erforderlich |
| Daten-Gateway | 5500 | API-Schlüssel + TLS |
Beschränken Sie DB / Messaging PLAINTEXT-Ports / JMX auf nur privates Netzwerk.
Unterstützte Browser
Die Web-Konsole unterstützt aktuelle Standard-Browser.
| Browser | Mindestversion | Empfohlen |
|---|---|---|
| Google Chrome | 100+ | Empfohlen |
| Microsoft Edge | 100+ | ✓ |
| Firefox | 100+ | ✓ |
| Safari | 15+ | ✓ |
Pre-Installation-Checkliste
Bitte überprüfen Sie vor der Installation Folgendes.
- CPU 16+ vCPU, Arbeitsspeicher 64+ GB, Datenfestplatte 200+ GB
- Datenfestplatte auf separatem
/data1eingehängt - OS RHEL/Rocky/Oracle 8+ oder Ubuntu 20.04+
- Statische IP konfiguriert
-
chronydaktiviert (Zeitsynchronisation) - Hostname +
/etc/hostsregistriert - Swap deaktiviert
-
nofile 1048576usw. Limits angewendet -
vm.max_map_countusw. sysctl angewendet - Firewall-Richtlinie (extern exponierte Ports klar definiert)
- DNS funktioniert ordnungsgemäß (
getent hosts <hostname>) - Internetzugriff oder Air-Gap-Netzwerk-Bundle vorbereitet
Nächste Schritte
- Schnelle Installation → One-Line-Installation (empfohlen)
- Container-basierte Installation → Docker-Installation
- Host-direkte Installation → Binär-Installation
- Portkonflikt überprüfen → Portkonfigurationsinformationen