Aktuelle Seite:

baten.de > Holger Baten > bITlog > bITlog Artikel

bITlog News

Amazon EC2 Mikro Instanzen für 14,50 $ im Monat

04.01.2011 13:22 von Holger Baten

Rein von den Kosten her waren die bisherigen kleinsten virtuellen Server aus der Amazon Cloud (EC2) nicht wettbewerbsfähig. Doch wie fast schon zu erwarten war, arbeiten die Amazonen unentwegt am Mehrwert für die Kunden. Die seit einigen Monaten erhältliche "micro instance" kostet mit 14,50 $ je Monat nur ca 1/4 der bisherigen "small instance" und ist darüberhinaus "out of the box" persistent.

 

Motivation

Für unseren Anwendungsfall kam mir die neue Instanz gerade recht: Wir suchen eine günstige Lösung, um die Webseiten unserer Kunden nicht nur auf Verfügbarkeit (z.B. ping auf Port 80), sondern auf Funktionsfähigkeit zu überwachen. Wir möchten deshalb definierte HTTP-Requests simulieren und die Antwort mit Hilfe von Schlüsselwörtern bewerten. Im zweiten Schritt soll dann eine Auswertung und natürlich Alarmierung erfolgen. Für etwa 1€/Monat je Website lässt sich diese Dienstleistung mehr oder weniger gut einkaufen. Da ich noch aus einem älteren Projekt über ein funktionsfähiges TCL-Script verfügte, welches in der Lage ist, HTTP-Requests als GET und POST inkl. diverser Parameter zu simulieren, und ich schon seit Wochen neugierig auf die Mikro-Instanzen von Amazon war, entschieden wir uns für einen Prototyp. Kurz währte die Idee, einen Nagios-Server aufzusetzen, der Einarbeitungsaufwand war uns schon für die Grundinstallation zu hoch und wir wollten keine Kanonen auf unsere kleinen Spatzen richten.

 

Architektur

Unser Simluations-Script (nun Generator genannt) wendet sich nicht direkt an die Ziel-URLs, die in einem Config-File zusammen mit den Schlüsselwörtern hinterlegt werden, sondern benötigt aus historischen aber auch guten Gründen einen HTTP-Proxy. Dies sollte der Apache sein. Wir haben also einen Generator, der Requests über einen lokalen HTTP-Proxy an unsere Ziel-Server sendet und die Antworten auswertet und entsprechend protokolliert.

 

Los geht's

Als EC2-AMI habe ich nicht lang gefackelt, sondern direkt das in der AWS-Konsole als erstes erscheinende offizielle Amazon Linux AMI genommen (Basic 32-bit Amazon Linux AMI 1.0 (AMI Id: ami-6a31041e in der eu-west region).

AWS EC2 Mikro Instanz

 

Es ist hier darauf zu achten, dass das gewählte AMI als boot device den EBS-Dienst (elastic block store) nutzt. Dies bedeutet, dass die EC2-Instanz keine eigene Festplatte besitzt, sondern automatisch mit dem Start ein Amazon EBS volume in der benötigten Größe anlegt (Dies geschieht auf Basis einen öffentlichen Snapshots, welches mit diesem AMI verbunden ist). Bei der Auswahl eines geeigneten AMIs steht die Option "Mikro Instanz"  (t1.micro) zur Verfügung und kann ausgewählt werden.

Auswahl der Mikro-Instanz

 

Nachdem die Instanz gestartet ist, kann sie wie andere Instanzen angesprochen werden. Zu den Schlüsselpaaren und dem genauen Weg, sich mit z.B. dem Putty mit der Instanz zu verbinden hatte ich mich schon in einem früheren Beitrag ausgelassen.

 

Anpassung der Instanz

Via scp war mein Generator Script schnell auf die Instanz kopiert. TCLSH als Unix-Shell-Interpreter ist in diesem Image schon enthalten, deshalb musste ich nur den Apache Web Server installieren:

yum install httpd.i386

 

Fertig! Den Web-Server starten:

sudo /etc/init.d/httpd start

 

Und schon kann über die pulic-DNS Adresse aus der AWS-Konsole die Apache Default Seite über den Browser abgerfangeschaut werden.

 

Für den Proxy habe ich folgendes zusätzliche Config-File angelegt:

/etc/httpd/conf.d/httpd-proxy.conf

 

Inhalt:

<VirtualHost *:8080>
ServerAdmin webmaster@localhost
  ErrorLog /var/log/apache2/proxy-error.log
  CustomLog /var/log/apache2/proxy-access.log combined
ProxyRequests On
ProxyVia On
<Proxy *>
order deny,allow
Deny from all
Allow from 127.0.0.1
</Proxy>
</VirtualHost>

 

In der Haupt-Konfigurationsdatei unter

/etc/httpd/conf/httpd.conf

 

muss außerdem eine Zeile

Listen 8080 

ergänzt werden.

 

Nach einem apache Restart

sudo /etc/init.d/httpd restart

 

War das Setup fertiggestellt. Ich konnte mein Script schon testen und anschließend via

sudo crontab -e

 

folgende Zeile einfügen:

10 6-23 * * *   /home/ec2-user/monitor/exec-profiler

 

Somit start das Script (exec-profiler) automatisch jede Stunde um 10 Minuten nach "voll", und zwar jeden Tag zwischen 6 und 23 Uhr (GMT). Das Script schreibt seine Ergebnisse nach /var/www/html (webroot), wo ich sie mir mit dem Browser anschauen kann. Perfekt.

 

Dann habe ich das Script noch einige Stunden optimiert und komfortabler gemacht. Dabei habe ich mehrere Sicherungen des Servers vorgenommen, was sehr einfach ist. Einfach in der Konsole die laufende Instanz anklicken und "Create Image (EBS AMI)" auswählen.

Sicherung des Servers erstellen

 

 

Schon wird der Server mit allen Anpassungen in wenigen Sekunden als eigenes AMI mit eigenem EBS-Snapshot weggesichert. Hierbei ist zu beachten, dass die Instanz dazu automatisch heruntergefahren wird, sie ist sogar einige Minuten länger "weg", als für die AMI Sicherung augenscheinlich notwendig ist. Einfach etwas Geduld haben, sie kommt wieder. Bis das eigene AMI über "Launch instance" gestartet werden kann, vergingen in meinem Fall sogar mehrere Stunden. (ich hatte alles in der Region eu-west durchgeführt) Man sieht das AMI aber direkt nach der Sicherung unter dem Punkt AMIs.

Die gesicherten AMIs

 

Nun läuft unser Monitor und gibt mir ein gutes Gefühl ..... oder sendet eine Mail, wenn etwas nicht funktioniert :-)

Zurück

Einen Kommentar schreiben

Blog Archiv

Stöbern Sie im Blog Archiv nach alten und neuen Einträgen.