Zum Hauptinhalt springen

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

Edge HA Bildschirm — Status · Umschaltverlauf · Aktionen · Peer · Konfiguration


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
Wenn beide schreiben, bewegt sich die Anlage zweimal

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​

PositionWas
Modus-BadgeMANUAL / AUTO — ha.failover.mode
BerechtigungsleisteOb dieses Edge-Gerät gerade für das Schreiben zuständig ist. Wenn READ-ONLY, dann nicht
UmschaltverlaufWann · Was hat sich geändert · Wer hat es getan
AktionenAbhängig vom Modus (siehe unten)
PeerStatus des gegenüberliegenden Edge-Geräts. Wenn ha.peer.enabled=false, dann leer
Konfigurationha.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 ändert keine Einstellungen — das ist Absicht

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

SituationWas 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 nichtEr stuft sich selbst zum WRITER hoch
Das Lesen des Heartbeats selbst schlägt fehlZählt nicht als „eingefroren“ — was nicht beobachtbar ist, ist nicht tot, daher keine Hochstufung
Der Heartbeat eines anderen WRITER ist lebendigKeine Hochstufung
Beide beanspruchen gleichzeitig WRITERDie niedrigere writer_id gewinnt, die höhere tritt zurück
Der WRITER scheitert wiederholt beim Schreiben des HeartbeatsNach max(3, ceil(timeout ÷ interval)) Fehlern in Folge stuft er sich selbst zu STANDBY herab — mit den Standardwerten ceil(2000 ÷ 500) = 4-mal
StartStartet 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ückSie 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. Mit Clear override aufgehoben, gilt wieder die automatische Entscheidung (die API ist PUT /api/v1/ha/failover/override).
Beide Seiten mit Force writer zu erzwingen bedeutet doppeltes Schreiben

Eine manuelle Übersteuerung umgeht die automatische Entscheidung. Werden beide Edges als WRITER erzwungen, hält nichts das auf — Übersteuerungen liegen in der Verantwortung des Betreibers.

2000 ms ist ein Auslegungswert — keine gemessene Übernahmezeit

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​

StatusBedeutungWas zu tun ist
OKNormal — nur eine Seite hat Schreibrecht—
DOWNPeer nicht erreichbarPrüfen, ob der Peer wirklich tot ist; wenn ja, hier Take authority
DUAL_AUTHORITYBeide Seiten haben SchreibrechtSofort auf einer Seite Release authority
NO_AUTHORITYKeine Seite hat SchreibrechtAuf einer Seite Take authority — bis dahin wird keine Steuerung ausgegeben
+TAG_DRIFTTag-Definitionen unterschiedlichTags 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üsselBedeutungStandardwert
edge.plc.write_authorityIst dieses Edge-Gerät für das Schreiben zuständigtrue
ha.failover.modemanual / automanual
ha.peer.enabledPeer-Monitor aktivierenfalse
ha.peer.hostAdresse des gegenüberliegenden Edge-Geräts—
ha.failover.heartbeat_opcVerbindungs-(OPC-)ID, über die der Heartbeat geschrieben und gelesen wird — für auto Pflicht—
ha.failover.heartbeat_addressHeartbeat-Adresse auf der PLC — für auto Pflicht—
ha.failover.heartbeat_address2Optionales Spiegelregister. Leer lassen, um es nicht zu verwenden(leer)
ha.failover.heartbeat_data_typeDatentyp der Heartbeat-AdresseDWord
ha.failover.heartbeat_interval_msSchreib- und Beobachtungsintervall des Heartbeats (Minimum 250)500
ha.failover.takeover_timeout_msHochstufung, wenn sich der Heartbeat so lange nicht ändert (Minimum 2000 — niedrigere Werte werden auf 2000 angehoben)2000
ha.failover.writer_idHeartbeat-ID dieser Edge. Auf den beiden Edges unterschiedlich setzen — bei gleichzeitigem Anspruch gewinnt die niedrigere1
Der Heartbeat läuft über die PLC

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.

PfadWas
GET /api/v1/ha/statusAktueller Status — derselbe, den der Peer-Monitor pollt
PUT /api/v1/ha/write-authoritySchreibberechtigung übernehmen · abgeben
PUT /api/v1/ha/failover/overrideErzwingen · aufheben — nur im Modus auto (sonst 409 NOT_AUTO_MODE)
POST /api/v1/ha/definitionsTag-Definitionen auf die Gegenseite replizieren

Anfrage- und Antwortformate stehen im Abschnitt „Hochverfügbarkeit (HA)“ der REST API.


Bei der Installation vor Ort​

  1. 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.
  2. Dieselbe Tag-Definition auf beide Edge-Geräte legen und prüfen, ob der Fingerabdruck identisch ist.
  3. edge.plc.write_authority=true nur auf einem der Geräte platzieren.
  4. Mit ha.peer.enabled=true und ha.peer.host die gegenseitige Sichtbarkeit herstellen. Wenn Sie auto verwenden, geben Sie beiden Edges dieselben heartbeat_opc · heartbeat_address und unterschiedliche writer_id-Werte.
  5. Wenn Sie es zusammen mit der Plattform-Hochverfügbarkeit nutzen möchten → Plattform-Hochverfügbarkeit (HA)
Die physische Sicherheit liegt in der Verantwortung des PLC

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