Meine eigene kleine „private Cloud“ mit RaspberryPi

wpid-20130608_123145.jpg
Ein vollwertiger Computer, der in eine Handfläche passt.

Dass der RaspberryPI vielfältig einsetzbar ist, dürfte ja bekannt sein. Ich habe meinen, den ich von Farnell  habe jetzt dazu genutzt, eine kleine private Cloud einzurichten, auf die ich bei Bedarf aus dem Netz zugreifen kann. Grundlage war natürlich raspbian als OS. Dazu kam dann noch die Installation von XBMC, (als Teil der raspbian Installation verfügbar), der dann für zu hause den Medienserver gibt. Natürlich kann man hier auch auf spezielle Images zugreifen, die rund um XBMC konfiguriert sind, ich wollte aber flexibel bleiben. Am RaspberryPi hängt ein USB Hub, an den ich wiederum eine Festplatte gehängt habe, die dann mit entsprechenden Film- und Audiodateien bestückt ist. Wichtig hierbei ist, die Ports, auf die man von außen zugreifen können will, im Router (bei mir eine Fritzbox) auch freizugeben. Für mich habe ich den Zugriff auf meine Cloud auch für die Konfiguration mittels eines VNC Servers auf dem RaspberryPi gelöst, auf den ich mich sogar mit dem Android Smartphone aufschalten kann. Neben dem XBMC läuft parallel noch Boinc, die Anwendung zum verteilten Rechnen, damit der Raspberry auch wenn er mal sonst für nix gebraucht wird, noch ein gutes Werk tut. Natürlich kann ich von der Ferne auch auf die Platte zugreifen um dort Daten abzulegen bzw. herunterzuladen. Dies wiederum geht am elegantesten via Samba Server. Eine gute Anleitung für dessen Installation gibt es im Netz. Natürlich muss man sich beim Einsatz eines Raspberry im Klaren sein, dass man es nicht mit einem High Performance device zu tun hat. Aber gerade der einfache Setup und der sehr niedrige Energiebedarf spricht für einen Einsatz des Raspberry für die kleine feine private Cloud. Update: Noch ein Tipp erreichte mich bezüglich eines echten Cloud Servers, der mit Dropbox vergleichbar ist: OwnCloud bietet Fileserver, Mediaserver, Kalender und vieles mehr. Die Installation ist zwar etwas aufwändiger, lohnt sich aber in jedem Fall und es gibt gute Anleitungen dazu im Netz.

Javaforum Stuttgart 2011 #jfs2011 Live Blogging Vortrag 4

Vortrag 4:

Java in der Cloud – Aktuelle Möglichkeiten und Entwicklungen

Was ist die Cloud?
Infrastructure as Service
Virtuelle Server, vergleichbar mit Virtualisierung

Manage Everything yourself
Player sind z.B. Amazon Webservices
VMWare
Platform as a Service
Virtual App Server
werden meist von den Providern gemanagt.
Skalierung wird vom Anbieter gemanagt.
Beispiele Cloudfoundry oder Google App Engine

Software as a service

Software aus der Cloud meist ebenso relevant für User wie Entwickler
Beispiele: Salesforce
Google Mail

Cloud Modelle:

Public -> Für die Öffentlichkeit verfügbar

Private -> Nur für eine Organisation verfügbar

Community -> Für mehrere Organisationen verfügbar

Hybrid -> Kombination verschiedener Modelle

Warum Cloud überhaupt machen

Public Cloud: Zahl nur, was du brauchst
Billige Art, Lastspitzen zu behandeln
Transparentes Kostenmodell

Private Cloud:
Besser Verwendung der Ressourcen
Kosten können abgerechnet werden
Der nächste Schritt nach der Virtualisierung

Business Agility
Deployment von Anwendungen per Maus Klick
Testumgebungen sehr einfach und günstig. Zahlen nur beim Testen.
Die Anwendung skaliert automatisch

Werner Vogels (CTO Amazon) sagt: Ihre Ingenieure brauchen 70% der Zeit für Skalierbarkeit und Technologie-> Deshalb Cloud

Plattform der Zukunft
Ausfallsicherheit, Automatische Verteilung, neue Computer einzurichten wird trivial
Günstige Systeme mit hoher Verfügbarkeit und Datenhaltungssicherheit
Sieht so aus wie Google, Amazon, Facebook

Wie sieht das für den Java Entwickler aus

Wie gehe ich mit Lastspitzen um? Ich brauche mehr App Server Instancen
Nach dem Peak müssen sie auch wieder gestoppt werden
Elastic Scaling als Stichwort
Was der Entwickler am Ende hat:
Eine Werkzeug, das eine Anwendung nimmt und daraus eine VM erzugt, mit der gesamten nötigen Infrastruktur.
Diese kann dynamisch hoch und runter skalieren.

Wir benötigen Werkzeuge zur Installation der Software
Die Infrastruktur verwalten
Benutzer einrichten

Tools sind z.B. Puppet, Chef etc.
Quasi eine Factory für VMs
Für lokale Installationen existiert „Vagrant“
Vorteile: Sehr flexibel
Arbeitet für jetwede Infrastruktur und Anwendung
Arbeitet auf komplexen Installationen mit versch. Komponenten
Verschiedene Anwendungen können auf verschiedene Knoten deployt werden.

Aber noch besser geht es:

Anwendung auf einer PaaS Umgebung also Plattform as a Service deployen
Vorteil: Nützlicher, da ein Server sowieso installiert werden müssten
Automatische Skalierung
Zusätzliche Dienste im Angebot

Aber:
Weniger flexibel
Vordefiniertes Entwicklungsmodell
Lernkurve für das Programmiermodell
Existierender Code ggf. schwer zu migrieren.

Mogliche PaaS Plattformen
Google App Engine
Java Unterstützung aber sehr restriktive Umgebung mit Java Classes White List
Fokus auf NoSQL

Begrenzung der startbaren Applikationen
Limit auf Antwortzeit (30sec)
Kein Zugriff auf OS oder Server

Daher wurden spezielle Frameworks entwickelt
(Gaelyk for Groovy)

Aber besser laut Vortragendem

Amazon Elastic Beanstalk

Basierend auf der EC2 Infrastruktur
plus Auto Scaling und S3
Dazu Linux, OpenJDK und Tomcat

Zur Zeit im Betatest im Osten der USA
Es gibt Eclipse Plugin
Es unterstützt Versionsverwaltung für Applications, sowie Elastic Scaling
Einfaches Monitoring ist eingebaut
Detailierte Kontrolle über die Umgebung ist möglich.
Zugang aufs OS und Tomcat Logs

Spring basierte Demoanwendung ist vorhanden und es existiert ein Relational Database Service (RDS) für enterprise scale MySQL und andere Amazon Web Services
Skalierungseinheit 1 VM = 1 Server

Weiterer Ansatz
VMWare Cloud Foundry
Open Source Projekt bei GitHub unter der Apache2 Lizenz

Sehr neu, noch ohne kommerzielle Angebote

Kann Ruby, Java und Node.js laufen lassen
Verschiedene Frameworks werden unterstützt
Kann überall gehostet werden, wird von der Community erweitert, z.B. Support für Erlang, PHP, Python

Es existiert ein Eclipse Plugin
Es unterstützt elastic scaling…. Ok, man kann es bauen.
Aehnlich normalen EJB Umgebungen mit Tomcat und MySQL
Läuft auf ubuntu
es teilen sich n Server eine virtuelle Maschine, damit geht die Skalierung feingranularer.
Angebotene Dienste sind
RDB Service
Key Value Store
Document Store
Messaging Service
Mehr kommt
Es gibt auch eine API zum Erstellen der eigenen Services

Zusammenfassend
Cloud wird aus drei Gründen kommen: Kosten, Business Agility, Platform of the Future
Google App Engine Pionier aber veraltet

Amazon Beanstalks: Standing on the shoulde of Giants

Cloudbees: Für Entwickler

Spannend scheint CloudFoundry: Open Source mit einer grossen aktiven Community, lauffähig auf ubuntu!