Hochverfügbarkeit (HA) Einrichtung
Die Konfiguration, bei der zwei Edge-Geräte an denselben PLC angeschlossen werden, damit die Erfassung auch bei Ausfall eines Geräts nicht unterbrochen wird.
Der Bildschirm befindet sich im linken Menü unter HA PAIR (/ui/ha).

Was wird hochverfügbar gemacht — Lesen: beide, Schreiben: einer
| Wie | |
|---|---|
| Lesen (Erfassung) | Beide Edge-Geräte lesen jeweils unabhängig denselben PLC. Sie gehen nicht übereinander |
| Schreiben (Steuerung) | Nur eines macht das. Der Wert, der dies bestimmt, ist edge.plc.write_authority |
Beim Lesen schadet eine Überschneidung nicht, aber beim Schreiben ist das anders. Wenn beide Edge-Geräte gleichzeitig Schreibrechte haben, geht derselbe Befehl zweimal an den PLC (Split-Brain). Diese gesamte Struktur dient dazu, das zu verhindern.
Der Standardwert von edge.plc.write_authority ist true — wenn keine Einstellung vorhanden ist, bedeutet das, dass dieses Gerät der einzige
Schreibakteur ist. Eine Anlage, in der nur ein Edge-Gerät schreibt, funktioniert also ohne weiteres Zutun.
So liest man den Bildschirm
| Position | Was |
|---|---|
| Modus-Badge | MANUAL / AUTO — ha.failover.mode |
| Berechtigungsleiste | Ob dieses Edge-Gerät gerade für das Schreiben zuständig ist. Wenn READ-ONLY, dann nicht |
| Umschaltverlauf | Wann · Was hat sich geändert · Wer hat es getan |
| Aktionen | Abhängig vom Modus (siehe unten) |
| Peer | Status des gegenüberliegenden Edge-Geräts. Wenn ha.peer.enabled=false, dann leer |
| Konfiguration | ha.failover.mode · ha.peer.enabled · ha.peer.host · Tag · Fingerabdruck |
Tag-Fingerabdruck
Vergleicht mit einem einzigen Wert, ob beide Edge-Geräte dieselbe Tag-Definition haben. Wenn sie unterschiedlich sind, zeigt der Bildschirm
TAG DRIFT an — das bedeutet, dass auf einer Seite ein Tag hinzugefügt und auf der anderen Seite vergessen wurde.
Wenn dann ein Failover erfolgt, erfasst die übernehmende Seite einige Tags nicht.
Zwei Modi
manual — Der Bediener übergibt (Standard)
- Aktionen:
Take authority(Übernehmen) ·Release authority(Ablegen) - Der Peer-Monitor beobachtet das gegenüberliegende Edge-Gerät, übergibt aber nicht selbst.
Der Peer-Monitor (HaPeerMonitor) pollt die GET /api/v1/ha/status des gegenüberliegenden Edge-Geräts alle 10 Sekunden
(der erste Poll erfolgt 15 Sekunden nach dem Start), zeigt den Status an und schreibt Warnprotokolle.
Er ändert unter keinen Umständen Einstellungen.
Wird eine kurze Netzwerkunterbrechung als „Peer ausgefallen“ fehlgedeutet und hochgestuft, schreiben beide Seiten
gleichzeitig. Deshalb beschränkt sich manual auf Anzeige und Warnung, und die Hochstufung erfolgt durch einen Menschen.
Die automatische Hochstufung übernimmt der Modus auto, der anhand des PLC-Heartbeats entscheidet statt anhand des Netzwerks zwischen den Edges (siehe unten).
auto — automatische Hochstufung über den PLC-Heartbeat
Wann aktiv: wenn ha.failover.mode=auto gilt und ha.failover.heartbeat_opc sowie
ha.failover.heartbeat_address beide gesetzt sind. Fehlt einer davon, schreibt die Edge die
folgende Warnung ins Log und nimmt keine automatischen Änderungen vor (Verhalten wie manual).
HA auto-failover degraded to manual — ha.failover.heartbeat_opc/address not set.
Entscheidungsregeln
| Situation | Was geschieht |
|---|---|
| Schreibverantwortlicher (WRITER) | Schreibt alle heartbeat_interval_ms einen Wert mit seiner eigenen writer_id an die Heartbeat-Adresse der PLC |
Der vom Standby (STANDBY) gesehene Heartbeat-Wert ändert sich takeover_timeout_ms lang nicht | Er stuft sich selbst zum WRITER hoch |
| Das Lesen des Heartbeats selbst schlägt fehl | Zählt nicht als „eingefroren“ — was nicht beobachtbar ist, ist nicht tot, daher keine Hochstufung |
| Der Heartbeat eines anderen WRITER ist lebendig | Keine Hochstufung |
| Beide beanspruchen gleichzeitig WRITER | Die niedrigere writer_id gewinnt, die höhere tritt zurück |
| Der WRITER scheitert wiederholt beim Schreiben des Heartbeats | Nach max(3, ceil(timeout ÷ interval)) Fehlern in Folge stuft er sich selbst zu STANDBY herab — mit den Standardwerten ceil(2000 ÷ 500) = 4-mal |
| Start | Startet unabhängig von der Konfiguration immer als STANDBY. Schreibt kein WRITER den Heartbeat, erfolgt die Hochstufung nach takeover_timeout_ms — auch eine allein verbliebene Edge wird selbst WRITER |
| Die ausgefallene Seite kommt zurück | Sie holt sich die Berechtigung nicht automatisch zurück (kein automatisches Failback) |
- Aktionen:
Force writer·Force standby·Clear override— manuelle Übersteuerungen über der obigen automatischen Entscheidung. MitClear overrideaufgehoben, gilt wieder die automatische Entscheidung (die API istPUT /api/v1/ha/failover/override).
Force writer zu erzwingen bedeutet doppeltes SchreibenEine manuelle Übersteuerung umgeht die automatische Entscheidung. Werden beide Edges als WRITER erzwungen, hält nichts das auf — Übersteuerungen liegen in der Verantwortung des Betreibers.
Der Standardwert 2000 von takeover_timeout_ms beruht auf der Annahme „die PLC ist direkt angebunden, Lesevorgänge
liegen meist unter 100 ms → das normale Beobachtungsintervall beträgt etwa 600 ms“.
- An Standorten mit langsamen Lesevorgängen, etwa über ein Gateway, erhöhen Sie
takeover_timeout_ms. - Wenn Sie schneller erkennen müssen, verringern Sie zuerst
heartbeat_interval_ms, nicht den Timeout. Der Timeout kann nicht unter 2000 liegen (ein niedrigerer Wert wird auf 2000 angehoben). - Ist der Wert zu knapp, kann ein kurzes Fenster mit zwei WRITERn entstehen. Bei der nächsten Beobachtung
konvergiert es auf die niedrigere
writer_id.
Peer-Statusbewertung
| Status | Bedeutung | Was zu tun ist |
|---|---|---|
OK | Normal — nur eine Seite hat Schreibrecht | — |
DOWN | Peer nicht erreichbar | Prüfen, ob der Peer wirklich tot ist; wenn ja, hier Take authority |
DUAL_AUTHORITY | Beide Seiten haben Schreibrecht | Sofort auf einer Seite Release authority |
NO_AUTHORITY | Keine Seite hat Schreibrecht | Auf einer Seite Take authority — bis dahin wird keine Steuerung ausgegeben |
+TAG_DRIFT | Tag-Definitionen unterschiedlich | Tags angleichen und prüfen, ob der Fingerabdruck übereinstimmt |
Konfiguration
In /etc/kopens/app.properties (= app.properties Symlink) ablegen und neu starten →
app.properties Referenz
| Schlüssel | Bedeutung | Standardwert |
|---|---|---|
edge.plc.write_authority | Ist dieses Edge-Gerät für das Schreiben zuständig | true |
ha.failover.mode | manual / auto | manual |
ha.peer.enabled | Peer-Monitor aktivieren | false |
ha.peer.host | Adresse des gegenüberliegenden Edge-Geräts | — |
ha.failover.heartbeat_opc | Verbindungs-(OPC-)ID, über die der Heartbeat geschrieben und gelesen wird — für auto Pflicht | — |
ha.failover.heartbeat_address | Heartbeat-Adresse auf der PLC — für auto Pflicht | — |
ha.failover.heartbeat_address2 | Optionales Spiegelregister. Leer lassen, um es nicht zu verwenden | (leer) |
ha.failover.heartbeat_data_type | Datentyp der Heartbeat-Adresse | DWord |
ha.failover.heartbeat_interval_ms | Schreib- und Beobachtungsintervall des Heartbeats (Minimum 250) | 500 |
ha.failover.takeover_timeout_ms | Hochstufung, wenn sich der Heartbeat so lange nicht ändert (Minimum 2000 — niedrigere Werte werden auf 2000 angehoben) | 2000 |
ha.failover.writer_id | Heartbeat-ID dieser Edge. Auf den beiden Edges unterschiedlich setzen — bei gleichzeitigem Anspruch gewinnt die niedrigere | 1 |
Statt dass sich die beiden Edges direkt gegenseitig prüfen, beurteilt der Modus auto die Lebendigkeit daran, dass der
Schreibverantwortliche einen Heartbeat an eine einzelne Adresse auf der PLC schreibt. Selbst wenn das Netzwerk zwischen den
Edges ausfällt, sieht die PLC beide Seiten und unterscheidet so zwischen „sehen einander nicht“ und „wirklich ausgefallen“.
API
Wird bei der Programmierung verwendet.
| Pfad | Was |
|---|---|
GET /api/v1/ha/status | Aktueller Status — derselbe, den der Peer-Monitor pollt |
PUT /api/v1/ha/write-authority | Schreibberechtigung übernehmen · abgeben |
PUT /api/v1/ha/failover/override | Erzwingen · aufheben — nur im Modus auto (sonst 409 NOT_AUTO_MODE) |
POST /api/v1/ha/definitions | Tag-Definitionen auf die Gegenseite replizieren |
Anfrage- und Antwortformate stehen im Abschnitt „Hochverfügbarkeit (HA)“ der REST API.
Bei der Installation vor Ort
- Die beiden Edge-Geräte an verschiedene Switches anschließen. Wenn sie am selben Switch hängen, ist dieser Switch ein Single Point of Failure und die Hochverfügbarkeit verliert ihren Sinn.
- Dieselbe Tag-Definition auf beide Edge-Geräte legen und prüfen, ob der Fingerabdruck identisch ist.
edge.plc.write_authority=truenur auf einem der Geräte platzieren.- Mit
ha.peer.enabled=trueundha.peer.hostdie gegenseitige Sichtbarkeit herstellen. Wenn Sieautoverwenden, geben Sie beiden Edges dieselbenheartbeat_opc·heartbeat_addressund unterschiedlichewriter_id-Werte. - Wenn Sie es zusammen mit der Plattform-Hochverfügbarkeit nutzen möchten → Plattform-Hochverfügbarkeit (HA)
Hochverfügbarkeit dient der Verfügbarkeit der Daten. Der Sicherheitszustand der Anlage wird bei jedem Softwarefehler unabhängig vom PLC / Sicherheits-PLC (SIS) garantiert. Edge oder Plattform sind nicht die Instanzen, die Sicherheit gewährleisten.
Weitere Informationen
Plattform-Hochverfügbarkeit (HA) · app.properties Referenz · Diagnose und Inspektion