PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Cluster mit Loadbalancing und Verteiltem FS



OliverH
28.07.07, 21:59
Hallo
Ich möchte einen Linux-Cluster realisieren, der zum einen den Festplattenplatz alles Nodes benutzt und zum anderen Loadbalancing betreibt. Der gesamte Cluster soll also nach außen über einen "Zentralknoten" nach außen mit einer IP auftrten, dieser "Zentralknoten" hat wiederrum Netzwerkverbindungen zu den andere Knoten, deren Speicherplatz und CPU-Resourcen benutzt werden sollen.
Hat da jemand nen Ansatz wie ich sowas realisieren kann, oder kann mir entsprechende Literatur empfehlen?

Oli

marce
29.07.07, 08:58
"Amtliche" Lösung: Google mal nach "verteilte Dateisystem[e]", z.B. AFS
"Bastellösung": NFS-Server, der von den CLients NFS-Shares einbindet. Performance geht gegen 0 aber es tut...

Performance-Cluster: z.B. Beowulf. Geht aber nicht mit jeder Applikation...

bla!zilla
29.07.07, 09:17
Hallo
Ich möchte einen Linux-Cluster realisieren, der zum einen den Festplattenplatz alles Nodes benutzt und zum anderen Loadbalancing betreibt.

Dazu brauchst du ein Shared-Filesystem (GFS, GPFS, OFSC2 o.ä.), ein zentrales Storage und etwas Equipment.



Der gesamte Cluster soll also nach außen über einen "Zentralknoten" nach außen mit einer IP auftrten, dieser "Zentralknoten" hat wiederrum Netzwerkverbindungen zu den andere Knoten, deren Speicherplatz und CPU-Resourcen benutzt werden sollen.

Um was zu machen? Soll das in Richtung HPC gehen oder was willst du darauf betreiben? Eine Anwendung muss für sowas ausgelegt sein.

marce
29.07.07, 13:13
Zentrales Storage nicht unbedingt...

Die Frage ist nur: je nach Anwendungsfall - was will er konkret erreichen...

Los_Andros
29.07.07, 13:51
Red Hat Cluster (dafür kannst Du Centos nehmen) und GFS als Filesystem. Als Cluster Service bietest Du eine IP Adresse an, die je nachdem auf einem der aktiven Nodes läuft.

verteiltes Rechnen geht damit nur, wenn die Anwendung clusterfähig ist.

OliverH
29.07.07, 16:33
Hallo
konkret möchte ich eine _gut_ skalierende Webhostingumgebung aufbauen.
Dazu sollen die CPU's der einzelnen Nodes dem Hauptknoten zu verfügung stehen (quasi SMP mit mehreren rechnern) und der Plattenplatz soll zu einem Netzwerkweiten RAID werden.

Dazu habe ich mir bereits folgendes überlegt.
Jeder Node fährt ein RAID-5 oder 10, darauf laufen 2 VM's, 1x für's Storage und 1x als CPU-Node. Der Hauptrechner bildet ein RAID-5, 10 oder 50 (oder wie groß auch immer) über Network Block Devices. Der Hauptknoten wird mittels Heartbeat und DRBD ausfallsicher gemacht.

Ich habe gestern Abend noch etwas über (open)Mosix gelesen.
Mosix ist ja leider nur noch Kommerziell erhältlich und scheidet daher eigentlich aus. Und openMosix wird im März 2008 eingestampft.
Kennt da jemand eine Alternative?

Oli

marce
29.07.07, 19:39
Wenn es nur um Webhosting geht würde ich das komplett anders lösen. Shared storage macht in den Szenario soweit ich es sehe keinen Sinn - oder was wilslt Du hosten, was dies notwendig macht?

OliverH
29.07.07, 20:29
Naja im grunde möchte ich ein zentrales storage, wo mein quasi eigenbau SAN ja schonmal Sinn macht. Und zusätzlich, möchte ich einen niedrigen Administratiosaufwand, welcher durch den Einsatz wie oben beschrieben gegeben wäre. Vordergründig ist dabei auf jedenfall die Skalierbarkeit, weniger die Performance.

Oli

marce
29.07.07, 20:33
Was soll denn konkret skalierbar sein?

OliverH
29.07.07, 20:49
Speicherplatz und Rechenleistung.
Angenommen ich habe Webhostingkunden, jeder erhält 10GB Platz mit PHP, MySQL & co... bei 30 Kunden reicht ein Server, kommt ein weiterer Hinzu, brauche ich eine weitere Box, was den Administrationsaufwand erheblich steigert. Da war mein Ansatz der, dass ich einen Server habe, der über ein riesen Storage und massig cpu's verfügt. Da das aber Hardwaremäßig schnell sehr teuer wird, dachte ich an die oben genannte Lösung ;)

Sehe ich, dass die CPU ressourcen knapp werden, wird einfach ein Clusternode hinzugefügt, magelt es an Speicherplatz wird halt ein weiterer Node zum "SAN" hinzugefügt.

So habe ich mir das gedacht.

Oli

EDIT:
Ein weiterer Aspekt, ist der, dass man Nachts einzelne Nodes einfach Herunterfahren kann und somit Strom spart, was je nach Größe des Clusters nicht unerheblich ist. Außerdem ist der Strom in Rechenzentren oft relativ teuer!

marce
29.07.07, 20:55
Reden wir hier über ein ernsthaftes Projekt oder eine private Spielerei?
Was ist das Budget?
Welche SLAs willst / musst Du bieten?
Welche Infrastruktur ist bereits vorhanden bzw. soll benutzt werden?

OliverH
29.07.07, 22:00
Reden wir hier über ein ernsthaftes Projekt oder eine private Spielerei?
Wir reden derzeit über eine Spielerei, die ich aber auch gerne für's webhosting einsetzen würde, wenn es denn ordentlich funkioiert, derzeit hoste ich auf diversen rooties.

Was ist das Budget?
Tendiert gegen Null.

Welche SLAs willst / musst Du bieten?
Keine konkreten, die Sache sollte Hochverfügbar sein.

Welche Infrastruktur ist bereits vorhanden bzw. soll benutzt werden?
Bis dato noch nichts, ich dachte an Gigabit Ethernet, gehostet in angemieteter Rackfläche. Die Storage Nodes sollten folgende Ausstattung erhalten:
Ahtlon64 3800+
512MB DDR2
3x 400GB SATAII (RAID-5)
Gigabit LAN oder 10Gbit Ethernet?
(Kann man natürlich auch auf 6 Platten oder mehr erhöhen)

Die Cluster Nodes:
Athlon64 X2 3800+ EE
2GB DDR2-533
Gigabit Ethernet

Und als Zentralserver 2x:
Ahtlon64X2 5000+
8GB DDR2-667
1Gbit Außenanbindung
10Gbit Storage Anbindung
1Gbit Cluter-Node Anbindung

Das sind so meine Gedanken zum Equipment.

Oli

marce
30.07.07, 06:40
Reden wir hier über ein ernsthaftes Projekt oder eine private Spielerei?
Wir reden derzeit über eine Spielerei, die ich aber auch gerne für's webhosting einsetzen würde, wenn es denn ordentlich funkioiert, derzeit hoste ich auf diversen rooties.
hm, ok, behandeln wir es mal als Fallstudie :-)


Was ist das Budget?
Tendiert gegen Null.
Das ist schon mal schlecht :-) - Wenn Du sowas entsprechend aufziehen willst braucht Du HW, die das vernünftig unterstützt und ausfallsicher ist - günstig geht da meist nicht...


Welche SLAs willst / musst Du bieten?
Keine konkreten, die Sache sollte Hochverfügbar sein.
Hochverfügbar ist auch wieder so ein Wort - von 99.999% bis zu garantierten Antwortzeiten lässt sich damit alles abbilden. Ich denke mal, es geht Dir hauptsächlich um viele 9er.


Welche Infrastruktur ist bereits vorhanden bzw. soll benutzt werden?
Bis dato noch nichts, ich dachte an Gigabit Ethernet, gehostet in angemieteter Rackfläche. Die Storage Nodes sollten folgende Ausstattung erhalten:
Ahtlon64 3800+
512MB DDR2
3x 400GB SATAII (RAID-5)
Gigabit LAN oder 10Gbit Ethernet?
(Kann man natürlich auch auf 6 Platten oder mehr erhöhen)

Die Cluster Nodes:
Athlon64 X2 3800+ EE
2GB DDR2-533
Gigabit Ethernet

Und als Zentralserver 2x:
Ahtlon64X2 5000+
8GB DDR2-667
1Gbit Außenanbindung
10Gbit Storage Anbindung
1Gbit Cluter-Node Anbindung

Das sind so meine Gedanken zum Equipment.

Oli
Frage: ist das so zu sehen:
ClusterNodesnehmen die Anfragen der Clients entgegen. Ihre Daten bekommen diese Server von dem Zentralserver, welcher wiederum die Daten von den StorageNodes bezieht?

Wenn ja, würde ich so nicht machen.

weitere, evtl. auch unabhängige Kommentare dazu:
Wenn Du ein zentrales Storage haben willst, so sollte das und der Zugriff darauf entsprechend perfomant sein - und auch Skalierbar. Ob ich dann dafür einen "PC mit angeflanschtem Raid" einsetzen würde wäre zu überlegen - evtl. kann Bla!zilla da noch was dazu sagen. Es kommt natürlich auch darauf an, was für Durchsatzzahlen Du benötigst...

Da Hochverfügbar auf jeden Fall ein redundates System - und schon hast Du das Problem, wie Du Datenabgleich und Failover regelst.

Für die Frontend-Server sieht's ähnlich aus. Klar, Daten und Konfiguration kann vom Raid kommen, so kann "problemlos" ein zusätzlicher Node dazugeschaltet werden. Die Frage wäre dann, wie Du die Verwaltung dieser übernimmst - Möglichkeiten wären da über DNS-Loadbalancing gegeben oder z.B. über einen Ded. Loadbalancer vorne dran. Der dann selbst wiederum redundant ausgelegt werden müsste - und auch ensprechend perfomant. Wenn man da auf "amtliche" Gerätschaften setzt haben wir wieder ein Budget-Problem, Bastellösungen können funktionieren, aber je nach Umfeld würde ich denen meine Geschäftbasis nicht anvertrauen.

Was die SW angeht - die meiste SW ist nicht wirklich clusterfähig. Du kannst meist problemlos mehrere Instanzen davon laufen und die Last auf diese verteilen (z.B. auf mehreren Servern), musst dann aber darauf achten, dass evtl. notwendige Persistenzen gewährleistet werden. Persistenz-Daten in Echtzeit über Netzwerk verteilen ist ohne SpezialHW meist nicht machbar.
Relativ harmlos sind dabei übrigens noch Webserver - interessant wird es dann, sobald Du Datenbanken mit im Spiel hast...

Nur mal so für den Anfang - evtl. später noch mehr dazu, jetzt muss ich erst mal Mails lesen...

Sven_R
30.07.07, 07:53
hallo



Naja im grunde möchte ich ein zentrales storage, wo mein quasi eigenbau
SAN ja schonmal Sinn macht. Und zusätzlich, möchte ich einen niedrigen
Administratiosaufwand, welcher durch den Einsatz wie oben beschrieben
gegeben wäre. Vordergründig ist dabei auf jedenfall die Skalierbarkeit,
weniger die Performance.
Oli

ein niedrigen admin aufwand kannst du meist vergessen, es sei denn du will
komerzielle produkte einsetzen.
bei der skalierbarkeit kannst du Ultra Monkey (http://www.ultramonkey.org/3/topologies/)
einsetzen, das ist gut dynamisch.
ich verwende selber auch Ultra Monkey aber als HV und LB Cluster (http://www.ultramonkey.org/3/topologies/ha-lb-overview.html).
es ist sehr dynamisch weill das netz auf zwei komponenten aufbaut,
dem linux director und dem server.
wenn ein ressource knapp wird stellst du eine neue einfach dazu.
ich habe aber dafür ein eigenes programm was mir die handarbeit abnimmt
und den gesammten cluster überwacht.

das zentrale storage ist über ein eigenes internes netz angebunden.

zum thema HW soltest du auf alle fälle was ordentliches nehmen.
schon wegen der zuverlässigkeit und der redundanz.
das thema hotplug ist hier für natürlich auch wichtig.

cu