Was ist EC2? Kurz gesagt, es ist eine Webservice, mit dem man sogenannte AMIs (Amazon Machine Images) verwalten und steuern kann. Eine AMI kann man als Instanz (kostenpflichtig) verwenden, was mit einem dezidierten Server vergleichbar ist. Eigentlich ist es das selbe, nur eben mit dem Unterschied, dass die komplette Verwaltung über einen Webservice funktioniert. Die nächste Frage, die man sich stellt ist: Welche Vorteile bringt EC2 gegenüber einem herkömmlichen Rootserver, wie man sie heutzutage überall angeboten bekommt?

Die wichtigsten Vorteile:

  1. eine grosse Auswahl an ready-to-use AMIs. Von den modernen Linux-Distribution können hier eine Vielzahl von Images gefunden werden. Und wer unter den veröffentlichten AMIs keine passende Lösung findet, die seinen Ansprüchen gerecht wird, der kann ein öffentliches Image als Vorlage verwenden, um ein eigenes zu erstellen.
  2. sehr schnelle Bereitstellung/Verfügbarkeit Wenn man die Wahl für sein favorisiertes AMI getroffen hat, dauert es ca. 3 Minuten und die Instanz ist einsatzbereit. Danach kann man sich sofort per ssh anmelden.
  3. Skalierbarkeit Über die Anzahl der Instanzen kann man die Skalierbarbeit steuern.
  4. Duplizierung möglich Man kann innerhalb von Minuten einen Clone seiner Instanz erstellen und einsetzen. Das erspart sehr viel Einrichtungsarbeit.
  5. Kosten genau kalkulierbar Anders als bei "normalen" Rootservern wird nur die verbrauchte Leistung berechnet. Man zahlt für jede Stunde Rechnerzeit und den verbrauchten Traffic. Zur Datenablage dient S3, wobei der Traffic zu S3 kostenlos ist.
  6. Automatisiert steuerbar Das das ganze ja ein Webservice ist, hat es natürlich den grossen Vorteil, dass man alles über Skripte steuern kann. Wenn man z. B. mehr Instanzen benötigt, kann das ein Skript automatisch erledigen.

Allerdings hat das ganze auch seine Schattenseiten. Viele Rootserver-Anbieter bieten in Ihrer Preiskalkulation gleich eine Serververwaltungssoftware mit an, wie z.B. Plesk, Confixx oder cPanel. Man muss also zusätzliche Kosten für Lizenzen einkalkulieren oder auf kostenlose Lösungen setzen (z.B. VHCS, Webmin oder ISPConfig). Allerdings kommt es auch auf dem Einsatzzweck an, wenn auf dem Server nur ein Webserver mit einer Domain laufen soll, kann man auf eine Verwaltungssoftware getrost verzichten. Eine weitere Schwachstelle ist derzeit noch, dass kein persistenter Speicherplatz angeboten wird. Das bedeutet, wenn die Instanz heruntergefahren wird, ist das Betriebssystem weg (das trifft nicht für einen Reboot zu!)

Ok, aber nun zum praktischen Teil Alle Anweisungen beziehen sich auf die Einrichtung eines Linux System mit einer Bash Shell, betriebsbereiter Java Umgebung und installierten OpenSSH. Beides sollte bei jeder modernen Distribution vorhanden sein. Die Anleitung kann aber auch für Windows hilfreich sein, mit einigen leichten Abweichungen wie, z.B. der Umgang mit der Key-Authentifizierung mit PuTTY und das Einrichten der Umgebungsvariablen.

  1. AWS Access Identifiers erstellen Unter http://aws.amazon.com/de/ muss man sich seine AWS Access Identifiers erstellen (ein X509 Zertifikat), welche zur Authentifierung alle Zugriffe für die Webservices erforderlich sind.
  2. Herunterladen und Installation der EC2 Tools Die Kommandozeilen Tools kann man sich unter folgender URL herunter laden: http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip Mit folgenden Befehlen erledigt man die Installation: ``` mkdir ~/ec2 cd ec2 wget http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip unzip http://s3.amazonaws.com/ec2-downloads/ec2-api-tools.zip ln -s ec2-api-tools-1.3-19403 ec2-api-tools-current ``` Die letzte Zeile muss bei einer neueren Version der Tools auf den richtigen Verzeichnisnamen angepasst werden. Durch den symbolischen Link hat man den Vorteil, dass man dann das Verzeichnis im Suchpfad für ausführbare Programme aufnehmen und dadurch die Tools aus jedem Verzeichnis direkt nutzen kann (ohne den absoluten Pfad angeben zu müssen).
  3. Einrichten der Umgebungsvariablen Es müssen vier Umgebungsvariablen gesetzt werden, um die EC2 Tools verwenden zu können: ``` export EC2_HOME=~/ec2/ec2-api-tools-current export EC2_PRIVATE_KEY=~/.ec2/pk-56PSFSYOVHXF6KNALFEZC6EGSC7VNGVI.pem export EC2_CERT=~/.ec2/cert-56PXFSYOFHZF6KNVLFEZC6EGSC7VNGVI.pem export PATH="$EC2_HOME:$PATH" ``` Es empfiehlt sich diese Anweisungen in die ~/.bashrc aufzunehmen, da dadurch die Umgebungsvariablen beim Öffnen jeder Bash Shell automatisch gesetzt werden. EC2_HOME zeigt auf das Verzeichnis, in dem sich die EC2 Tools befinden (siehe vorherigen Abschnitt dazu). EC2_PRIVATE_KEY zeigt auf dem privaten Schlüssel des X509 Zertifikates und EC2_CERT zeigt auf das X509 Zertifikat. Die beiden zuletzt genannten Variablen werden zur Authentifizierung benötigt. Im Beispiel habe ich beide Dateien für die Authentifizierung in ein eigenes, versteckest Verzeichnis im Home-Verzeichnis gelegt.
  4. Erzeugen eines Schlüsselpaares Das Schlüsselpaar wir benötigt, um die Instanz zu aktivieren und um sich später bei der Instanz authentifieren zu können. Mit folgendem Befehl erstellt man ein Schlüsselpaar mit dem Name "squatlabs" (der Name kann frei gewählt werden). ```ec2-add-keypair squatlabs > squatlabs``` Der private Key wird hierbei zum aktuellen Verzeichnis erzeugt. Der öffentliche Schlüssel wird zu Amazon übertragen. Um den erzeugten privaten Key zur Authentifizierung nutzen zu können, ist es wichtig, dass die Benutzerrechte auf diese Datei richtig gesetzt werden. Dies erledigt man mit: ``` chmod 400 squatlabs ```
  5. AMI aktivieren Nun geht es an die Auswahl des richtigen AMIs. Um die Liste aller öffentlichen AMIs zu erhalten, verwendet man folgenden Befehl: ``` ec2-describe-images -a ``` Dadurch bekommt man eine riesige Liste, die sehr schwer überschaubar ist, deshalb kann man das Suchergebnis auch einschränken, indem man z.B. nach einer bestimmten Linux Distribution sucht: ``` ec2-describe-images -a | grep fedora ``` Will man nur die AMIs eines bestimmten Anbieters sehen, wie z.B. Amazon, dann verwendet man folgenden Befehl: ``` ec2-describe-images -o amazon ``` Um seine eigenen AMIs aufzulisten, verwendet man folgendes: ``` ec2-describe-images -o self ``` Bricht der Befehl ec2-describe-images mit einer Fehlermeldung ab, dann ist irgend etwas bei der Einrichtung der Tools oder der Umgebungsvariablen schief gelaufen. Oder es werden die weiter oben aufgeführten Mindestvoraussetzungen vom System nicht erfüllt. Falls ein Fehler aufgetreten ist, muss das Problem erst behoben werden. Es macht keinen Sinn die Anleitung weiter durch zu arbeiten, wenn das Problem noch besteht. Hat man dann endlich seinen Favoriten gefunden, startet man die Instanz mit folgendem Befehl: ``` ec2-run-instances ami-f51aff9c -k squatlabs ``` Hier wird als Beispiel das AMI fedora-8-i386-base-v1.06 von Amazon verwendet. Ein weiteres gutes AMI für den Start ist das Gentoo Image ami-8b8a6fe2. Nun dauert es so ca. 3 Minuten, bis die Instanz hochgefahren ist. Um den aktuellen Status abzurufen, dient folgender Befehl: ``` ec2-describe-instances i-ab6aaec2 ```
  6. Netzwerkzugriffe festlegen Um nun auch auf die Instanz von außen zugreifen zu können, müssen nun noch die Ports freigegeben werden. Folgender Abschnitt öffnet den Port für SSH (Port 22) und für den Webserver (Port 80): ``` ec2-authorize default -p 22 ec2-authorize default -p 80 ```
  7. </ol> Das war es - jetzt kann man damit arbeiten, wie man es mit einem herkömmlichen Rooterserver auch kennt. Man meldet sich also mit SSH an und nimmt die gewünschte Konfiguration am System vor. Um nun eine SSH Verbinung zur laufenden Instanz aufzubauen, ist nur eine Authentifizierung über den Key möglich (also kein Kennwort). ``` ssh -i ~/squatlabs root@ec2-67-202-53-115.compute-1.amazonaws.com ``` Wenn Du vergessen hast, wie der Hostname Deiner Instanz ist, bekommst Du mit dem Befehl ec2-describe-instances alle Deine laufenden Instanzen aufgelistet. Elasticfox als grafischer Ersatz für die EC2 Tools Elasiticfox ist nicht wirklich ein Ersatz der EC2 Tools, aber das Firefox Plugin bietet eine hübsche graphische Oberfläche zu den wichtigsten Features. Die Firefox Erweiterung kann man hier installieren: http://aws.amazon.com/developertools/609 Elasticfox für den Firefox Was bleibt nun noch zu tun? Auf jeden Fall muss für eine vernünftige Backup-Lösung gesorgt werden. Da momentan kein persistenter Speicherplatz verwendet werden kann, werden beim Ausfall der Instanz alle Daten verloren gehen. Viel Spaß beim Ausprobieren!

Aktualisiert: