Cloud-Verständnissproblem

hantaro

Newbie
Registriert
Jan. 2012
Beiträge
3
Hi Leute,

hab da ein Problem, und zwar soll ich im Rahmen eines kleinen Projekts(für Schule) eine Cloud aufbauen in der es möglich ist:
1.Daten zu speichern,
2. kleine Anwendungen(z.B simples Spiel auf Java-Basis) laufen zu lassen welche ich eben am Laptop sehe/spiele/arbeite...

Hab mich ein wenig informiert und bin mir bei einigem unsicher.

Hardware: Zur Verfügung habe ich 5 PCs(1FrondEnd, 4Hosts)
Software: Hier habe ich Opennebula gewählt, hab mich schon ein wenig beschäftigt, Linux aufgesetzt, virtuelle Maschinen aufgesetzt... Was mir jeodch nicht klar ist,
hab bis jetzt immer nur gelesen das Opennbula zum verwalten der Cloud da ist, und im Tutorial ( http://opennebula.org/documentation:rel3.0#designing_and_installing_your_cloud_infrastructure)
hab aber eben noch nichts gefunden wie ich die 2 obigen Punkte realisiere?!

Kurz gesagt: was muss ich machen muss das Opennebula mir meine 2 oben gesetzen Aufgaben ermöglicht? -> oder brauche ich dazu noch Zusatzprogramme?

bräuchte dringend Rat, damit ich das ganze nicht schon von Anfang an versaue^^
Hoffe das ich mich verständlich ausgedrückt habe, danke schon mal im Vorraus!

mfg hantaro
 
Du brauchst dafür noch Zusatzprogramme. So wie ich das bisher verstanden habe, kann man mit OpenNebula hauptsächlich einen Haufen VMs fernsteuern.
Was du aber brauchst, ist eine bereits laufende Cloud (= viele VMs oder Rechner) und eine Anwendung in der Cloud, die deine zwei Punkte ermöglicht.

Du brauchst eine Art Portalrechner, den die Clients außerhalb der Clouds kontakten müssen. Abhängig von den angeforderten Ressourcen durch die Clienten muss das Portal automatisch die passenden VMs bzw. eine davon ansteuern. Und diese VM/VMs machen dann das, was auch immer gefordert ist (Daten speichern & Programm ausführen).
Der wichtigste Punkt ist, dass die Clients nicht sehen, wo zB die Daten gespeichert werden bzw. wo was läuft. Eine Cloud verwaltet sich selber, d. h. Außenstehende bekommen nichts mit.


Du könntest zB für deinen Punkt 1 ein verteiltes Dateisystem in jeder VM aufsetzen und miteinander verbinden. Die verteilten Dateisysteme sind heutzutage meist so ausgefeilt, dass sie sich selbstständig organisieren und ihre Daten (mehr oder weniger) selbstständig verteilen. Du brauchst also nur noch im Portal einen Zugangspunkt zu dem Dateisystem einbauen. Das könnte zB eine FTP-Adresse sein.
Alles, was du dann auf den FTP schiebst, wird durch das verteilte Dateisystem mit den anderen VMs synchronisiert, sprich: Die Daten werden irgendwo in der Cloud abgelegt.

Wenn Punkt 1 läuft, ist es ein Klacks, Punkt 2 zu erledigen. Du speicherst einfach irgendein Java-Applet in der Cloud und setzt noch einen oder viele (zB auf der Hälfte der VMs) Webserver auf, damit das Applet von außen erreichbar (durch den Portalrechner, zB Auswahl des Webservers durch Zufall oder Auslastung der VMs) ist. Fertig.

Das ist nur eine Auswahl an Möglichkeiten.

Im Grund ist eine Cloud nur ein Netzwerk aus Servern, mit dem Unterschied, dass man nicht einzelne Server anspricht, sondern den Servercluster als Ganzes.
 
Zuletzt bearbeitet:
Danke, die Erklärung hilft schon mal echt gut weiter!

Hab mal ein wenig weiterecherchiert!

Punkt1: Also für das verteilte Dateisystem möchte ich GlusterFS benutzen, und auf dem Portalrechner installiere ich dann Samba(Um von "außen" Zugriff zu haben). Verteiltes Dateisystem mit Samba "verknüpfen" -> Fertig! Stimmt das so?

Punkt2: Hierbei könnte ich also Apache verwenden?! Wie jedoch erkennt der Portalrechner welche VM ausgelastet ist und welche nicht?

Noch zu Punkt2: In diesem Fall stellt die Cloud das Java-Applet bereit. Jedoch berechnen tut sie nicht oder?
Vl. hab ich mich falsch ausgedrückt: Ich möchte hierbei das die VMs in der Cloud "zusammenarbeitet" um gemeinsam Rechenleistung zu bringen (z.B. ich schicke Sourcecode hin, und die Cloud kopmiliert mir diesen, wobei mehrere VMs zusammenarbeiten um zu kompilieren)
 
Zu 1:
Jupp, so geht das. Bei allen (oder nur einem Teil davon) Servern formatierst du eine Partition mit GlusterFS und schaltest die zusammen. Frag mich nicht nach Details, ich hab mit solchen Dateisystemen noch nie gearbeitet, kann also nichts zur exakten Konfiguration sagen.
Der Portalrechner "mountet" dann dieses Dateisystem (zB per NFS mit einem der Server verbinden oder ebenfalls eine GlusterFS-Partition erstellen). Den Mountpoint gibst du dann per Samba frei.

Wenn man dann etwas drauf schreibt, sorgt Samba dafür, dass die Daten im GlusterFS gespeichert werden (für Samba ist das normaler Speicherplatz wie zB bei Ext3). GlusterFS wird dann automatisch aktiv und verteilt oder liest die Daten im Netzwerk. Jedenfalls denke ich mir das so.


Zu 2:
Ja, du kannst Apache verwenden. Um die Auslastungen der einzelnen Server herauszufinden, müssen die Server ihren Status an den Portalrechner melden bzw. der Portalrechner fragt den Status ab. Man könnte zB ein kleines Bash-Skript schreiben, dass von Apache per CGI aufgerufen werden kann und die Auslastung (eine Zahl reicht ja) zurück gibt. Man könnte das aber auch per cron machen, dass jede Sekunde eine neue HTML-Seite generiert.
Der Portalrechner fragt dann regelmäßig die CGI-Skripte ab und weiß dann die Auslastung.

Du willst jetzt aber, dass die ganzen Rechner zusammenarbeiten? Hm... du könntest ein paar Java-Programme schreiben, auf die Server verteilen und sie dann zB per RMI ansprechen. Du müsstest dann quasi dasselbe tun, wie wenn du ein Programm mit mehreren Threads programmierst - nur das die Threads auf anderen Servern im Netzwerk laufen.

Was da genau berechnet wird, überlasse ich deiner Fantasie.
 
Zurück
Oben