Servercluster erzeugen
lima-city → Forum → Programmiersprachen → Sonstige Programmiersprachen
anforderung
anfrage
aufgabe
beispiel
cluster
datenbank
ergebnis
erinnern
frage
lastverteilung
laufen
mache
modul
netzteil
redundanz
sache
schauen
server
unterscheiden
verteilung
-
Hey
Ich habe mal eine Frage, unzwar, wie man Servercluster aufbaut. Sowohl Hardwareseitig als auch Softwareseitig.
Ich habe großes Interesse in Serverentwicklung, aber kann hierfür keine gute Quelle finden, und logisch gedacht gibt es mehrere denkbre Möglichkeiten, aber was wird in der Realität gemacht?
Wenn es wichtig ist, mir persönlich gehts um Redundanz und um Lastverteilung, sodass man mit zum Beispiel einem größeren System, welches mehr Leistung als nur einen Server braucht, auch sinnvoll und gut zum Laufen bringt.
Liebe Grüße -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Stichwörter sind nginx, mysql ndb und glusterfs, damit kann man gut einen großen Webcluster aufbauen.
Man kann auch VMs clustern, geht mit OpenVZ und Glusterfs ebenfalls recht gut. -
Klingt schon gut, werd ich mir anschauen.
Jetzt stellt sich mir aber noch die Frage, wie ich es Programmiertechnisch mache. Wenn ich ein Programm schreibe, wie mache ich es am geschicktesten damit eine saubere Clusterung zu machen. Nutzt man hierfür einfach Socketverbindungen untereinander, sodass die Server miteinander reden, und so quasi ein eigenes Bussystem gebaut wird? Nutzt man dafür vllt ein Master Slave verfahren? Doch wie verteile ich dann zum Beispiel Connections, Sockets? Oder geb ich die Requests weiter, lass sie von anderen Computern berechnen, und nutze einen Server nur als Proxy sozu sagen?
Hier wären ein paar Strategien noch interessant :)
Liebe Grüße -
Du bist doch der Programmierer, das kannst du demzufolge komplett selbst entscheiden. Allerdings würde ich versuchen einen Big SMP Kernel zu verwenden und dem Kernel die Verteilung der Aufgaben zu überlassen und selbst nur Threads erzeugen.
-
Ja, natürlich kann ich das alles selbst machen, ich habe auch Ideen, wie man soetwas gestalten könnte, jenachdem welche Resoucen geshared werden müssten, usw. Aber es wäre halt schön so eine Art "Standard" zu kennen, oder sich daran zu orientieren, was nach Erfahrung bereits als gut befunden wurde. Und für sowas habe ich leider keinen ausreichenden Input gefunden.
SMP Kernel, bzw Big SMP Kernel sind neu für mich, aber aus den ersten Dingen die ich lese ist es eine super Sache, genau das, was ich meine. Nur stellt sich mir dazu die Frage: Alles auf ein Mainboard geht nicht, wie verschalte ich die Mainboards/Rechner/Server? Ich google noch ein wenig, mal schauen :)
Danke schonmal!
Liebe Grüße -
Im einfachsten Falle mit einem drögen Netzwerkkabel.
Für Hochleistungsrechner gibt es sogenannte Computing Module, die sehen aus wie eine Grafikkarte beinhalten aber stattdessen spezialisierte Recheneinheiten, ansonsten musst du mal den burgi fragen der hatte mal einen Link wo sich jemandf einen Cluster selbst gebaut hat, da kannst du mal schauen wie der das gemacht hat, leider ist mir der Link entfallen...
Wenn du Ihn findest kannst ihn ja nochmal hier posten, das war ne spannende (wenn auch verrückte) Sache.
Edit by burgi: ich kann mich an das Gespräch erinnern, ich hab auch noch die Bildchen dazu vor meinem Auge, aber ich weiß auch nicht mehr, wo dieses verrückte Teil zu finden ist
Beitrag zuletzt geändert: 11.8.2012 14:04:33 von burgi -
Hauptsächlich gilt es 2 Ansätze bei Cluster zu unterscheiden: Lastverteilung und Grid (oder wie man die nennen möchte)
Unterschiede/Hauptmerkmale(nicht immer so eindeutig in der Praxis):
Lastverteilung:
geringe Latenz (User ruft Webseite auf und möchte sofort Ergebnis sehen)
jeder Server arbeitet einen anderen Request ab
Grid:
möglichst große Rechenleistung
alle Server arbeiten an der selben Aufgabe, die auch Minuten/Stunden/Tage dauern kann bis ein Ergebnis sichtbar ist
das war nur zur Erklärung, da die meisten vorigen Antworten Richtung Grid gingen
Beispielansätze zur Lastverteilung bei Webservern:
ein oder mehrere Loadbalanceproxyserver: alle Userrequests laufen über diese(n) und dieser verteilt die Anfragen an die anderen Server
ein bis mehrere Webserver: beantwortet Userrequests, erzeugt HTML etc., speichert aber keine Sessions oÄ., da Anfragen vom selben User an einen anderen Server kommen können
ein bis mehrere Datenbankserver: gespiegelt, geclustert, horizonal/vertikal partitioniert je nach Anforderung/Möglichkeiten der Datenbank
State-Server: speichert die Sessions etc. der Webserver
je nach Anforderung können die Sateserver auch in der Datenbank sein oder bei nur einem Webserver oder Loadbalancer mit Usererkennung auch im Webserver
Bei Nutzung von mehreren Servern des jeweiligen Typs kann man bei richtiger Konfiguration auch Redundanz schaffen (zusätzlich zu Sachen wie mehrere Netzteile, RAID, ...). -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage