Redundanz in LC [Theorie]

02/05/2014 18:53 EEOI#1
Mir kam eben spontan die Idee eines Redundanz systems in LC.

Ebene 1 sind zwei webserver, diese "unterhalten" sich und fragen ob das gegenüber noch da ist.

Ebene 2 besteht aus einen Main Server (GameServer1), dem Subsystem (GameServer1/2) und der Datenbank.

Wer sich mit Redundanz auskennt wird nun erkennen worauf ich hinaus will und muss eigentlich nicht weiterlesen.

Hauptaugenmerk ist auf die Datenbank gerichtet, diese wird von GS1 und GS1/2 angesprochen also beide greifen auf die gleiche zu.
Heisst es sind beide synchron.

Warum das ganze?
Angenommen GS1 fällt aus kann man per sl update auf GS1/2 umsteigen ohne verluste zu haben.

Das ganze ist natürlich Theorie und nie getestet worden(?).

PS:Spammer dürfen draußen bleiben.

[Only registered and activated users can see links. Click Here To Register...]
02/05/2014 19:03 Naguya#2
das würde sinn manchen. nur die umsetzung wird dementsprechend kompliziert.

das ganze würde mich aber allgemein interessieren.
02/05/2014 19:09 Senfo#3
Wäre sehr einfach durch ein Eternia ähnliches "Portchoose"verfahren zu machen, der Loginserver und die sl können mehrere IP binden, wenn GS1 ausfällt hast du in LC aber immer das problem, das der GS evt nötige Sql-Warteschleifen nach dem Fehler nicht mehr ausführt, sondern einfach down geht, Resultat, Server 1 hat danach immernoch den gleichen Fehler wie Server 2.

Falls du darauf hinauswolltest das beide absolut syncron zueinander laufen und das Spieler die auf GS 1 sind gleichzeitig auf GS2 sind, muss ich aber sagen, das das mit unbwarbeiteten Files nicht möglich ist
02/05/2014 21:19 EEOI#4
Quote:
Originally Posted by Senfo View Post
Falls du darauf hinauswolltest das beide absolut syncron zueinander laufen und das Spieler die auf GS 1 sind gleichzeitig auf GS2 sind, muss ich aber sagen, das das mit unbwarbeiteten Files nicht möglich ist
Daher Theorie:).
Würde mich halt interessieren wie das ganze gehen würde, jemand lust es zu testen?
02/05/2014 21:33 Senfo#5
die FIles speichern nicht alle Daten in der DB ab, sie haben alles local am laufen, das auf verschiedenen Server geschweigen denn auf dem gleichen zu synchronisieren ist einfach nicht möglich

Es wäre nur möglich wenn die Daten der Gameserver komplett in einen Prozess oder die Datenbank ausgelagert würden, das tun sie aber nicht. Selbst bei Subservern, greift kein GS auf einen anderen zu, der einzige der alle Connected ist sozusagen der Connector, der allerdings auch für diesenfall nur die Player zuweist, danach aber meistens nichts weiter zu tun hat. Das einzige was möglich ist um einen Server vor einem einzelserver ausfall zu sichern, ist alle Einzelserver auf einzelne Roots auszulagern, allerdings wäre das alles, bei einem einzelnem Connector nutzlos, dann müsste man verschiedene Cennectoren wählen, sozusagen die anderen Mainserver erzeugen (Karissa oder wie die alle heißen) und dann alle auf einer konkreten Datenbank laufen zu lassen, das ist aber auch shcon alles, was man mit diesen Files machen kann.
02/05/2014 22:23 EEOI#6
Richtig, hatte ich nicht bedacht.

Also müsste man wenn 1 down geht bzw. nicht erreichbar ist Server 1/2 erst anschalten dabei 1 absichtlich down lassen.
Heißt man würde es verlagern mit einen save dazwischen (wenn möglich).
02/05/2014 22:43 Naguya#7
theoretisch 2 synchrone datenbanken die gleichzeitig mit den selben daten beschrieben werden, aber beiden server horchen können. man kann viele theorien aufstellen aber am ende ist es nicht machbar zurzeit. ich find das recht schade aber evtl wirds iwann mal möglich.
02/05/2014 22:52 EEOI#8
Quote:
Originally Posted by [Dev]_xOutLawZ™<3 View Post
theoretisch 2 synchrone datenbanken die gleichzeitig mit den selben daten beschrieben werden, aber beiden server horchen können. man kann viele theorien aufstellen aber am ende ist es nicht machbar zurzeit. ich find das recht schade aber evtl wirds iwann mal möglich.
Wobei man die zwei dbs als eine nutzen kann, so hatte ich es ausgelegt.
Halt extern ein reiner DB server.
02/06/2014 10:02 €clips3#9
Quote:
Originally Posted by Trobhy View Post
Wobei man die zwei dbs als eine nutzen kann, so hatte ich es ausgelegt.
Halt extern ein reiner DB server.
Wie schon von einem meiner Vorgänger beschrieben.
Von Mysql her 0 Problem, jedoch passieren viel zu viele Vorgänge, welche nicht in der Datenbank abgelegt werden.
Falls jedoch an so etwas aktiv gearbeitet werden sollte, setzt mich doch bitte in Kenntniss und ich helfe :P

Mfg
02/06/2014 12:22 EEOI#10
Wie vorher beschrieben muss 1 down sein und somit die Daten im ram abgelegt sein um dann 1/2 zu starten.
Mit den Websites ist es auch möglich (Abfrage), man könnte sofern möglich das gleiche mit den Servern machen.
Wenn 1/2 von 1 ein ping von über 200 bekommt soll sich 1 abschalten und danach ein einschaltbefehl ab 1/2 senden.
02/07/2014 13:53 Chicken.ShooT#11
Das Problem wäre eher die Speed, wenn die DB extern liegt. Ich merk das schon Zuhause im heimischen Netzwerk. Ich hab Zuhause einen kleinen "Testserver" (Intel i3, 8GB RAM, 1Gbit Ethernet). Meine DB liegt allerdings auf dem NAS, damit ich auch dran arbeiten kann, wenn der Server aus ist. Alles hängt an einem 1Gbit-Switch und die Performance lässt dann tatsächlich zu wünschen übrig (Online kommt noch der Ping dazu). Klar 1Gbit ist nicht die Welt, aber Server mit mehr als 1Gbit Anbindung sind auch schon ziemlich teuer, vorallem wenn man bedenkt dass man davon mehrere braucht.

Bemerkbar macht sich das vorallem beim starten des Gameserver, also er lädt die _data-Tables sehr sehr langsam, als wenn sie jetzt Localhost liegen würden. Ingame merkt man es nur beim einloggen, dass es so gefühlte 2-3 Sek länger dauert. Das kann sich allerdings auch negativ stärker auswirken, umso mehr Spieler online sind, nehm ich an, wir sind max. zu 5t drauf. :D
02/07/2014 15:16 Senfo#12
mann müsste zu dem bei einem vollen Server praktisch sekündlich RAM-Datenänderungen in der Größenordnung von 500 MB übermitteln, das ist selbst bei über 1Gb Anbindungen ein Unding (selbst, wenn man nur die Änderungen an sich sendet)

Wenns möglich wäre hätte man es wahrscheinlich schon längst gemacht, schließlich wären damit Crashdupes unmöglich, wenn richtig bewerkstelligt