[GastForen Betriebsysteme und Dienste HELIOS Toolserver - Kein Loadbalancing ohne Queue?

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Themen
Beiträge
Moderatoren
Letzter Beitrag

Toolserver - Kein Loadbalancing ohne Queue?

Coolio
Beiträge gesamt: 217

17. Feb 2009, 10:16
Beitrag # 1 von 12
Bewertung:
(3243 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi zusammen.
Ich war immer der Meinung -zwar noch nie explizit gelesen aber einfach mal davon ausgegangen- das ich einfach ein dupliziertes Tool, auf einem anderen Rechner in das Netz hängen kann und der Toolclient dann selbständig ein Loadbalancing betreibt.

Toolname (Type) ist bei beiden Rechnern identisch. und wird auch so gefunden.
Ich kriege es aber einfach nicht hin. Er spricht immer nur das eine Tool an. Das endere beachtet er nicht.

Habe nun mal eine Loadbalace-Queue gemacht, was nun eigentlich funktioniert, nur natürlich mit zwei separaten Queues, dessen Tools natürlich nun unterschiedlich lauten. Das kannst doch nicht sein oder?

Grüsse Jürgen
X

Toolserver - Kein Loadbalancing ohne Queue?

Markus76
Beiträge gesamt: 340

17. Feb 2009, 10:32
Beitrag # 2 von 12
Beitrag ID: #385853
Bewertung:
(3239 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hi

Der andere Rechner weiß auch von dem Skript? - via reconf?

Markus


als Antwort auf: [#385846]

Toolserver - Kein Loadbalancing ohne Queue?

Coolio
Beiträge gesamt: 217

17. Feb 2009, 12:30
Beitrag # 3 von 12
Beitrag ID: #385873
Bewertung:
(3226 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Markus
Das war jetzt grad zu einer grösseren Aktion ausgeartet...

Windows meldete mir beim Aufruf von srvutil «Die Anwendung konnte nicht gestartet werden weil libhelios_s.dll nicht gefunden wurde»

Anstatt lange suchen, das ganze Helios-Gerümpel sauber de-/installiert. Und nun alles ge-reconf-t...

In der Zwischenzeit kam ich jedoch kam mir jedoch auch die Einsicht, dass meine Frage für lau war. Eine einzelne Queue arbeitet die Jobs ja sequentiell ab. Folglich kann ja schon aus dieser Tatsache kein Balancing stattfinden. Sind zwei Queues -die auf das gleiche Tool verweisen- aktiv, funktioniert die Verteilung.

Es führt also kein Weg an einer Balancequeue vorbei.


als Antwort auf: [#385853]

Toolserver - Kein Loadbalancing ohne Queue?

GreatOm
Beiträge gesamt: 378

23. Feb 2009, 13:35
Beitrag # 4 von 12
Beitrag ID: #386616
Bewertung:
(3169 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Coolio ] In der Zwischenzeit kam ich jedoch kam mir jedoch auch die Einsicht, dass meine Frage für lau war. Eine einzelne Queue arbeitet die Jobs ja sequentiell ab. Folglich kann ja schon aus dieser Tatsache kein Balancing stattfinden. Sind zwei Queues -die auf das gleiche Tool verweisen- aktiv, funktioniert die Verteilung.


Das verstehe ich nicht wirklich...
Was hat der ToolServer mit einer Balance-Queue zu tun?

Wie funktioniert der ToolServer?
Normalerweise habe ich einen Hotfolder definiert, der den toolclient aufruft um das Tool laufen zu lassen.
Wenn nun mehrere Dateien in den Hotfolder gelegt werden startet der ScriptServer die einzelnen Skripte. Das geschieht mehrfach gleichzeitig, wie in HELIOS Admin: Vorgaben: ScriptServer Vorgaben: Gleichzeitige Skripte, definiert.

Somit sucht sich jeder toolclient-Aufruf einen freien ToolServer.

Vielleicht hilft das um das Load-Balancing zu optimieren.

Gruß,

GreatOm


als Antwort auf: [#385873]

Toolserver - Kein Loadbalancing ohne Queue?

Coolio
Beiträge gesamt: 217

24. Feb 2009, 00:23
Beitrag # 5 von 12
Beitrag ID: #386702
Bewertung:
(3157 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo GreatOm
Wie geschrieben hat sich das "Problem" eigentlich schon gelöst.

Dennoch zu Deiner Frage:
Ich setze den Toolserver innerhalb einer Druckerwarteschlange ein. Es würde keinen Sinn machen die Ausgabedatei in einen Hotfolder zu schreiben wenn ich diese gleich mit einem Script innerhalb einer Druckewarteschlange weiterverarbeiten kann.

Beim lesen Deiner Zeilen frage ich mich aber doch wieder, ob den ein einziger Hotfolder in der Lage ist Dateien parallel abzuarbeiten. Ich vermute mal nicht. Dein Tipp mit den Scriptservereinstellung bezieht sich doch auf mehrere Hotfolder die nebeneinander laufen? Oder irre ich mich da?


als Antwort auf: [#386616]

Toolserver - Kein Loadbalancing ohne Queue?

GreatOm
Beiträge gesamt: 378

24. Feb 2009, 08:43
Beitrag # 6 von 12
Beitrag ID: #386712
Bewertung:
(3137 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Coolio ] Beim lesen Deiner Zeilen frage ich mich aber doch wieder, ob den ein einziger Hotfolder in der Lage ist Dateien parallel abzuarbeiten. Ich vermute mal nicht. Dein Tipp mit den Scriptservereinstellung bezieht sich doch auf mehrere Hotfolder die nebeneinander laufen? Oder irre ich mich da?


Nun, _ein_ Hotfolder wird sequenziell abgearbeitet. Da aber konfigurationsabhängig mehrere Skripte gleichzeitig laufen (Default ist die Anzahl der CPUs im Server), würden mehrere toolclient-Aufrufe gleichzeitig stattfinden können.
Das hängt natürlich auch davon ab, welche anderen Hotfolder noch grad aktiv sind.

Gruß,

GreatOm


als Antwort auf: [#386702]

Toolserver - Kein Loadbalancing ohne Queue?

Coolio
Beiträge gesamt: 217

24. Feb 2009, 09:05
Beitrag # 7 von 12
Beitrag ID: #386718
Bewertung:
(3127 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat Nun, _ein_ Hotfolder wird sequenziell abgearbeitet. Da aber konfigurationsabhängig mehrere Skripte gleichzeitig laufen (Default ist die Anzahl der CPUs im Server), würden mehrere toolclient-Aufrufe gleichzeitig stattfinden können.



...was sich dann _einer_ Druckerqueue wieder gleichstellt. Um ein echtes Balancing zweier gleichlautenden Tools mittels _einem_ Hotfolder betreiben zu können, ist es also zwingend nötig, mit mindestens drei Hotfoldern zu arbeiten -eine für ein Balancing, zwei weitere für das Jobabarbeiten-.

Das wird in Zukunft auch so bleiben, ausser die Hotfolder werden zukünftig in der Lage sein, sequenziell zu arbeiten.


als Antwort auf: [#386712]

Toolserver - Kein Loadbalancing ohne Queue?

Thomas Kaiser
  
Beiträge gesamt: 1299

24. Feb 2009, 11:09
Beitrag # 8 von 12
Beitrag ID: #386738
Bewertung:
(3103 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Moin Jürg,

Antwort auf [ Coolio ] Um ein echtes Balancing zweier gleichlautenden Tools mittels _einem_ Hotfolder betreiben zu können, ist es also zwingend nötig, mit mindestens drei Hotfoldern zu arbeiten -eine für ein Balancing, zwei weitere für das Jobabarbeiten-.

Das wird in Zukunft auch so bleiben, ausser die Hotfolder werden zukünftig in der Lage sein, sequenziell zu arbeiten.


Nein, nicht unbedingt bzw. kann man bei Vorliegen gewisser Randbedingungen schon auch auf Seiten des toolclients parallel agieren.

Das "Wesen" des toolclient ist ja, daß er Daten übergeben bekommt, diese zum Toolserver überträgt, dort die Verarbeitung stattfindet (der toolclient währenddessen wartet), dann das Ergebnis zurückkommt (der toolclient währenddessen wartet), und dann der Task erst vollständig beendet ist (und ggf. in einem Skript, innerhalb dessen der toolclient aufgerufen wurde, noch Nachbearbeitung der vom Toolserver gelieferten Ergebnisse geschieht). D.h. der entsprechende toolclient -- wenn direkt aufgerufen -- blockiert quasi sowohl Drucker-Queues als auch Scriptserver-Hotfolder.

Was angesichts der mit dem Toolserver möglichen Aktionen (bspw. Skripting von Mac-Programmen per AppleEvents/AppleSkript) auch gar nicht so dumm ist, weil diese ja wirklich immer nur sequentiell auf einem Toolserver ablaufen dürfen.

Will man hier LoadBalancing betreiben (und hat bspw. mehrere physisch existente Toolserver, auf denen mit AppleEvents agiert wird bzw. einen Toolserver, auf dem problemlos Tasks parallel laufen können -- bspw. weil sie nichts mit AppleEvents zu tun haben), dann ist die Lösung die, den toolclient als blockierendes Element auszuschließen.

Geht bspw. insofern als der ScriptServer-Handler bzw. das Notification Script einer Druckerqueue nicht direkt den toolclient aufruft sondern quasi forkt.

Ich habe also auf dem Helios-Server drei Skripte:

* eines das am Hotfolder oder der Druckerqueue hängt, von Helios Dateien entgegennimmt, und mit dem Pfad zur Datei das zweite aufruft.

* das zweite Skript (das sich dann selbständig darum kümmern muß, daß nur eine gewisse Anzahl Tasks parallel laufen) prüft die Randbedingungen (bspw. max. 4 Ausführungen parallel), wenn diese passen, übergibt es wiederum die Datei ans dritte Skript und beendet sich parallel (damit keine Blockade von ScriptServer oder Druckerqueue). Im anderen Fall (bspw. es laufen gerade 4 parallele Toolserver-Tasks) wird die Ausführung so lange verzögert, bis wieder ein Slot frei ist. Damit in diesem Fall solange Blockade von Skriptserver/Spoolerqueue wie nötig.

* das dritte Skript macht dann die eigentliche Arbeit, unter anderem den toolclient-Aufruf und die Nachbearbeitung der Dateien.

Das Ganze ist aber bei weitem nicht so trivial, wie es klingt (v.a. muß man die Ausführungszeiten der Skripte im Hinterkopf behalten, sonst fliegt einem sehr schnell einiges um die Ohren. Parallel muß man bedenken, daß man keine Situation herbeiführt, bei der mehrere Tools auf dem Toolserver per AppleEvents agieren, weil das schnell in die Hose geht.)

Und wenn man sich diese 3-stufige Skript-Architektur nicht gut überlegt (und bspw. die ersten beiden Skripte universell hält, sie also ohne Änderungen an beliebige Hotfolder/Druckerqueues dranschnallen kann und diese Skripte durch bspw. den Druckernamen wissen, welches eigentliche endgültige Skript sie aufrufen sollen), dann kommt man sehr schnell in den Skripting-Wald (gut für den Admin, denn der wird plötzlich unkündbar -- schlecht für den Betrieb, weil solche Sachen schon nach wenigen Wochen nicht mehr wartbar sind, weil nicht mal mehr der, der das Ganze eingerichtet hat, mehr durchblickt)

Hauptnachteil obigen Ansatzes: Die Ausführung des eigentlichen Skripts ist komplett von Helios abstrahiert, d.h. Rückmeldungen, die normalerweise dazu führen, daß irgendwas in der scriptsrv.log-Datei erscheint bzw. im Falle von Notification Scripts dafür sorgen können, daß der Druckjob in eine Fehlerqueue verschoben wird inkl. Benachrichtigung des Users (IMO nach wie vor eines der mächtigsten und gleichzeitig am Seltensten genutzten Helios-Features -- Job-Routing auf dem Server), sind nicht mehr möglich.

Aber es gibt Situationen, wo man nicht drumherum kommt, so zu agieren (muß grad in einem Projekt bei einem Kunden anstatt auf unser eigenes "k-remote" aus "politischen Gründen" auf den Toolserver setzen, der für die angedachte Aufgabenstellung in seiner Standard-Funktionsweise um ein Zigfaches langsamer ist -- ohne solche Verfahren wie oben müssten wir da wohl noch 5-6 8-Core MacPro aufstellen, um eine vergleichbare Performance zu erreichen)

Gruss,

Thomas


als Antwort auf: [#386718]

Toolserver - Kein Loadbalancing ohne Queue?

Coolio
Beiträge gesamt: 217

24. Feb 2009, 12:14
Beitrag # 9 von 12
Beitrag ID: #386754
Bewertung:
(3093 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Danke Thomas einmal mehr für Deine Ausführung
Zitat v.a. muß man die Ausführungszeiten der Skripte im Hinterkopf behalten,

Das kommt mir bekannt vor und ist etwas an dem ich auch schon die Zähne ausgebissen, mir aber ehrlich gesagt noch keine all zu grossen Gedanken über einen möglichen Lösungsweg gemacht habe.

Zitat Hauptnachteil obigen Ansatzes: Die Ausführung des eigentlichen Skripts ist komplett von Helios abstrahiert

... was somit ein unschöner Unterbruch im Workflow bedeutet und die Frage aufwirft, wesshalb das ganze nicht von einem anderen Workflowtool (Switch, oder Dein k-remote?) steuern zu lassen...

Danke und Gruss
Jürg


als Antwort auf: [#386738]

Toolserver - Kein Loadbalancing ohne Queue?

GreatOm
Beiträge gesamt: 378

24. Feb 2009, 13:30
Beitrag # 10 von 12
Beitrag ID: #386780
Bewertung:
(3081 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Thomas Kaiser ] Nein, nicht unbedingt bzw. kann man bei Vorliegen gewisser Randbedingungen schon auch auf Seiten des toolclients parallel agieren.


Hallo Thomas,

ich verstehe nicht warum diese Ausführungen so kompliziert sein müssen...

Es reicht hier _ein_ Hotfolder wenn beim SkriptServer die z.B. Anzahl gleichzeitiger Skripte = 2 ist.
In diesem Fall wird der 1. toolclient gestartet und gleich darauf der nächste. Diese laufen dann parallel und wenn einer der Jobs fertig ist wird ein neuer gestartet.
Damit werden dann gleichzeitig 2 ToolServer bedient, deren Loadbalancing automaitsch via bonjour im Netzwerk erfolgt.

Warum sollte hier soviel weiterer Aufwand nötig sein?

Gruß,

GreatOm


als Antwort auf: [#386738]

Toolserver - Kein Loadbalancing ohne Queue?

Thomas Kaiser
  
Beiträge gesamt: 1299

24. Feb 2009, 15:17
Beitrag # 11 von 12
Beitrag ID: #386818
Bewertung:
(3066 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo GreatOm,

Antwort auf [ GreatOm ] Warum sollte hier soviel weiterer Aufwand nötig sein?


Ah, ich hab bisserl zu flüchtig gelesen vorhin. Du sprichst davon, daß man sich praktisch die Parallelisierungs-Funktionen des Skriptservers an ein Notification Script dranklebt und den Hotfolder quasi sofort per OPI Event antritt ("dt mv|cp -E")?

Hmm... aber "Skript-Verzögerung" (die in so einem Fall idealerweise 1 bzw. 0 Sekunden sein sollte) und Anzahl paralleler Skripte sind ja nur global vorzugeben, wenn ich jetzt nicht wieder was überlesen habe. Das beißt sich dann aber mit "normalem" Skriptserver-Betrieb (höhere Skript-Verzögerung nötig) bzw. sorgt für unnötig hohe Latenzen, wenn man die Skript-Verzögerung auf vernünftigen 10 Sekunden läßt?

Gruss,

Thomas


als Antwort auf: [#386780]

Toolserver - Kein Loadbalancing ohne Queue?

GreatOm
Beiträge gesamt: 378

24. Feb 2009, 15:33
Beitrag # 12 von 12
Beitrag ID: #386829
Bewertung:
(3064 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Antwort auf [ Thomas Kaiser ] Du sprichst davon, daß man sich praktisch die Parallelisierungs-Funktionen des Skriptservers an ein Notification Script dranklebt und den Hotfolder quasi sofort per OPI Event antritt ("dt mv|cp -E")?


Genau.

Antwort auf: Hmm... aber "Skript-Verzögerung" (die in so einem Fall idealerweise 1 bzw. 0 Sekunden sein sollte) und Anzahl paralleler Skripte sind ja nur global vorzugeben, wenn ich jetzt nicht wieder was überlesen habe. Das beißt sich dann aber mit "normalem" Skriptserver-Betrieb (höhere Skript-Verzögerung nötig) bzw. sorgt für unnötig hohe Latenzen, wenn man die Skript-Verzögerung auf vernünftigen 10 Sekunden läßt?


Das stimmt allerdings. Jeder Job würde entsprechend der Skriptverzögerung verlangsamt. Wenn man es eilig hat wäre dieser Weg nicht optimal. Allerdings könnte man diese Mechanik sehr einfach realisieren und es wäre ggf. transparenter als beim Einsatz einer balance queue...

Gruß,

GreatOm


als Antwort auf: [#386818]
X