Anzeige
Anzeige
Artikel
Artikel merken

Unbegrenzt Speicherplatz und virtuelle Maschinen per Web Service: Amazon S3 und EC2

Amazon bietet mit der Elastic Compute Cloud (Amazon EC2) und dem Simple Storage Service (Amazon S3) zwei Web Services an, die es externen Entwicklern ermöglichen, in Sachen On-Demand-Skalierung, Performance und Redundanz von der Amazon-Plattform zu profitieren. S3 stellt „storage for the internet“ zur Verfügung, unbegrenzten Speicherplatz in Amazons Rechenzentren, der über eine REST-API befüll- und abrufbar ist. EC2 bietet Entwicklern die Möglichkeit, on Demand beliebig viele Instanzen von virtuellen Maschinen per Web Services zu starten und zu kontrollieren.

7 Min. Lesezeit
Anzeige
Anzeige

Eines der größten Probleme von Webanwendungen ist die Skalierung, also das Funktionieren unter hoher Last durch viele Benutzer. Ein Problem, das meist erst spät angegangen wird und oft nur mit hohem Einsatz von Fachwissen und Kosten zu bewältigen ist. Dass es auch anders geht, beweist Amazon mit den EC2 und S3 Web Services.

S3 – Contentspeicher unbegrenzt

Anzeige
Anzeige

Ein typische Anforderung an Web-Applikationen ist die Speicherung von benutzergeneriertem Content. Schnell sammeln sich große Datenmengen an Bildern und Dokumenten an, die von Benutzern eingebracht werden. Spätestens bei Inbetriebnahme des zweiten Servers stellt sich die Frage, wie man diese Daten beiden Servern zugänglich macht. Wohin mit den Backups dieser großen Datenmengen? Wie die Redundanz und Hochverfügbarkeit sicherstellen? NFS- oder SMB-Shares kommen für eine ernsthafte Lösung dieser Probleme nicht in Frage, da sie dank Filesystem-Locking nicht über viele Server hinweg skalieren. Auch die Datenbank scheint nicht der richtige Ort für diese Daten. Genau hier bietet sich Amazon S3 [1] als Lösung an.

Für 0,15 US-Dollar pro Gigabyte im Monat kann man mit S3 unbegrenzten Speicherplatz in Amazons Rechenzentren mieten – ein günstiger Preis, wenn man bedenkt, dass man sich um Redundanz und Hochverfügbarkeit der Daten nun keine Gedanken mehr machen muss.

Anzeige
Anzeige

Um die eigenen Daten auf S3 zu speichern, stellt Amazon eine REST-API bereit. Da REST-Services über HTTP operieren, ist so eine Verschlüsselung mittels SSL sehr einfach möglich. Auf die Dateien in Amazons Datenspeicher kann ebenfalls über das REST-Interface zugegriffen werden. Daneben kann man über die API HTTP- und BitTorrent-Links anfordern, die als alternative Download-Möglichkeit fungieren. Die Einbindung von S3, die hier kompliziert erscheint, ist dank der vielen API-Implementationen [2] in den verschiedensten Sprachen wie PHP, Ruby oder Java sehr einfach zu realisieren. Neben den Bibliotheken, die man in die eigene Applikation einbinden kann, gibt es mittlerweile auch verschiedene Stand-Alone-Programme, mit denen man auf sein S3-Konto zugreifen und Dateien verwalten kann. Beispielhaft hierfür sind das Firefox-Addon S3-Organizer [3] oder Jungle Disk [4]. Während ersteres eine dem Norton Commander ähnliche Ansicht auf das S3-Konto gewährt, bindet Jungle Disk dieses als virtuelles Laufwerk auf dem Desktop ein.

Anzeige
Anzeige

Die Organisation der Daten innerhalb von S3 wird durch so genannte Buckets realisiert, eine Art Ordner oder Verzeichnis mit einem in S3 nur einmal vergebenen Namen zur eindeutigen Identifizierung. Im Gegensatz zu den von Dateisystemen bekannten Verzeichnissen sind Buckets nicht rekursiv aufgebaut, das heißt Buckets können keine anderen Buckets enthalten. Innerhalb eines Buckets können beliebig viele Dateien aufbewahrt werden. Eine Datei innerhalb des Buckets wird ebenfalls durch einen einzigartigen Key oder Namen identifiziert. Um eine Datei auf S3 anzusprechen, muss also der Bucket- und Dateiname bekannt sein. Typischerweise werden Domains als Namen verwendet, um den limitierten Namensraum aufzuteilen.

Um das oben skizzierte Problem mit benutzergenerierten Inhalten mit Hilfe von S3 zu lösen, wird eine Datei nach dem Upload von der Applikation auf S3 gespeichert. In der Datenbank wird lediglich der S3-Key eingetragen. So müssen keine großen Datenmengen lokal gespeichert werden. Fragt ein Benutzer eine Datei wieder an, wird der S3-Key aus der Datenbank ausgelesen. Über diesen Key kann die Datei aus S3 geladen und dem Benutzer übergeben werden. Dieser Vorgang bleibt für den Benutzer unsichtbar, da lediglich die Applikation mit dem Service interagiert. Allerdings heißt dies auch, dass die Applikation selbst die Datei von S3 laden muss und sie dann nochmals an den Benutzer überträgt.

Anzeige
Anzeige

Um diese doppelte und möglicherweise langsame Übertragung zu verhindern, kann anstatt der Datei auch lediglich die HTTP-URL angefordert werden. Der Benutzer wird dann einfach an diese URL weitergeleitet und lädt somit die Datei direkt von S3 herunter. Damit dies von S3 zugelassen wird, muss neben der Anforderung der HTTP-URL auch eine kurzfristige Freigabe der Datei geschehen – standardmäßig können nämlich alle Dateien auf S3 nur vom Ersteller eingesehen werden.

Solch eine Lösung skaliert auch bei sehr großen Datenmengen über viele Server hinweg, da außer dem S3-Key keine weiteren Daten auf allen Servern verfügbar sein müssen.

EC2 – Server-Ressourcen auf Abruf

Ein anderes typisches Problem von Web-Applikationen ist die Skalierung von Server-Ressourcen und deren ungleichmäßige Auslastung. Steigt die Nutzung und Popularität einer Webseite schnell an, hat man oftmals Schwierigkeiten mit der zeitgerechten Installation von neuen Servern. Diese müssen erst erworben, eingerichtet und konfiguriert werden. Die teuer bezahlten Ressourcen stehen aber dann die Nacht über ungenutzt im Rechenzentrum, da zu dieser Zeit kaum Last anfällt. Neben dieser ungleichmäßigen Belastung sind auch plötzliche Lastspitzen, wie das bekannte Slashdot-Phänomen, ein Problem.

Anzeige
Anzeige

Als Lösung bietet sich hier die Elastic Compute Cloud (EC2) von Amazon an [5]. Dabei handelt es sich um virtuelle Linux-Server, die per Web Service aktiviert werden können. Pro Maschine fallen für jede angefangene Stunde 0,10 US-Dollar an, es können beliebig viele gestartet werden. Die virtuellen Server verfügen über 2 GHz Prozessorleistung, 1,25 GB RAM und 120 GB lokalen Speicherplatz. Die Idee ist, dass die Virtualisierung die Einrichtung und Konfigurationen vereinfacht und der On-Demand-Aspekt gegen die ungleichmäßige Belastung wirkt.

Das Grundprinzip von EC2 ist einfach: aus der Sammlung von eigenen oder öffentlich verfügbaren Images eines Servers sucht man sich das passende heraus. Dieses Image wird Amazon Machine Image (AMI) genannt und ist ein auf der Virtualisierungslösung XEN basiertes Abbild eines Linux-Betriebssystems. Die AMI wird nun auf S3 kopiert und somit EC2 verfügbar gemacht. Anschließend wird das Image mittels eines Web Service-Aufrufs gestartet.

Neben den Bibliotheken für verschiedene Sprachen bietet Amazon ein Kommandozeilen-Tool zur Verwaltung an. Ein Image kann mehrfach gestartet werden und bildet lediglich die Basis für den gestarteten virtuellen Server.

Anzeige
Anzeige

SHELL

# Starten des Image '5bae23' mit dem eigenen SSH Key
> ec2-run-instances ami-5bae23 -k $RSA_Key

# Einloggen per SSH
> ssh root@domU-12-34-31-00-00-05.usma1.compute.amazonaws.com

# Stoppen der Instanz
> ec2-terminate-instances i-10a64379

Listing 1

Nach einigen Minuten ist der virtuelle Server hochgefahren und verfügbar. Alle auf dem Image konfigurierten Dienste werden gestartet. Über SSH kann man sich auf dem Server einloggen. Der neue Server kann jetzt in das eigene Netz aus Webservern oder Applikations-Servern eingegliedert werden. Ist der Betrieb nicht mehr notwendig, da beispielsweise die hohe Last nicht mehr existiert, kann die Maschine per Web Service-Aufruf wieder beendet werden.

Man sollte allerdings bedenken, dass alle Daten, die auf dem lokalen Speicherplatz der Maschine abgelegt wurden, verloren gehen. Beim nächsten Start des selben Images ist nicht einmal derselbe virtuelle Server garantiert. Das ist jedoch nicht weiter tragisch, da das Konzept und der Einsatzzweck von EC2 in CPU- und RAM-lastigen Applikationen liegt. Für persistenten Speicherplatz ist S3 zuständig. Will man also Daten einer EC2-Maschine permanent speichern, so muss man diese regelmäßig auf S3 übertragen. Ein auf EC2 laufender Datenbank-Server sollte also unbedingt durch eine Slave-Maschine und regelmäßige Datenbank-Backups gesichert werden.

Richtig interessant wird EC2 erst, wenn die volle Tragweite der automatischen Ansteuerung verstanden wird. Zusätzliche Server lassen sich mittels EC2 bei Last starten und beim Abklingen dieser wieder herunterfahren. Dabei fallen nur Kosten für die Zeit an, in der die Server auch genutzt wurden. So können beispielsweise mit dem Monitoring-Tool Monit [6] die Last auf den eigenen Maschinen überwacht und lastabhängig weitere EC2-Instanzen gestartet oder gestoppt werden. In der abgebildeten Monit-Konfiguration wird je nach CPU-Belastung ein Shell-Skript aufgerufen. Dieses Skript nutzt dann die Kommandozeilen-Tools von Amazon, um die EC2-Instanzen zu verwalten.

Anzeige
Anzeige

SHELL

> tail /etc/monitrc
check system example.com
	if cpu usage (user) > 70% for 5 cycles then
		exec “/hom/ec2/add_additional_instance.sh“
	if cpu usage (user) < 50% for 10 cycles then
		exec “/hom/ec2/stop_additional_instance.sh“

Listing 2

Mit solch einem Setup kann sehr einfach und automatisch auf Lastspitzen reagiert werden. Die einzige Schwierigkeit besteht nur noch in der automatischen Integration neuer Maschinen in die eigene Infrastruktur. Um einen möglichst einfachen Zugriff der EC2-Instanzen auf die eigenen Backend-Server zu gestatten, hat sich eine VPN-Lösung als praktisch erwiesen. Dazu verbindet sich die EC2-Instanz beim Booten mit dem eigenen VPN-Gateway und kann so alle Datenbank- und Fileserver erreichen.

Fazit

Amazon bietet mit S3 und EC2 zwei Web Services an, die es externen Entwicklern und Unternehmen ermöglichen, hoch redundante und verfügbare Setups für einen vergleichsweise geringen Preis einzurichten. In den USA haben sich diese Dienste bereits bei vielen Unternehmen bewährt. Allerdings ist das letzte Wort in Sachen Serverhousing und -Management noch nicht gesprochen, da Amazon nur einen Standardtyp von Maschinen anbietet. Gerade wenn man sehr hohe Anforderungen an seine Datenbank-Server stellt, ist zumindest bisher das heimische Rechenzentrum der bessere Standort für die eigenen Ressourcen. Dank S3 sollten aber viele Backup- und Datenspeicherproblematiken der Vergangenheit angehören.

Mehr zu diesem Thema
Fast fertig!

Bitte klicke auf den Link in der Bestätigungsmail, um deine Anmeldung abzuschließen.

Du willst noch weitere Infos zum Newsletter? Jetzt mehr erfahren

Anzeige
Anzeige
Schreib den ersten Kommentar!
Bitte beachte unsere Community-Richtlinien

Wir freuen uns über kontroverse Diskussionen, die gerne auch mal hitzig geführt werden dürfen. Beleidigende, grob anstößige, rassistische und strafrechtlich relevante Äußerungen und Beiträge tolerieren wir nicht. Bitte achte darauf, dass du keine Texte veröffentlichst, für die du keine ausdrückliche Erlaubnis des Urhebers hast. Ebenfalls nicht erlaubt ist der Missbrauch der Webangebote unter t3n.de als Werbeplattform. Die Nennung von Produktnamen, Herstellern, Dienstleistern und Websites ist nur dann zulässig, wenn damit nicht vorrangig der Zweck der Werbung verfolgt wird. Wir behalten uns vor, Beiträge, die diese Regeln verletzen, zu löschen und Accounts zeitweilig oder auf Dauer zu sperren.

Trotz all dieser notwendigen Regeln: Diskutiere kontrovers, sage anderen deine Meinung, trage mit weiterführenden Informationen zum Wissensaustausch bei, aber bleibe dabei fair und respektiere die Meinung anderer. Wir wünschen Dir viel Spaß mit den Webangeboten von t3n und freuen uns auf spannende Beiträge.

Dein t3n-Team

Melde dich mit deinem t3n Account an oder fülle die unteren Felder aus.

Bitte schalte deinen Adblocker für t3n.de aus!
Hallo und herzlich willkommen bei t3n!

Bitte schalte deinen Adblocker für t3n.de aus, um diesen Artikel zu lesen.

Wir sind ein unabhängiger Publisher mit einem Team von mehr als 75 fantastischen Menschen, aber ohne riesigen Konzern im Rücken. Banner und ähnliche Werbemittel sind für unsere Finanzierung sehr wichtig.

Schon jetzt und im Namen der gesamten t3n-Crew: vielen Dank für deine Unterstützung! 🙌

Deine t3n-Crew

Anleitung zur Deaktivierung
Artikel merken

Bitte melde dich an, um diesen Artikel in deiner persönlichen Merkliste auf t3n zu speichern.

Jetzt registrieren und merken

Du hast schon einen t3n-Account? Hier anmelden

oder
Auf Mastodon teilen

Gib die URL deiner Mastodon-Instanz ein, um den Artikel zu teilen.

Anzeige
Anzeige