Digital Eliteboard - Das Digitale Technik Forum

Registriere dich noch heute kostenloses um Mitglied zu werden! Sobald du angemeldet bist, kannst du auf unserer Seite aktiv teilnehmen, indem du deine eigenen Themen und Beiträge erstellst und dich über deinen eigenen Posteingang mit anderen Mitgliedern unterhalten kannst! Zudem bekommst du Zutritt zu Bereiche, welche für Gäste verwehrt bleiben

Oscam Server mit Loadbalancer

giftstaub

Elite User
Registriert
28. Januar 2010
Beiträge
1.676
Reaktionspunkte
1.523
Punkte
113
Ort
Ruhrpott
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 genutzt 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's 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.

LB Grundeinstellung

Die LB Einstellungen kommen im Oscam, in die oscam.conf unter [global]:

PHP:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
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 5 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_mode = 10 logging only, der LB ist deaktiviert aber sammelt trotzdem Statistiken. Schaltet man irgend wann von z.b. lb_mode "10" auf "1", kennt der LB die aktuell schnellste Karte, da er ja im Hintergrund fleißig die Statistiken erstellt hat.
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.

Reader für den LB bevorzugen

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:

PHP:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
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 = 300" und alle externen Reader haben "lb_weight = 100". Mit lb_weight kann man quasi die ecm Zeiten der Reader verbessern oder verschlechtern (faken). Faken daher, da man dem LB bessere oder schlechtere Zeiten vorgaukelt. Man ändert also nicht wirklich die"original" ecm Zeiten der Reader. Je höher der "lb_weight" Wert ist, um so schneller werden die ecm Zeiten eines Readers. Um so niedriger der Wert, desto langsamer werden die ecm Zeiten eines Readers.

Wer schon ein bisschen Durchblick hat kann sich auch gerne eine Tabelle von Alno (stb) ansehen -->
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
<--. Damit kann man ganz genau einstellen um wieviel Millisekunden die bevorzugten Reader verbessert werden sollen. Die rote Spalte mit "100" ist default (0 Punkt) und spiegelt die "original" Zeiten wieder. Die Zeiten runterwärts sind die tatsächlichen Zeiten des Readers und rüberwärts sind die Werte für lb_value (die gefakten Zeiten). An dem Punkt wo sich die Spalten kreuzen, stehen dann die gefakten Zeiten, nach der Änderung mit lb_weight (abgesehen von der roten Spalte da das die echten Zeiten sind).

Um die Tabelle besser zu verdeutlichen, hatte Alno (stb) dazu ein gutes Beispiel genannt das ich hier 1 zu 1 Zitiere:

Du musst dich Anmelden oder Registrieren um den Inhalt der Angebote zu sehen!
LB Fallback Einstellung

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.

PHP:
Du musst dich Anmelden oder Registrieren um den Inhalt der Codes zu sehen!
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.

Experteneinstellung

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 wie viel beste Reader der LB wählt. Default ist 1.
  • lb_nbest_percaid = caid1:count1,caid2:count2,1702:2 Das gleiche wie "lb_nbest_readers", nur hier kann man es für einzelne CAIDs gesondert einstellen. "lb_nbest_readers" bleibt als Globaleinstellung und "lb_nbest_percaid" dient dann zum gezielten einstellen bestimmter CAID'.
  • lb_nfb_readers = X Wie viel Fallbackreader der LB wählt. Default 1.
  • lb_min_ecmcount = X Nach wie viel ecm's sich der LB auf einen Reader festlegt. Default ist 5
  • lb_max_ecmcount = X Nach wie viel ecm's der LB wieder überprüft ob es einen besseren (schnelleren) Reader gibt. Default sind 500.
  • lb_reopen_seconds = X Nach wie viel 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.
  • lb_retrylimits = CAID:time,1702:900 Das selbe wie bei retrylimit. Nur hier kann man noch Feintuning machen und für einzelne CAIDs eigene Zeiten angeben. Man kann also beide Optionen setzen, "retrylimit" allgemein und "retrylimits" für bestimmte CAIDs (spezifisch).
  • lb_stat_cleanup = hour Nach wieviel Stunden die Statistiken des LBs gelöscht werden. Default = 336.
  • lb_use_locking = 0|1 Beim aktivieren werden die ecm Anfragen synchronisiert. Die Anfragen werden nicht mehr gleichzeitig verarbeitetet. Das soll vor allem langsamen System helfen mit hoher Last.Denn die ECM requests kommen derart schnell und gleichzeitig rein, dass der Eintrag noch gar nicht im ECM cache ist, wenn der nächste schon bearbeitet wird. Somit verhindert das aktivieren dieser Option, das ECM's die im Cache sind, mehrfach zum Reader geschickt werden. Es kann aber unter Umständen, da Multithreading verhindert wird, zu höheren Antwortzeiten kommen. Default ist 0
  • lb_noproviderforcaid = CAID1,CAID2... Der LB legt automatisch für jede CAID und Provider Kombination die angefragt wird Statistiken an. Dies kann man hiermit für bestimmte CAIDs unterbinden. Der Sinn ist folgender: Bei HD+ 1830 zum Beispiel kamen von Camd3 (machen aber auch andere Emus) mal Anfragen über Provider "000000", mal über "003411" oder "008011". Gibt man nun bei dieser Funktion CAID 1830 an werden alle Anfragen über Provider "000000" abgewickelt und es gibt so auch nur Statistiken für 1830:000000:xxxx. So kann man seine Statistiken kleiner halten. Default ist hier nichts gesetzt.
  • lb_reopen_mode = 0|1 Hier legt man fest wie schnell vom LB geblockte Reader wieder freigegeben werden. Mit "0" werden die Reader nach der angegebenen Zeit (lb_reopen_seconds) wieder freigegeben. Stellt man auf "1" werden die geblockten Reader schneller wieder reaktiviert. Default = 0.
  • lb_max_readers = limit Wenn noch keine Statistiken vorhanden sind oder "lb_max_ecmcount" erreicht wurde, prüft der LB die verfügbaren Reader ob sie einen Sender öffnen können und wie schnell sie das können (ecm time). Dabei werden entweder an alle Reader mit der passenden CAID Anfragen gesendet, oder man setzt hier ein Limit wie viel Reader der LB höchstens "nerven" darf. Default = 0 (unbegrenzt).
  • lb_auto_betatunnel = 0|1 Aktiviert man diesen Parameter muß man sich nicht mehr um die Betatunnel Einträge bei den Usern kümmern. Der LB schickt bei den CAIDs 1834,1801 und 1835 auch eine Anfrage an 1722 beziehungsweise bei CAID 1833 an 1702. Die CAID wo dann zuerst Antwortet wird benutzt. Es werden also nicht nonstop doppelte Anfragen rausgeschickt. Man kann aber auch weiterhin einen eigenen Betatunnel setzen, dieser wird dann bevorzugt. Default ist diese Funktion aktiviert.
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.

Ich will und möchte mich nicht mit andere Federn schmücken, da ich in der Meinung bin das dieses HowTo hier im DEB Super rein passt habe ich das HowTo mal für euch gepostet.

Quelle: Zebra Wiki

gruß
giffti
 
Zuletzt bearbeitet:
AW: [HowTo] Oscam Server mit Loadbalancer

Nachtrag der lb Einstellungen!

lb_mode

Du musst dich Anmelden oder Registrieren um diesen link zusehen!
Parameter ist optional


Du musst dich Anmelden oder Registrieren um diesen link zusehen!
Hinweis: Wenn hier loadbalancing aktiviert wird, dann sind die in oscam.server bei services stehenden Besonderheiten zu beachten.

oscam.server# services

Du musst dich Anmelden oder Registrieren um diesen link zusehen!
Parameter ist optional


Du musst dich Anmelden oder Registrieren um diesen link zusehen!
Hinweis: Wenn Loadbalancing aktiviert ist, sind folgende Besonderheiten zu berücksichtigen:

  • Services sind für den Loadbalancer eine Whitelist. Das bedeutet, dass alles, was hier eingetragen wird, vom Loadbalancing als Service behandelt wird, den die Karte kann! Wenn dann z.B. ein "not found" kommt, wird das ignoriert und die Karte wird weiter angefragt, mit dem damit verbundenen traffic!
  • Daraus ergibt sich, dass der Eintrag von Services bei lokalen Karten und Proxies, die man genau kennt, kein Problem darstellt.
  • Anders verhält es sich bei Proxies (z.B. CCcam), deren Services man nicht kennt. Hier ist davon abzuraten, Services einzutragen. In einem solchen Fall sollten vielmehr die Services bestimmt werden, die nicht zu berücksichtigen sind (Eintrag mit (!)), oder besser eine Filterung über den Parameter caid erfolgen.
Du musst dich Anmelden oder Registrieren um diesen link zusehen!
Achtung: Die Anzahl der services, die je reader berücksichtigt werden, ist auf 64 begrenzt, also 64 mal [[service-name][CAID][provid][srvid]]!
Welche Services kann der Reader. Hierzu muss eine oscam.services vorhanden sein. Die Logik ist hier folgendermaßen (in der angegebenen Reihenfolge):

  • Wenn das Feld leer ist (oder ungültig) wird die Anfrage erlaubt.
  • Wenn ein negativer Service (also solche mit "!") zutreffend ist, so wird die Anfrage abgewiesen.
  • Wenn ein positiver Service zutreffend ist oder es gar keinen positiven Service gibt, so wird die Anfrage erlaubt.
  • Wenn keiner der vorigen Punkte zutrifft, so wird die Anfrage abgewiesen.
Dies bedeutet, dass negative Services nur in Einzelfällen nötig sind. Nämlich genau dann, wenn man positive Services hat, davon aber wieder einige ausnehmen will. Dies wird nicht empfohlen, da es hier schnell zu Fehlkonfigurationen kommt. Stattdessen sollte ein zusätzlicher Service angelegt werden, der alle entsprechenden Sender enthält.

Du musst dich Anmelden oder Registrieren um den Inhalt der Angebote zu sehen!
Beispiel:

Du musst dich Anmelden oder Registrieren um den Inhalt der Angebote zu sehen!
 
AW: [HowTo] Oscam Server mit Loadbalancer

Nachtrag der lb für die Proxies Einstellungen!

Es gibt 2 Arten für die Einstellungen damit die Proxie Reader Funktionieren!

1. Möglichkeit mit lb mode

Man Stellt folgende Parameter ein damit die Lokalen sowie die Proxie Reader Abgefragt werden:

oscam.config

preferlocalcards = 0
lb_mode = 1

Damit unsere Lokalen Karten bevorzugt werden und nicht im wechsel Lokale und Proxie Reader Abgefragt werden benötigen wir folgenden Eintrag in der oscam.server.

oscam.server

Lokale Reader lb_weight = 200 <--- Damit werden unsere Lokalen Bevorzugt!
Proxie Reader lb_weight = 100

2. Möglichkeit ohne lb mode

Man Stellt folgende Parameter ein damit die Lokalen sowie die Proxie Reader Abgefragt werden:

oscam.config

fallbacktimeout = 1500
preferlocalcards = 0
lb_mode = 0

Du musst dich Anmelden oder Registrieren um den Inhalt der Angebote zu sehen!
Damit unsere Lokalen Karten bevorzugt werden und nicht im wechsel Lokale und Proxie Reader Abgefragt werden benötigen wir folgenden Eintrag in der oscam.server.

oscam.server

fallback = 1
Lokale Reader lb_weight = 200 <--- Damit werden unsere Lokalen Bevorzugt!
Proxie Reader lb_weight = 100

Du musst dich Anmelden oder Registrieren um den Inhalt der Angebote zu sehen!
Noch ein kleiner Tipp am Rande!


Du musst dich Anmelden oder Registrieren um den Inhalt der Angebote zu sehen!
 
Zuletzt bearbeitet:
Zurück
Oben