NEWS
Hilfestellung zur optimalen Konfiguration (Multihost/Redis etc)
-
Hallo liebe Forummitglieder,
nachdem ich seit langer Zeit nun mehrere (unabhängige) ioBroker Instanzen laufen habe, bin ich dabei meine Installionsumgebung zu überdenken. Dabei würde es mich freuen euer Feedback bzw. eure Ratschläge zu bekommen. Ich hatte vor ca. 1 1/2 Jahren mal mit Multihost experimentiert, ich muss aber gestehen, dass mir die Abhängigkeiten dieser Umgebung nicht hinreichend klar waren. Deshalb hatte ich bisher davon Abstand genommen und tausche Daten zwischen den Systemen per WEB-API aus. Nun überlege ich ggfs. auf Multihost-Betrieb umzustellen und ggfs. Redis einzusetzten. Dazu hätte ich gerne Eure Meinung. Die Ausgangslage:
1. Homematic auf Raspberrymatic / RaspberryPI3 mit ca. 40 Homematic Geräten (alte und IP)
2. Synology DS716+II mit 8GB RAM und 8 TB RAID.
Darauf läuft unter Docker eine ioBroker Instanz und in einem 2. Docker-Container mySQL als History Instanz zur Langzeit-Historie.
Mir gefällt dabei insbesondere die Möglichkeit die Datenbereiche (z.B. /opt/iobroker) auf die DS zu legen und dort auch zu sichern.
Auf der DS laufen auf weitere Services (Surveillance Station mit API) und 2 virtuelle Machinen (Debian).
3. Raspberry PI3 im Verteilerkasten im Keller - Betrieb von USB3-Stick keine SD-Karte
Dort läuft ioBroker und SQL-Server (MariaDB) als History Instanz..
Über den Raspberry PI laufen hardwareabhängige Services wie 1-Wire Sensoren, Auslesen Gasverbrauch / Stromverbrauch aus den Zählern
und das Schalten der Zirkulationspumpe für Warmwasser bzw. die Taupunkt-Lüftungssteuerung des Kellers.
Bis vor 2 Monaten lief darüber auch die eigenprogrammierte Heizkesselsteuerung im 24/7 Betrieb.
Nun habe ich einen Buderus Kessel mit IP-Schnittstelle und den KM200 Adapter im Einsatz.
4. RaspberryPI2 im Ferienhaus mit LTE-Stick mit pivCCU und ioBroker.
Die Instanz liest / schreibt per WEB-Api Werte der ioBroker Instanz auf der DS-Station und damit schalte ich die Heizung ein und aus.
Ist nicht 100% stabil, deshalb kann ich auch per SMS schalten bzw. neustarten (reboot)
Der Raspberry (3) läuft nachwievor im 24/7 Betrieb und seit fast 2 Jahren absolut problemlos. Bei gößeren Änderungen sichere ich ab und zu den kompletten USB-Stick mit dem Win32Diskimager. Die Diskstation erhält nahezu jeden Monat Updates von Synology und braucht dann einen Neustart. Bis alle Services wieder laufen, vergehen dann bis zu 20 Minuten.
DIe Umstellung auf Multihost würde meinen Pflegeaufwand stark vereinfachen. Zur Logikprogrammierung setze ich zu fast 100% auf Node-Red und habe inzwischen eine große Sammlung an Skripten und die dazugehörigen Objektstrukturen zur Datenprotokollierung / Parametrisierung und Darstellung in VIS.
Eigenlich würde es Sinn machen den Multihost Master auf die Synology zu legen. Aber spricht der regelmäßige Neustart nicht dagegen?
Auch die Objektdatenbank ggfs. mit Redis wäre optimal auf der Synology. (Redis dann unter Docker zur leichten Datensicherung?)
Wie verhält sich der Slave, wenn der Master für 20 Minuten nicht läuft? Gibt es dann eine vorgegebene Reihenfolge, wie die Systeme runter und wieder raufgefahren werden müssen? Und ist der Multihostbetrieb auch 100%ig stabil? Und nicht zuletzt die Frage wie ich die Multihostumgebung am besten sichere?
Mich würde sehr interessieren, welche Rückmeldung und Empfehlung ich aus dem Forum bekomme.
Viele Grüße
Thomas
-
Also ich setze auf Multihost.
Wenn der Master weg ist dann meckern die Slaves und beenden alle Adapter. Die werden an sich automatisch wieder gestartet wenn der Master zurück ist. Der Main Redis und der Master sollten auf der gleichen Maschine laufen - was mit deinem Synology Ansatz korrekt wäre.
Du willst in dem Fall vllt die Automatischen Synology Updates deaktivieren und nur Notify haben das Du etwas kontrolle über das Update hast und checken kannst :-)
Sichern tust du den master (damit hast du alle Adapter des Masters und alle Daten der ioBroker-Installation), da die Slaves zur States/Object-DB des Masters verbinden. Die Slaves sicherst Du einzeln, aber dort ist an sich nichts wichtiges was ioBroker angeht. Falls das weg wäre und du eine frische iobrokert Installation da hinstellen würdest dann würden die fehlenden Adapter automatisch installiert werden.
-
Danke schon einmal für das Feedback. Bleiben für mich im Wesentlichen noch folgende Fragen:
1. Die hardware-abhängigen Programme müssen auf dem Raspberry PI bleiben.
Z.B. das Schalten von Relais über GPIO. Das mache ich in Node-Red.
Früher gingen keine 2 Node-red Adapter-Instanzen. Weisst Du, ob dies jetzt im Multihost-Modus geht?
2. Würdest Du Redis empfehlen? Wenn ja wie soll ich das installieren?
Ich sehe, dass es mehrer Redis-Images in Docker für die Diskstation gibt?
Was ist dann ggfs. besonders zu beachten? Und wie sichere ich Redis?
3. Was wären die Schritte und die richtige Reihenfolge zur Umstellung der lokalen ioBroker Installationen in eine Multihost-Umgebung?
Danke
Thomas
-
@tom57:1. Die hardware-abhängigen Programme müssen auf dem Raspberry PI bleiben.
Z.B. das Schalten von Relais über GPIO. Das mache ich in Node-Red.
Früher gingen keine 2 Node-red Adapter-Instanzen. Weisst Du, ob dies jetzt im Multihost-Modus geht? `
Hm … auf verschiedenen Hosts könnte gehen. Müsstest Du versuchen. Laut Konfig darf pro Host nur eine Instanz sein ...
@tom57:2. Würdest Du Redis empfehlen? Wenn ja wie soll ich das installieren?
Ich sehe, dass es mehrer Redis-Images in Docker für die Diskstation gibt?
Was ist dann ggfs. besonders zu beachten? Und wie sichere ich Redis? `
Kommt darauf an wie "gross" dein System ist (Anzahl Datenpunkte, Frequenz Aktualisierung). Am Ende kannst DU die CPU Last des js-controllers Prozesses ansehen um zu sehen ob Bedsrf ist.Ich nutze es und es hat Vorteile. Redis hat zwei Backup varianten … kannst ein File schreiben lassen oder er macht wie eine DB ein fortlaufendes Logfile.
https://redis.io/topics/persistence
@tom57:3. Was wären die Schritte und die richtige Reihenfolge zur Umstellung der lokalen ioBroker Installationen in eine Multihost-Umgebung? `
Recht einfach. Der eine wird ja der master.Notiere die alle Konfigs von den instanzen die zukünftig slaves werden, am besten wegsichern und neues frisches iobroker auf den slaves aufsetzen. Die mit dem Master verbinden und dann alle instanzen auf den slaves neu anlegen. vom Master aus
-
Vielen Dank für Dein Feedback.
Die gesamte CPU-Belastung aller ioBroker Prozesse im Docker auf der Diskstation ist unter 1% - der js-controller davon 0,3%.
Ich habe ca. 1000 - 1200 Datenpunkte die alle paar Sekunden bis 1-2 Minuten aktualisiert werden.
Wenn die CPU-Belastung das Kriterium für Redis ist, dann gibt es keinen Grund umzusteigen.
Wenn ich die Dokumentation richtig verstehe, dann läuft die gesamte Kommunikation zwischen Master und Slaves über die Ports 9000 und 9001.
Pollen dabei die Slaves nur den Master (Lesen / Schreiben) oder muss auch der Slave per IPV4-Adresse vom Master aus erreichbar sein? (Wegen LTE-Stick Verbindung der Ferienhaus-Instanz). Per Portweiterleitung kann ich die Ports im Master aus dem Internet öffnen, aber der Slave bekommt keine öffentliche IPV4 Adresse.
Mal sehen, ob es jemanden gibt der im Multihost-Modus 2 Mal node-red laufen hat. Ansonsten werde ich das mal testen.
-
@tom57:Früher gingen keine 2 Node-red Adapter-Instanzen. Weisst Du, ob dies jetzt im Multihost-Modus geht? `
Doch die gehen!Leider geht die Konfiguration über den Admin.0 nicht.
Du musst di node-red Instanzen der slaves über <slaveip>:1881 aufrufen.
Gruß
Rainer</slaveip>
-
Hallo Rainer,
Danke fürs Feedback. was meinst Du mit Konfiguration unter Admin?
Bedeutet dies, dass ich die zweite Instanz auf Betriebssystemebene installieren muss?
Und muss der Port mit 1881 anders der erste mit 1880 sein, auch wenn ich direkt im Slave installiere?
Grüße
Thomas
-
@tom57:Bedeutet dies, dass ich die zweite Instanz auf Betriebssystemebene installieren muss? `
Nein, nur den node-red.1 "Desktop" kannst du nicht über den Admin des Masters aufrufen sondern über die IP des SlavesGruß
Rainer
-
Hallo Rainer,
ich habe gerade mal auf einen Raspberry PI ioBroker komplett neu installiert und den Multihost am Master (Diskstation) und Slave (Raspi) eingerichtet.
Soweit so gut. Ich bekomme nur keine 2. Node-Red-Instanz installiert …. :(
Fehler:
! $ ./iobroker add node-red 1 –host rasp
! ERROR: host.DS1 error: this adapter does not allow multiple instances on one host
! ERROR: process exited with code 21Hast Du eine Idee wie ich die 2. Instanz installieren soll?
Grüße
Thomas
-
Haben beide Hosts unterschiedliche Namen?
Installation über admin!
Gruß
Rainer
-
Hast du auch auf die beiden hosts installiert, oder versehentlich beide auf den selben?

-
Nochmal zu meinem Verständnis:
Nachdem der Multihost-Modus aktiviert ist, dann geht admin nur auf dem master –> ds1:8081. rasp:8081 geht nicht mehr.
Also kann ich unter dem Master eine neue Adapter Instanz aufmachen, dabei wird nach dem Server und nach der Instanznummer gefragt.
Beim Server gebe ich den Slave ein (rasp) und erhalte folgende Fehlermeldung:
$ ./iobroker add node-red –host rasp
ERROR: host.DS1 error: this adapter does not allow multiple instances on one host
ERROR: process exited with code 21
So wie bei Dir hätte ich das gerne !!!
-
–-
Hier stand Quatsch.
-
@tom57:Nachdem der Multihost-Modus aktiviert ist, dann geht admin nur auf dem master –> ds1:8081. rasp:8081 geht nicht mehr.
Also kann ich unter dem Master eine neue Adapter Instanz aufmachen, dabei wird nach dem Server und nach der Instanznummer gefragt. `
korrekt!@tom57:Beim Server gebe ich den Slave ein (rasp) und erhalte folgende Fehlermeldung:
$ ./iobroker add node-red –host rasp
ERROR: host.DS1 error: this adapter does not allow multiple instances on one host
ERROR: process exited with code 21 `
Sollte nicht sein.Der bezeichnung
@tom57:heißen DS1 `
entnehme ich dass der Master auf einer DS läuft.Da er (habe gerade nachgelesen) in einem Docker läuft bin ich raus.
Da gibt es so viele Fallstricke, die ich nicht kenne.
Mag daher sein, dass es ein Bug ist, kann aber auch an der Konfiguration des Dockers liegen.
Gruß
Rainer
-
Habe genau deswegen was am Admin geändert. In 3.5.7 und vorher war da noch ein Fehler drin. Würde mir das sehr gerne ansehen. Du hast eine PN.
-
Verschiebe doch zuerst den node-red.0 mit dem Admin auf den Slave. Dann versuche die Installation von node-red.1 auf dem Master.
-
So jetzt weiss ich, wie ich zwei Instanzen von node-red im Multihost zum Laufen bringe:
Zuerst muss die Instanz auf dem Slave installiert werden und erst danach die Instanz auf dem Master.
Umgekehrt geht nicht ! (Fehler bei der Überprüfung). Dabei kann beides Mal die Portnummer 1880 vergeben werden.
Ich habe die 1. Instanz vom Master auf den Slave geändert und dann node-red ein zweites Mal auf dem Master installiert.
Beim "Umzug" auf den Slave ist mir aufgefallen, dass alle Flows mit umgezogen sind.
Bei der "Neuinstallation" auf dem Master waren alle Flows noch vorhanden. D.h. alle Flows liefen dann 2 Mal !
Grüße und vielen Dank an alle die mitgeholfen haben
Thomas