Oscam Server mit Loadbalancer: Unterschied zwischen den Versionen

Aus Zebradem WIKI
Zur Navigation springenZur Suche springen
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 41: Zeile 41:
:Man kann aber auch mehr setzen (200, 300 ....), gerade bei sehr leistungsschwachen Geräten auf denen Oscam läuft sollte man vielleicht nicht allzu häufig speichern.  
:Man kann aber auch mehr setzen (200, 300 ....), gerade bei sehr leistungsschwachen Geräten auf denen Oscam läuft sollte man vielleicht nicht allzu häufig speichern.  
:Dann bietet sich ein Wert von z.b. 500 ecm's an.<br><br>
:Dann bietet sich ein Wert von z.b. 500 ecm's an.<br><br>
:<FONT COLOR=RED>lb_savepath </FONT>= /tmp/.oscam/stat ist default. Hier kann man einstellen wohin der LB seine Statistiken speichert. Default Ordner ist eigentlich gut geeignet.
:Wenn man aber seinen Server (also das Gerät selber: PC, Dream oder was auch immer) öfter mal rebootet, ist /tmp nicht geeignet, da alles was in /tmp liegt beim reboot gelöscht wird.<br/>
:Ich selber nutze lb_mode = 1, damit hab ich die beste Erfahrung gemacht.  
:Ich selber nutze lb_mode = 1, damit hab ich die beste Erfahrung gemacht.  
:lb_mode = 2 würde ich nur Leuten empfehlen die keine externen Reader eingebunden haben, sondern nur Lokal Karten.  
:lb_mode = 2 würde ich nur Leuten empfehlen die keine externen Reader eingebunden haben, sondern nur Lokal Karten.  

Version vom 17. Januar 2011, 20:23 Uhr


Das Board mit Freiheiten

Oscam Server mit Loadbalancer

Hallo Oscamfangemeinde

Aus gegeben Anlass (Anfrage eines Users hier im Board) ein kleiner Ausflug ins Reich von Oscam und sein Loadbalancer.
Habe in folgendem Text, Faulheits bedingt, Loadbalancer durch LB abgekürzt.

Durch den LB ist es möglich die Lasten des Server, gerade zu Stoßzeiten, auf mehrere gleiche Karten zu verteilen.
Damit man möglichst immer die schnellsten Antwortzeiten bekommt.
Gerade wenn viele unterschiedliche Sender auf verschiedenen Transpondern geschaut werden, kann es zu sehr hohen Antwortzeiten des Server (Karte) kommen.
Wenn man nun zwei mal die selbe Karte im Server hat, überprüft der LB die Antwortzeiten beider Karten und schickt die Anfragen an die Karte mit der niedrigsten Antwortzeit.

Man sollte aber wissen das der LB im Oscam global arbeitet. Es werden immer alle Reader einbezogen.
Das heißt wenn man Cline von CCcam Servern eingebunden hat, werden auch diese mit einbezogen. Auch die Karten die der CCcam Server auf hop1/2/3 ... hat.
Genauso werden auch newcamd und camd3 Reader vom LB mit benutzt.

Die LB Einstellungen kommen im Oscam, in die oscam.conf unter [global]:
lb_mode = 1
lb_save = 100
Normal würde die erste Zeile "lb_mode" schon reichen um LB zu aktivieren. Ich rate aber jedem "lb_save = 100" auch noch zu setzen.

lb_mode - Hiermit wird LB überhaupt aktiviert. Es gibt 4 Einstellmöglichkeiten unter lb_mode.

  • lb_mode = 0 damit ist LB deaktiviert (default)
  • lb_mode = 1 fastest reader first, hier wird immer der schnellste Reader (kleinste Antwortzeit) benutzt
  • lb_mode = 2 oldest reader first, kann ein bisschen verwirren wegen ältesten Reader zuerst. Ist aber eigentlich simple, denn hier werden die Anfragen abwechselnd an die Reader geschickt.
Hat man zwei Karten :::geht Anfrage 1 an Karte 1. Anfrage zwei geht an die zweite Karte da sie nun am längsten nichts bekommen hat.
Anfrage 3 geht wieder an die erste Karte da sie nun am längsten nicht geantwortet hat usw. Hat man 3
Karten gehen die Anfragen abwechselnd an Karte eins dann zwei dann drei, nun wieder 1;2;3.
  • lb_mode = 3 lowest usage level, hier wird eine Durchschnitts Antwortzeit aus 5 ecm's berechnet und der Reader mit der niedrigsten Auslastung wird genommen.

lb_save - Default (man setzt keine "lb_save" Zeile in die config) ist "lb_save" mit "0" deaktiviert.
Durch "lb_save" werden die gesammelten Statistiken des LB's gespeichert. Damit er nach einem Neustart des Oscam Servers, direkt wieder darauf zugreifen kann.
Der LB überprüft die Antwortzeiten der Karten und mit lb_save werden diese Werte gespeichert. Nach einem Neustart von Oscam greift der LB nun auf diese
gespeicherten Statistiken zurück und muß nicht erst neue Statistiken erstellen. Mit "lb_save = 100" werden jede 100 ecm's diese Antwortzeiten gespeichert. 100 ist Minimum.
Man kann aber auch mehr setzen (200, 300 ....), gerade bei sehr leistungsschwachen Geräten auf denen Oscam läuft sollte man vielleicht nicht allzu häufig speichern.
Dann bietet sich ein Wert von z.b. 500 ecm's an.

lb_savepath = /tmp/.oscam/stat ist default. Hier kann man einstellen wohin der LB seine Statistiken speichert. Default Ordner ist eigentlich gut geeignet.
Wenn man aber seinen Server (also das Gerät selber: PC, Dream oder was auch immer) öfter mal rebootet, ist /tmp nicht geeignet, da alles was in /tmp liegt beim reboot gelöscht wird.
Ich selber nutze lb_mode = 1, damit hab ich die beste Erfahrung gemacht.
lb_mode = 2 würde ich nur Leuten empfehlen die keine externen Reader eingebunden haben, sondern nur Lokal Karten.
lb_mode = 3 ist zwar :auch empfehlenswert aber hier kann ich meine Lokal Karten nicht bevorzugen.
Es werden also selbst wenn man zwei gleiche Karten im Server hat sehr oft externe Karten benutzt, weil sie vielleicht gerade schneller sind.
Nur weil meine Lokal Karten Beispielsweise gerade Antwortzeiten um die 1500ms haben und eine externe Karte eines Sharepartners nur 1000ms,
möchte ich dennoch nicht das nun der LB die Karte des Sharepartners nutzt weil sie 500ms schneller ist.
Im großen und ganzen gesehen ist das für den wo den Sender gerade anfragt zwar schön das er immer Sau niedrige ecm Zeiten hat,
aber ich persönlich halte nichts davon wegen eine halben Sekunde Zeitersparnis die Karten meiner Sharepartner zu nutzen obwohl ich sie selber habe.
Aber das muß jeder für sich selber wissen. Mode 3 empfehle ich nur wenn z.b. alle Sharepartner Oscam nutzen und alle LB Mode 3 nutzen und alle Bescheid wissen.
Im LB Mode 2 sehe ich wie gesagt nur den Sinn drin wenn man keine externen Karten eingehängt hat da man hier meines Wissens auch keine Reader bevorzugen kann.

Mit lb_mode = 1 kann man bestimmte Reader bevorzugen (im normal Fall die Lokal Reader). Dies tut man in der oscam.server. Bei den Readern die bevorzugt werden sollen, kommt folgendes dazu:
lb_weight = X
Default steht "lb_weight" auf 100.
Je höher der Wert ist, um so mehr wird dieser Reader bevorzugt. Ich habe bei allen Lokal Readern "lb_weight = 800" und alle externen Reader haben "lb_weight = 50".
Ist vielleicht etwas übertrieben ein Wert von 800, aber bisher läuft alles so wie es soll, daher lass ich es so.
Es sollte aber genauso gehen wenn Lokal Reader 200 haben und externe den Default Wert von 100.

Sollte man noch Reader mit "fallback = 1" in der oscam.server haben kann man das mit aktiven LB auch entfernen, da dies nun ignoriert wird.
Der LB legt selber fest welcher Reader fallback wird. Die Fallback timeout in der oscam.conf unter [global] kann man allerdings weiterhin nutzen.
Der LB fällt dann auf seinen selbst definierten Fallbackreader zurück sobald die Fallbacktime überschritten wurde.
Das heißt, liegt die Antwortzeit der Karte über der angegeben Zeit z.b. 2,5 Sekunden wechselt der LB auf eine andere Karte.
fallbacktimeout = 2600
Ich habe einen sehr hohen Wert drin, so bleibt er noch bis 2,6 Sekunden auf einer Karte bevor er zu nächsten wechselt. Die meisten nutzen einen Wert zwischen 2000ms und 2500ms.

Also meine persönliche Empfehlung:
oscam.conf
lb_mode = 1
lb_save = 100
fallbacktimeout = 2600
Dazu noch oscam.server bei den Readern
lb_weight = 800 # für lokal Reader
lb_weight = 50 # für externe Reader

Experteinstellung

Folgender Text ist nur für Leute die sich auskennen. Es gibt noch die Möglichkeit den LB ein Feintuning zu unterziehen.
Da die Default Werte (sind automatisch gesetzt wenn LB aktiv ist und keine weiteren LB Einstellungen eingetragen werden) eigentlich schon perfekt sind, sollte man auf jeden Fall die Finger von lassen,
wenn man keinen wirklichen Grund hat diese Einstellungen zu ändern. Wer nicht weiß was er da tut sollte sowieso die Finger von lassen.

  • lb_nbest_readers = X damit kann man festlegen wieviel beste Reader der LB wählt. Default ist 1.
  • lb_nfb_readers = X wieviel Fallbackreader der LB wählt. Default 1.
  • lb_min_ecmcount = X nach wieviel ecm's sich der LB auf einen Reader festlegt. Default ist 5
  • lb_max_ecmcount = X nach wieviel ecm's der LB wieder überprüft, ob es einen besseren(schnelleren) Reader gibt. Default sind 500.
  • lb_reopen_seconds = X nach wieviel Sekunden, Reader die nicht geantwortet haben, erneut angefragt werden. Default ist 900.
  • lb_retrylimit = X (Wert ist in Millisekunden) hiermit kann man unterbinden das der LB nach einer Weile (lb_max_ecmcount) schaut ob es einen "besseren" Reader gibt.
Wenn der Reader auf dem sich der LB festgelegt hatte, weiterhin unter 800ms antwortet, sucht er gar nicht erst nach einem "schnelleren" Reader.
Nach default 500 ecm's würde der LB erst mal wieder an alle Reader mit der passenden CAID ecm's schicken, um zu sehen ob einer schneller ist.
So lang der alte Reader aber weitehrin unter 800ms antwortet, bleibt der LB bei diesem. Default ist 800.
Alle Einstellungen kommen auch in die oscam.conf [global] Section.
Fehlen diese Einstellungen in der Config und der LB ist aktiviert, werden die Default Werte benutzt.

Aber wie gesagt, am besten lasst ihr diese Optionen ganz weg, dann werden die Default Werte benutzt und alles läuft.
Es gibt nur Ausnahmen wie ECM Double Check wo man diese Optionen verstellt.



regards

Danke an xing0r



[ Zurück zu Hauptseite ]
[ Zurück zu OScam ]