Qualitätsmanagement für Webprojekte

In the clound Anwendungshinweise für Amazon Elastic Compute Cloud oder kurz EC2

EC2

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 Bespiel 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

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.

Unsere Empfehlung

Image of Cloud Computing: Web-basierte dynamische IT-Services (Informatik im Fokus)
Autor: Christian Baun, Marcel Kunze, Jens Nimis, Stefan Tai
Hersteller.: Springer Berlin Heidelberg

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!

Kategorie: 

Schreib doch was dazu

RSS Feed