Dokumentation
Replikation
Mit der kostenpflichtigen Erweiterung Mirroring kann ein System als Spiegel (Slave) eines anderen Systems (Master) betrieben werden. Die Replikation wird in der Kern Instanz "Replikation" bzw. in der Datei "replication.json" konfiguriert und beim Start von IP-Symcon eingelesen. Änderungen an der Konfiguration werden daher erst nach einem Neustart des Diensts wirksam.
Ist die Replikation aktiv, lädt der Slave beim Start die Konfiguration vom Master. Im laufenden Betrieb gleicht er alle 5 Sekunden die Änderungen des Masters ab. Änderungen, welche direkt am Slave vorgenommen werden, werden dabei überschrieben.
| Modus | Konstante | Name | Beschreibung |
|---|---|---|---|
| 0 | REPLICATION_MODE_PARALLEL |
Parallel | Der Slave ist voll einsatzbereit und all seine Verbindungen sind aktiv. |
| 1 | REPLICATION_MODE_STANDBY |
Standby | Die I/O-Instanzen des Slave bauen keine Verbindungen auf und verbleiben im Status Standby (106, IS_STANDBY). Ereignisse und Timer der Instanzen werden nicht ausgeführt. Erst beim Failover wird der Slave aktiv. |
Failover
Im Modus Standby kann der Slave die Aufgaben des Masters übernehmen, indem er mit IPS_PromoteToReplicationMaster zum Master befördert wird. Dabei wird der Abgleich angehalten, alle Instanzen im Status Standby werden aktiviert und Ereignisse sowie Timer wieder ausgeführt. Ist das automatische Failover aktiv (Parameter "FailoverActive"), geschieht dies automatisch, sobald der Abgleich mit dem Master so oft in Folge fehlgeschlagen ist, wie im Parameter "FailoverCount" angegeben (Standard: 20). Kann die Konfiguration beim Start auch nach mehreren Versuchen nicht vom Master geladen werden, startet der Slave ebenfalls als Master. Mit IPS_DemoteToReplicationSlave wird der Slave wieder zurückgestuft und der Abgleich fortgesetzt.
Sync Remote
Mit dem Modul Sync Remote wird der Objektbaum eines entfernten Symcon Systems unterhalb der Sync Remote Instanz gespiegelt. Jedes gespiegelte Objekt erhält dabei eine eigene lokale ID, auch das Wurzelobjekt (ID 0) des entfernten Systems. Symcon speichert für jede Sync Remote Instanz die Zuordnung zwischen der ID auf dem entfernten System (RemoteID) und der lokalen ID. Als ServerID dient die ID der lokalen Sync Remote Instanz. Die Zuordnung wird in den Einstellungen gespeichert und beim Löschen des lokalen Objekts entfernt. Ein Slave übernimmt bei der Replikation die Zuordnungen des Masters.
Das Schalten gespiegelter Variablen (SetValue, RequestAction), Modul-Funktionen sowie ändernde IPS_ Funktionen (z.B. IPS_Set*, IPS_Delete*, IPS_RunScript, IPS_ApplyChanges), deren erster Parameter ein gespiegeltes Objekt ist, werden über die Zuordnung an das entfernte System weitergeleitet, auf dem das Objekt liegt. Lesende Funktionen (IPS_Get*, IPSIs*, IPS\Exists, IPS_HasChildren, IPS_HasPermission) und die Funktionen zur Umrechnung der IDs wirken lokal auf dem gespiegelten Objekt. Ausnahmen sind IPS_GetConfigurationForm, IPS_GetMediaContent, IPS_GetScriptContent und IPS_GetFlowScriptStatistic, welche weitergeleitet werden. Die Debug-Funktionen stehen für gespiegelte Instanzen nicht zur Verfügung und melden einen Fehler.
Mit IPS_GetRemoteObject, IPS_FindObjectID, IPS_FindRemoteID und IPS_FindServerID können die Objekt-IDs zwischen dem lokalen System und den entfernten Systemen umgerechnet werden. Ist keine Zuordnung vorhanden, liefern die Find-Funktionen 1.
| IPS_DemoteToReplicationSlave | stuft einen zum Master beförderten Slave wieder zurück |
| IPS_FindObjectID | liefert die lokale ID zu einer ID des entfernten Systems |
| IPS_FindRemoteID | liefert die ID des entfernten Systems zu einer lokalen ID |
| IPS_FindServerID | liefert die Sync Remote Instanz eines gespiegelten Objekts |
| IPS_GetRemoteObject | liefert die ID eines gespiegelten Objekts auf dem entfernten System |
| IPS_GetReplicationFailoverTime | liefert den Zeitpunkt des letzten Failovers |
| IPS_GetReplicationMode | liefert den Modus der Replikation |
| IPS_GetReplicationSyncTime | liefert den Zeitpunkt des letzten erfolgreichen Abgleichs |
| IPS_IsReplicationActive | prüft, ob die Replikation aktiv ist |
| IPS_IsReplicationFailoverActive | prüft, ob der Slave die Aufgaben des Masters übernommen hat |
| IPS_PromoteToReplicationMaster | befördert den Slave zum Master |