PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Ein Ordner, viele Festplatten -> Cluster



BlackJack01090
03.11.08, 16:08
Hallo zusammen,

Festplatten in einem PC per RAID zusammen zu fassen ist ja schnell gelöst. Nur hätte ich gerne, dass man mehrere Server hat, die in einem Cluster sind. Jeder Server hat mehrere Festplatten die schon mit einem Hardwareraid geregelt sind. Sagen wir jeder Server hat 500 GB die schon gespiegelt sind. Nun sollen die Server zusammengeschlossen werden per Cluster. Ich habe mir schon ein par Sachen angeguckt aber ich weis noch nicht ganz wie und ob meine Idee möglich ist. VIelleicht kann mir jemand ein Programm oder soetwas zum Lesen empfehlen. Funktionieren soll das so. Eein Server nimmt Daten entgegen speichert die z.b. in /public. Dieser Ordner soll aber aus allen Servern im Cluster bestehen. also 10 Server 10x 500GB = 5000GB soll der Ordner fassen. Ist dies eigentlich Möglich? Weis jemand eine gute und stabile Umsetzung?

Mit freundlichem Gruß

BJ

cane
03.11.08, 17:23
Für soetwas gibt es Cluster Dateisysteme wie GFS oder OCFS2.

mfg
cane

bla!zilla
03.11.08, 17:51
Korrekt, ein Clusterfilesystem ist die Lösung. Aber: Du brauchst dafür ein zentrales Speichersystem. Eine Art virtuelles Clusterfilesystem ist mir derzeit nicht bekannt. Selbst DFS (unter Windows) kann das nicht in der Weise, die du gerne hättest.

cane
03.11.08, 18:59
ielleicht beschreibst Du mal den anwendungsfall ohne auf technische sachen einzugehen, dann haben wir eventuell andere Ideen :)

mfg
cane

BlackJack01090
03.11.08, 20:06
Mein Projekt soll ein Mediahosting sein. Bilder sowie Videos in eine kostenlosen Platform. Momentan läuft das Projekt auf einem Server mit ca. 10TB aber es werden täglich mehr Dateien und bald ist dieser Speicherplatz aufgebraucht. Dieses Projekt ist kostenfrei und werbefrei also hat keinen komerziellen Hintergrund. Ich hatte mir bereits eine Auslagerung auf andere Server mit FTP überlegt aber für dieses müsste ich ja noch einiges programmieren z.B. Welcher Server hat die kleinste Auslastung, auf wlechen Server liegen welche Daten usw. Ich hatte an ein Cluster gedacht, welches automatisch die Daten verteilt und das Frontend nuroch die Daten in einem bestimmten Ordner speichern muss.

Mit freundlichem Gruß

BJ

Ergänzung:

Ich habe mich nun wenig mit GFS befasst und etwas über AOE gelesen. Wäre eine Realisierung mit diesen beiden Komponenten möglich?

BlackJack01090
06.11.08, 08:06
Hat vielleicht jemadn eine Idee wie das ganze z.B bei youtube, google, imageshack gehandhabt wird? Die Verteilung sollte nicht das Problem sein, ist ja auch mit FTP oder sonstwas realisierbar. Nur dachte ich eigentlich an einen Zentralen Punkt der alles Verteilt? Vielleicht ist es ja möglich eine Netzwerkfestplatte einzurichten, auf welche das Frontend schreibt und der Server, der diese Netzwerkfestplatte bereitstellt, die Daten an andere Server verteilt und dann verknüpft?

Habe mich mit Cluster noch nicht so stark beschäftigt, vielleicht könnt ihr mir ein Boch, eBook oder Internetseite empfehlen?

Mit freundlichen Grüßen

BJ

marce
06.11.08, 08:23
die meisten großen machen das über DNS-Loadbalancing. Die Daten werden nicht zentral, sondern pro Server gehalten und auch nicht auf jedem Server sind alle Daten vorhanden.

Es gibt also z.B. eine Zentrale Upload-Stelle, die das Formular bereitstellt, dort wird dann auf die div. Einzelserver gebalanced (post-Request auf web01, web02, ...) und die URL ist dann entsprechend gestaltet.

BlackJack01090
06.11.08, 08:32
Vielen Dank für den Hinweis,

kannst du mir dazu viellecht Fachliteratur empfehlen oder ist dieses Thema nicht so Umfangreich? Ich werde selbst heute mal gucken was ich dazu an Literatur finde.

Vielen Dank

Mit freundlichem Gruß

BJ

Dellerium
06.11.08, 08:36
Hmm...

Würde nicht NFS reichen? Einfach eine Reihe von Backend Servern nehmen, die ihre Filesystem per NFS exportieren und diese dann im Frontend mounten? (Oder macht ihr ne 100MBit Leitung locker dicht?)
Wenn die Daten extrem wichtig sind (Ausfall eines Backend Server nicht vertretbar), könnte man noch eine Spiegelung der Daten auf den Backend Server untereinander implementieren (z.B. DRBD).

Das ist jedenfalls einfacher umzusetzen als ein Cluster auf GFS Basis! Das Teil will ja auch administriert werden. Und für GFS bräuchtest du dann wohl auch noch ein Shared Storage - und das wird dann teuer...

Falls du dich für Cluster interessiest, kommt es drauf an, für welche Cluster ;) Wenn du dich z.B. für Cluster auf Linux-HA Basis interessierst - da gibt es ein schönes Buch on O'Reilly zu Linux-HA Version 2. Redhat/CentOS bietet auf seinen Webseiten ebenfalls recht ausführliche Doku zu seinen Clusterumgebungen.
Alle anderen Lösungen die mir sonst geläufig sind, kosten teilweise richtig Geld und fallen damit für dich vermutlich eh weg ;)

Aber ich würde dir erstmal raten: KIS (Keep it Simple). Ein falsch konfigurierter Cluster hat eine sehr viel geringere Verfügbarkeit als ein einzelner Server...

marce
06.11.08, 08:39
Hm, konkrete Fachliteratur dazu wüßte ich keine - das Thema wird aber in den meisten Artikeln zu Loadbalancing zumindest angerissen. Sonderlich kompliziert ist DNS-Loadbalancing eigentlich auch nicht - man braucht nur viele IPs bzw. Subdomains (die am besten noch generisch sind).

Vorteil von DNS-LB ist auch noch, daß Du nicht auf ein einzelnes RZ und dessen Anbindung angewiesen bist - Du kannst Deine Server wo immer Du willst aufstellen.


Würde nicht NFS reichen? Einfach eine Reihe von Backend Servern nehmen, die ihre Filesystem per NFS exportieren und diese dann im Frontend mounten? (Oder macht ihr ne 100MBit Leitung locker dicht?)
NFS über's Internet finde ich persönlich keine gute Idee.

außerdem ist da wirklich, gerade bei höheren Zugriffen evtl. ein Durchsatzproblem zu befürchten.


Aber ich würde dir erstmal raten: KIS (Keep it Simple). Ein falsch konfigurierter Cluster hat eine sehr viel geringere Verfügbarkeit als ein einzelner Server...
ACK.

Dellerium
06.11.08, 10:33
NFS über's Internet finde ich persönlich keine gute Idee.

außerdem ist da wirklich, gerade bei höheren Zugriffen evtl. ein Durchsatzproblem zu befürchten.


Übers Internet würde ich das ebenfalls nicht fahren. Ich bin jetzt mal davon ausgegangen, das man - wenn man Datenbestände im zwei oder dreistelligen TB Bereich anvisiert - gleich nen ganzes Rack im RZ anmietet und die NFS Kisten über einen eigenen Switch oder VLANs vom Rest der der Server abtrennt. Die Backend Kisten müssen ja nicht direkt erreichbar sein.

Wenn die Jungs mit sovielen Zugriffen zu kämpfen haben, das 1 GBit als Verbindung zu den Backend Servern nicht mehr ausreicht(bzw. zu wenig Spindeln zu Verfügung stehen um die Zugriffe noch bedienen zu können - vermutlich werden ide Zugriffe ja über interne Platten bedient), dann müssen sie ohnehin grundsätzlich ihr Konzept überdenken...

BlackJack01090
06.11.08, 12:53
Wie schon erwähnt ist dieses Projekt kostenfrei und wird von uns getragen. Servertechnisch ist alles realisierbar. Die Ausstattung der Server ist auf dem höchsten Niveau. Es steht ein eigenes Rechenzentrum zur Verfügung. Somit ist die Anbindung unterhalb der Server leicht realisierbar und schadet nicht der Anbindung ans öffentliche Netzwerk. Untereinander sind die Server über 1GBit/s LWL verbunden. Die Kapazität beträgt pro Server 10TB, bereits gespiegelt. Das Problem ist nur, diese Kapazitäten zu vernetzen. Im Frontend steht den Nutzern die Möglickeit bereit, ihre Medien hochzuladen. Die eigentlichen Daten sollen von den Servern untereinander verteilt werden. Nur der Server, der das Frontend bereit stellt, soll angesprochen werden und reagieren. Mit reagieren meine ich, dass über die selbe Domain alle Daten angesprochen werden können. DNS-Loadbalancing klang schon nach einer guten Lösung, vielen Dank marce. Trotzdem wäre mir ja soetwas wie ein gemeinsamer Ordner der aus vielen Festplatten besteht lieber.

Vielen Dank für die ganzen Ratschläge bisjetzt!

Mit freundlichem Gruß

BJ

marce
06.11.08, 13:35
Würde ich wie gesagt über DNS-Loadbalancing machen. Dann hat man auch keinen Flaschenhals oder SPOF.

Alternativ per NFS - aber auch da braucht ihr einen interene Logik, die über z.b. die URL erkennt, auf welchem Server das File liegt.

Oder ihr schnappt euch ein Päärchen F5 oder andere Loadbalancer auf L7-Ebene und lasst das den erledigen.


edit:

Wie schon erwähnt ist dieses Projekt kostenfrei und wird von uns getragen. Servertechnisch ist alles realisierbar.
Dann stellt euch ein ordentliches shared-Storage auf SAN-Basis hin.

Welchen Job hast Du denn bei der Geschichte? Eigentlich sollte man sich solche Gedanken vorher machen - oder sich damit auskennen :-)

BlackJack01090
06.11.08, 13:51
Gut ich werde das ersteinmal mit DNS Load Balancing testen. Somit muss jeder Server einen Webserver zu verfügung stellen und die Uploadskripte müssten dann via FTP laufen oder sehe ich das falsch? Da die Server ja untereinander getrennt sind. Oder wäre es eine produktive Möglichkeit auf jeden Server einen Webserver laufen zu lassen, der nur die Medien bereitstellt, und über eine seperate nur interne Netzwerkkarte die Festplatten freizugeben und das Frontend die Daten über diese Freigabe aufspielt. Dazu kommt noch eine Abfrage, die genau die Festplatten sucht, die am wenigsten belastet sind (in Zugriff und Kapazität). Zugriff und Kapazität wird statistisch erfasst und priorisiert. Die Festplatte mit der niedrigsten Nutzung bekommt somit Daten aufgespielt.

Hierbei würde ich aber das Problem sehen, dass diese erfassung der Informationen hohe AUsmaße annehmen wird. Immerhin steigt pro Server die Zahl der Festplatten um 10 Stück. Da ich von einer hohen Nutzung dieses Projektes ausgehe werden die Zahlen enorm anwachsen und jede Sekunde mehrmals abgefragt (bei einem Upload).

Mit freundlichem Gruß

BJ



Welchen Job hast Du denn bei der Geschichte? Eigentlich sollte man sich solche Gedanken vorher machen - oder sich damit auskennen :-)


Die Sache ist folgende. Das ist nur so ein Projekt ohne Hintergrund. Für die Allgemeinheit. Wollte gerne etwas selbst machen. Bisjetzt läuft alles gut, hatte nurnicht gedacht, dass ich mehrere Server benutzen müsste. Dieses Projekt war an eine bestimmte Zielgruppe orientiert, aber irgendwie scheinen auch andere dieses zu mögen ;) Es war von vornerein nur 1 Server geplant.

marce
06.11.08, 13:58
Gut ich werde das ersteinmal mit DNS Load Balancing testen. Somit muss jeder Server einen Webserver zu verfügung stellen
ja


und die Uploadskripte müssten dann via FTP laufen
kommt drauf an wie das Frontend gestrickt ist. Von Zentraler Maschine, die dann per nfs, ftp, scp, DAVfs, ... verteilt bis zu auf jedem Server ein Uploadscript ist alles drin.


oder sehe ich das falsch? Da die Server ja untereinander getrennt sind. Oder wäre es eine produktive Möglichkeit auf jeden Server einen Webserver laufen zu lassen, der nur die Medien bereitstellt, und über eine seperate nur interne Netzwerkkarte die Festplatten freizugeben und das Frontend die Daten über diese Freigabe aufspielt.
auch das ginge.


Dazu kommt noch eine Abfrage, die genau die Festplatten sucht, die am wenigsten belastet sind (in Zugriff und Kapazität). Zugriff und Kapazität wird statistisch erfasst und priorisiert. Die Festplatte mit der niedrigsten Nutzung bekommt somit Daten aufgespielt.

Hierbei würde ich aber das Problem sehen, dass diese erfassung der Informationen hohe AUsmaße annehmen wird.
wieso dieses denn?


Immerhin steigt pro Server die Zahl der Festplatten um 10 Stück. Da ich von einer hohen Nutzung dieses Projektes ausgehe werden die Zahlen enorm anwachsen und jede Sekunde mehrmals abgefragt (bei einem Upload).

Ehrlich gesagt klingt das für mich immer mehr nach einem Gedankenexperiment, wo noch kein Stück davon realisiert ist und auch nie wird.

Wer sowas anbieten will - kennt sich damit aus oder hat die entsprechenden Informationen schon gesammelt. Vor allem, wenn man eigenes RZ, Hi-End-Server hat - und alles für Umme und wird von "euch" gestellt? Ja klar.

Ehrlich gesagt: Ich glaube eher, daß Du hier als BWLer oder FiSi sitzt, der eine Projektarbeit durchziehen muß. Theoretisch.

Überzeuge mich bitte mal vom Gegenteil.

BlackJack01090
06.11.08, 14:07
Hallo,

ja eigenes Rechenzentrum steht zu verfügung, heißt nicht, dass es mein ist. Momentan läuft dieses Projekt in der BETA. Realisiert in der Türkei. Auf einem Server. Nur war der Datenansturm etwas anders gedacht, als er tatsächlich ist. Aus diesem Grund wurden das Projekt zurückgestuft und ich sowie andere überlegen an eine Lösung. Da ich von Cluster bzw. die Möglichkeit die Daten auf mehrere Server zu verteilen außer FTP keine andere Idee hatte, habe ich mich an dieses Forum gewand. Ein Hochleistungsserver ist nicht teuer, wenn man sich die Hardware selber über Firmen kauft. Immerhin zahlt man bei Server von z.B. Dell den Support und die Marke mit. Stehen tut das Projekt schon, lehnt sich an an einem anderen Projekt. Die User wurden gebeten, das jetzige Projekt nicht zu nutzen bis uns etwas neues einfällt. Da mein Job nicht daraus besteht den ganzen Tag mit solchen Problemen zu arbeiten und ich das frezeitmäßig gestallte, ist es doch wohl berechtigt, andere Leute, die sich damit auskennen, um Hilfe zu bitten oder sehe ich das falsch?

Mit freundlichem Gruß

BJ

cane
06.11.08, 16:14
Die meisten Kosten eines solchen Projekts machen IMO Traffic und vor allem Anwaltskosten aus.

Überleg dir gut ob Du rechtlich abgesichert bist!

mfg
cane

marce
06.11.08, 16:16
wird schon einen Grund geben, warum die Server in der Türkei stehen :-)

@TE: Danke für die Erklärung - das wirkte auf halt einfach nicht stimmig.

BlackJack01090
06.11.08, 16:36
Vielen Dank für die ganzen Tipps.

Das Projekt dient eigentlich anderen Projekten zur Unterstützung und Auslastung. Die User dieser Projekte laden eh nur Fotos / Filme von Events (die die anderen Projekte betreffen) hoch deswegen mache ich mir wegen den Anwalt eh keine Sorgen. Außerdem ist das Projekt auf Türkisch, für Türken mit Servern in Deutschland.

Mit freundlichem Gruß

BJ