Server entlasten



  • Hallo,

    das mit einem Masterserver habe ich mir auch schon überlegt (ist auch wohl am einfachsten). Das einzige was mich daran stört ist:
    Masterserver tot => Netzwerk (fast) tot.

    Robert



  • Die Server könnten so arbeiten, dass es einen Master Server gibt, der managed eben die Server. Wenn dieser ausfällt, dann übernimmt der nächste Server die Aufgaben des Master Servers und so weiter (bis eben kein Server mehr über ist).



  • Hallo,

    Die Server könnten so arbeiten, dass es einen Master Server gibt, der managed eben die Server. Wenn dieser ausfällt, dann übernimmt der nächste Server die Aufgaben des Master Servers und so weiter (bis eben kein Server mehr über ist).

    da gibt es nur 2 neue Probleme:

    1. Woher wissen die Server dann voneinander? Man müsste dann wohl vom Masterserver beim Herstellen der Verbindung die IPs der Server an alle Server schicken...

    2. Wie einigen sich die Server auf einen neuen Masterserver? Man könnte den ganz oben auf der Liste der IPs nehmen. Ob da jemand aber so glücklich ist, falls sein Server plötzlich Masterserver ist?

    Aber man muss es wahrscheinlich so machen. Denn wenn jetzt z.B. Server A mit Server B und Server B mit Server C verbunden ist und B ausfällt, dann wissen A und B nichts voneinander.

    Wenn allerdings der Masterserver zusammenbricht, dann bricht auch das Netzwerk kurzzeitig zusammen. Außerdem ist auch die Kapazität von so einem Server irgendwann erschöpft (man könnte mehrere Masterserver machen, die untereinander miteinander verbuden sind. Nur dürfte dabei kein "Kreis" entstehen 😉 und so beginnt alles wieder von vorne).

    Robert



  • Aber man muss es wahrscheinlich so machen. Denn wenn jetzt z.B. Server A mit Server B und Server B mit Server C verbunden ist und B ausfällt, dann wissen A und B nichts voneinander.

    ich meine natürlich A und C wissen nichts voneinander.

    und noch was: falls ein Server die IP Liste nicht vollständig bekommen hat, verlässt sich dieser auf einen Masterserver, der gar keiner ist.

    Robert



  • Vielleicht solltest du mal bei einem etablierten System "Anschauungsunterricht" nehmen. Auf Anhieb fällt mir dabei das SMB/CIFS-Protokoll der Windows-Dateifreigabe ein, dort wird u.a. auch die Rolle des Masterservers dynamisch vergeben. Informationen darüber solltest du der Dokumentation der OpenSource-Implementierung Samba entnehmen können.



  • ich würde das System so designen, dass sich der Master Server direkt um einen potentiellen Nachfolger kümmert.

    Meine Idee sieht so aus, dass der Master Server eben eine Liste an Slaves (die anderen Server an die die Aufgaben verteilt werden), besitzt. Die Slaves sortiert er nach Leistungsstärke, damit er weiss, wie viele Clients jeder Slave ungefähr verwalten kann. Diese Liste, ist aber genauso auf den Slaves vorhanden. Wenn der Master Server n Sekunden lang keine Daten mehr gesendet hat, dann schickt er eben eine Art "PING" an die Slaves, damit diese wissen, der Master existiert noch. Wenn nun nach n Sekunden kein "PING" gekommen ist, übernimmt der als Ersatz makierte Slave die Aufgaben des Masters (und schickt eine Warnmeldung an den Admin).

    Das zu implementieren sollte nicht schwer sein IMHO



  • Schau doch mal, wie das die IRC Server machen, ist ja ziemlich ähnlich...



  • ich würd mit supernodes arbeiten

    SuperNode1 - - - 10 Clients
    MASTER <  
              SuperNode2 - - - 10 Clients
    

    und so weiter.
    damit sparst du dir connections, das einzige problem bleibt weiterhin der master server. aber dafür könnte man sich leicht was basteln (dass einer automatisch das übernimmt)
    Warum das connections spart? von supernode > masterserver wird über eine verbindung der chat von 10 geführt. retour kommt vom master server jeweils die globale änderung. gepolt mit nem trigger für die rücksendung (beim master einfach nen trigger einbauen a lá "wenn was kommt, dann send ich zurück") dürfste das system funktionieren



  • Hallo,

    ich glaube, man muss sowieso alles über einen zentralen Masterserver machen. Zu dem verbinden sich alle Server und der leitet die Nachrichten an alle Server weiter. Falls der offline geht muss einer der Server neuer Masterserver werden und alle verbinden sich mit ihm.
    Das ist die einzige Schwachstelle. Es sollte natürlich so ziemlich der Leistungsfähigste vom Rest sein. Wie kann ich das herausbekommen? Dann schickt der Masterserver jedem Server einfach so drei "Ausweichips" und dann probieren die restlichen Server sich zu dem ganz oben in dieser topthree zu verbinden.

    Robert



  • Wie kann ich das herausbekommen?

    Du könntest ein kleines Benchmark Script schreiben, was das System bewertet mit einer Punkteskala, die Punkte werden dann ebenfalls abgeglichen.


Anmelden zum Antworten