NEWS
[gelöst] Multihost Instanzen zwischen hosts verschieben
-
Was ist das Kommando um per CLI / Shell eine Instanz die installiert und aktiv ist von Host A auf Host B zu verschieben?
Dies ist über eine langsame Remoteverbindung im GUI / Webinterface sehr mühsam. Daher suche ich den CLI Weg. -
@reimuc der ist gut ... gute frage
-
@reimuc Versuch mal
iobroker set adaptername.X --host hostname
Mit "hostname" der Hostname wie er in iobroker bekannt ist.
Bin aber ehrlich: Untested ...
-
@apollon77
danke für die Antwort.
Leider hat es nicht geklappt.
Mit dem Vorschlag:iob set vis.0 --host home1 Adapter "vis.0" has no setting "host". No parameters set.
Nun habe ich es alles durch das Admin Interface gelöst. War aber eine sehr langweilige Angelegenheit.
Da ich es anders gelöst habe können wir von meiner Seite aus den Fall schließen.
-
@reimuc
Dann schließ ihn bitte selbst, indem Du im ersten thread ein [gelöst] vor den Titel setzt. Schön wäre aber, die Lösung auch zu präsentieren. -
@meister-mopper sagte in Multihost Instanzen zwischen hosts verschieben:
Schön wäre aber, die Lösung auch zu präsentieren.
gibbet ja nicht
@reimuc sagte in Multihost Instanzen zwischen hosts verschieben:
Nun habe ich es alles durch das Admin Interface gelöst. War aber eine sehr langweilige Angelegenheit.
-
@meister-mopper said in Multihost Instanzen zwischen hosts verschieben:
[gelöst]
Leider war die Lösung für mich es nicht über die Commandline CLI zu machen. Den Multihost habe ich nun aufgelöst und (wohl auch) "zuerschossen". Dabei ein neues Problem geschaffen, welches ich in einer anderen Frage posten werde.
Demnächst werde ich mir aber nochmal einen Multihost aufbauen und es dann nochmals probieren.
Vielen Dank für die Unterstützung. -
@reimuc dann stell die frage bitte nochmal in einem GitHub issue im js-controller. Dann finden wir die Lösung oder es wird ein Feature request
-
@apollon77 Ist es ok, wenn ich mich hier noch d´ranhänge? Es paßt zur Überschrift, aber es geht nicht nur um Aktion via CLI/Shell, sondern allgemein, also auch via GUI.
Ich beschäftige mich auch seit ein paar Tagen mit dem Multihost-Thema und habe gerade meinen bisherigen Single-Host (Raspi4B) zum Master gemacht und mir einen "alten" Raspi3B+ als bisher "nackten" Slave (ist nur eine Admin-Instanz d´rauf) eingerichtet. Das hat nach den Anleitungen
https://www.iobroker.net/#de/documentation/install/linux.md
und
https://www.iobroker.net/docu/index-24.htm?amp
gut funktioniert!Zum Thema "Aufgaben verteilen":
Bei Neuinstallation eines Adapters kann ich den dort beschriebenen Prozeß nicht nur durchführen, sondern mir auch vostellen, was dabei konkret passiert, nämlich offenbar nichts anderes, als auch auf einem Single-Host-System, nur daß ich mir eben "aussuchen kann", ob der Adapter/die Instanz auf dem Master oder Slave entsteht.Bevor ich jetzt aber testweise eine Instanz ´mal vom Master auf den Slave verschiebe, für mein Verständnis folgende Fragen, weil mich https://forum.iobroker.net/topic/39085/iobroker-mit-multihost/29?page=2 mehr verwirrt als erleuchtet hat (allerdings geht es da um ein spezielles Thema bezüglich Multihost und bei mir "nur" um das generelle Verständnis):
- Ich hatte mir eine Instanz bisher immer als "parametrierte" Kopie eines Adapters vorgestellt (also tatsächlich Dateien, die ich dann auch auf dem zugewiesenen HOST erwartet hätte). Hier gewinne ich aber den Eindruck, daß eine Instanz, die einem Slave zugewiesen ist, dort gar keine Dateien hat, weil es eher eine Art Ein-Ausgabe-Ansicht des Adapters ist. Was stimmt / trifft eher zu? Falls es doch Dateien sind: Wird die Instanz "wirklich verschoben" (verschwindet also "physikalisch restlos" vom Master) und wird auf dem Slave neu angelegt"? Erfolgt "Aufräumen"/Speicherplatzfreigabe auf dem Master?
- Wenn man z. B. zwei Instanzen eines Adapters auf dem Master hat und nur eine verschiebt, wird dann eine Adapter- oder eine Instanzkopie oder beides auf den Slave geschoben? Oder wird auf dem Master "nur die Information hinterlegt", daß er dem Slave beim Starten sagen soll, daß er die Daten für diese Instanz an den Master schicken soll? Ich konnte da aus den Aussagen von https://forum.iobroker.net/topic/39085/iobroker-mit-multihost/15?page=1 kein "Endergebnis" ableiten.
- Ich gehe davon aus, daß ich als Multihost-Neuling nicht gleich die schlaueste Last-/Instanzaufteilung vornehmen werde. Ist es unkritisch, ggf. Instanzen auch wieder zurück / hin und her zu schieben oder muß man dabei jedesmal verbleibenden "Restmüll befürchten", wie es @amg_666 hier andeutet?
- Gibt es Tips / "anerkannte" Strategien, welche Instanzen sich für den Anfang zum "Auslagern" besonders eignen? Ich hatte da so Ideen wie z. B. flott (scheint mir relativ viel Last zu erzeugen, wenn es eine Grafik für VIS berechnet). Abgesehen von Adaptern für spezielle Hardware hätte ich sonst noch "allgemeine" Adapter wie z. B. backitup, discovery, history, sayit oder vis im System.
Danke für die o. g. Anleitungen und schon ´mal vorab, für Antworten/Hinweise.
-
@andersmacher Also am Ende ist es so das eine Adapterinstanz Standardmäßig keine "Dateien "hat ausser die JavaScript Files die den Adaptercode enthalten. Wenn Du einen Adapter auf einen Host verschiebst wo diese Dateien fehlen werden Sie automatisch vor dem start dort installiert.
Alle Daten liegen standardmäßig in Objekten und States oder ggf im ioBroker Storage der am Ende auf dem Master gespeichert ist und von allen Systemen genutzt wird.
In seltenen Fällen (zB zigbee/zwave2) liegen auch Dateien an andern Stellen auf dem Host selbst , zb weil dort der USB Sstick steckt ... das ist dann eh nicht so simpel auf einen andere Host geschoben. Andere Adapter legen maximal "temporäre Daten" (zb sayit gecachte mp3 files) ab, wo es egal ist weil Sie ggf einfach auf dem anderen host neu erstellt werden.
Ansonsten macht es keinen Sinn "web" related Adapter wie vis oder so woanders zu haben als der Web Adapter ist:-) Am Ende auch logisch
Das wäre dann 1.)
2.) Wie ben beschrieben wird der Adapterprozess auf dem Slave gesartet der dort sein soll ... der Adaptercode liegt dann ggf auf beiden Hosts und muss auch doppelt aktualisiert werden.
3.) Wie oben gesagt im Normalfall nicht. Es gibt aber Ausnahmen
4.) Neeeee. am Ende bleibt es Dir überlassen.
-
eine Anmerkung.. du musst zusehen dass du einen und denselben Adapter nicht 2 mal in unterschiedlichen Version installiert hast.. einmal auf dem Master und einmal auf dem Host. im schlimsten fall läuft der Adapter dann garnicht..
-
@apollon77 Vielen, vielen Dank für die Erklärungen!
Zu "... ausser die JavaScript Files die den Adaptercode enthalten..."
Die JavaScript Files gibt es dann aber nur einmal, also pro Adapter, nicht für jede Instanz einen separaten Satz Dateien - oder? Nur falls es eine Instanz des Adpaters noch auf einem anderen Host gibt, könnten dort auch noch einmal die JavaScript Files existieren?Zu "Wenn Du einen Adapter auf einen Host verschiebst..."
Ist das ein "Verschreiber" und Du meinst "Wenn Du eine (Adapter)instanz auf einen Host verschiebst..."?
Bis jetzt dachte ich, man kann nur Instanzen verschieben. Habe auch noch keine Stelle gefunden, wo man den Adapter eienm anderen Host zuweisen könnte???Zu "...der Adaptercode liegt dann ggf auf beiden Hosts und muss auch doppelt aktualisiert werden."
Um das zu verstehen, folgendes Beispiel:
Ein Adapter sei auf dem Master installiert und hat dort zwei Instanzen. Jetzt schiebe ich eine Instanz auf den Slave. Ich verstehe Dich oben so, daß dadurch automatisch Dateien des Adapters auf den Slave geschoben werden (könnten).
Sieht man dann auch im Adapter Reiter des Admin, daß auf dem Slave dann auch dieser Adapter installiert ist. Ist das dann so ein Fall, für den @arteck "Achtung" gesagt hat, bei dem man später aufpassen muß, den Adapter auf dem Master und dem Slave immer auf der gleichen Version zu halten?Das mit dem Benutzen mehrerer Instanzen eines Adapter auf verschiedenen HOSTs scheint mir dann aber doch schon die "höhere Schule" des ioBrokers zu sein. Muß ich erstmal sacken lassen und wahrscheinlich ein bißchen mit "rumspielen", bis ich das ganz blicke.
@arteck Mir war noch gar nicht bewußt, daß ich jetzt mit dem Multihostsystem auch aussuchen kann, wo ich den Adapter installiere. Habe aber gerade gesehen, daß das ja tatsächlich im Adapter-Reiter in der Kopfleiste geht. Danke für den offenbar wichtigen Hinweis!
-
1.) Ja, pro Host liegen die JavaScript Files einmal - egal wieviele Instanzen dort laufen.
2.) Ja, Instanzen werden verschoben. Korrekt.
3.) beim verschieben von Instanzen wird auf dem anderen Host auch das npm Paket des Adapters installiert. Danach ists auf beiden - auch wenn du die einzige Instanz verschoben hast.
Das mit mehrern Instanzen ist mega simpel. Machs einfach
Du wählst im Admin unter Adapter oben den Host und dann siehst Du was auf dem Host drauf ist und installierst es dort.
-
@apollon77 Daß das mit den mehreren Instanzen auf verschiedenen Host "megasimpel funktioniert" glaube ich Dir gern!
Aber ich bin halt jemand, der imer alles andersmachert (;-) und will dann dabei auch möglichst verstehen, wie es wirklich funktioniert. Dazu habt Ihr mir mit Euren Erklärungen und Hinweisen eine gute Grundlage gegeben. Nochmals Danke! -
@andersmacher have fun, und gern weiter Fragen ... wenn Du der Meinung bist das Dokus ggf erweitert werden sollten sag wo und was und wir machens