Partager via


Software auf Virtuellen Maschinen in der Cloud – ein Praxisbeispiel

Ein Windows-Testserver für die neue Unternehmenssoftware? Ein Forschungsprojekt auf Linux-Basis? Oder eine moodle-Plattform für eLearning-Systeme? Auf Windows Azure kann aus einer Vielzahl an Plattformen eine virtuelle Maschine in der Cloud erstellt werden, die weltweit via statischer (virtueller) IP zugänglich ist. Hier wird gezeigt, wie einfach sich eine solche Maschine erstellen und ein Projekt hochladen lässt.

Ab und an kommen so manche Unternehmen, Forschungseinrichtungen oder Privatpersonen in die Versuchung, ein Projekt zu starten, für das ein Server benötigt wird – sei es zu reinen Testzwecken oder auch für den laufenden Betrieb von Software. Nicht selten möchte man auch einfach nur neue Plattformen ausprobieren und testen. Windows Azure vereinfacht dies insofern, als dass virtuelle Maschinen sehr schnell erstellt und verschiedenste (vorgefertigte) Images eingebunden werden können. Die Auswahl ist sehr groß und reicht von klassischen LAMP-Systemen über vorgefertigte Linux-Systeme mit Tomcat bis hin zu SVN-Server oder Wordpress oder moodle-Plattformen. In diesem Tutorial soll ein LAMP-System erstellt, und eine kleine Bücherbörsen-Applikation hochgeladen werden, wobei die folgenden Schritte bearbeitet werden:

Schritt 1: Kostenlose Registrierung für Azure Schritt 2: VM und Disk-Image erstellen Exkurs: Virtuelle Maschinen in Azure löschen Schritt 3: Sicherheitseinstellungen Schritt 4: Hochladen und Konfiguration des Projekts

Schritt 1: Kostenlose Registrierung für Azure

Zunächst wird auf https://www.windowsazure.com/de-de/pricing/free-trial/ ein kostenloser Azure-Account erstellt. Notwendig dazu ist ein Windows-Live-Konto (siehe hier – man erhält die Option entweder eine neue Email-Adresse anzulegen oder eine bestehende Mailadresse als Windows-Live-ID zu verwenden) sowie eine Kreditkarte und eine Mobiltelefonnummer.

A1

Die Kreditkarte wird ebenso wie die Telefonnummer allein zur Identifizierung verwendet, es fallen keine Kosten an. Der Anmeldevorgang ist relativ selbsterklärend: Nach Anmeldung mit der Windows-Live-ID wählt man im erscheinden Dropdown-Feld „Österreich“ aus und gibt in den darauffolgenden Fenstern Kreditkarten- und Telefonnummer ein. Nach Bestätigung aller Daten erscheint das Azure Management Portal.

Schritt 2: VM und Disk-Image erstellen

Im Menü links klicken wir auf „Virtuelle Computer“. Auf der erscheinenden Seite klicken wir im Menü unterhalb der Überschrift auf „Images“ und danach im unteren Menü auf „VMDepot durchsuchen“.

A2

In dem nun erscheinenden Menü lässt sich aus einer Liste an VM-Depots eine Vielzahl an Images auswählen. Hier suchen wir das „LAMP Stack“-Image und klicken uns durch das zweiteilige Konfigurations-Menü, wobei wir auf der zweiten Seite unter „Bildregion“ Westeuropa auswählen. Microsoft garantiert, dass unsere Daten in Westeuropa, und zwar ausschließlich in Westeuropa gespeichert werden. Unter „Speicherkonto in Bildregion“ wählen wir „Neues Speicherkonto erstellen“ und vergeben einen beliebigen Namen.

A3

Mit einem Klick auf das Häkchen, wird für uns ein neues Image kopiert, wobei dieser Vorgang mehrere Minuten dauern kann. Danach scheint unser Image mit dem Namen „LAMP-Stack 5.x“ auf und muss nur mehr registriert werden, was mit einem Klick im unteren Menü auf „Registrieren“ bewerkstelligt werden kann.

A4

Wir haben bis jetzt Speicher reserviert und auf diesem Speicher ein Abbild eines LAMP-Systems erstellt. Im finalen Schritt legen wir nun die virtuelle Maschine auf Basis dieses Images an. Dazu reicht ein Klick auf „Neu“ im unteren Menü, danach auf „Server“ > „Virtuelle Computer“ und „Aus Katalog“.

A5

Hier können wir im Unterpunkt „Eigene Images“ unser LAMP-Image auswählen.

A6

In den folgenden Schritten konfigurieren wir die virtuelle Maschine, indem wir einen Namen für sie vergeben, Username und Passwort sowie einen (weltweit einzigartigen) „DNS-Namen“ wählen. Nach Abschluss der Konfiguration dauert es mehrere Minuten, bis unsere VM bereitgestellt ist. Sollte die VM nach Ende der Bereitstellung den Status „Angehalten“ aufweisen, klicken wir im unteren Menü auf „Start“ womit der Computer hochgefahren wird.

Exkurs: Virtuelle Maschinen in Azure löschen

Klickt man im „Virtuelle Computer“-Menü auf den Löschen-Button, so wird zwar die virtuelle Maschine an sich entfernt, nicht jedoch der Speicher-Account, auf dem sich die Daten befinden. Möchte man diesen im Speicher-Menü mit einem Klick auf „Löschen“ entfernen, so erhält man die Meldung „Failed to delete Storage account“ (bzw. Auf Deutsch: „Fehler beim Löschen des Speicherkontos“).

A7

Der Grund dafür ist, dass die „Disk“, die für die virtuelle Maschine automatisch erstellt wird, noch mit dem Storage verknüpft ist. Um auch die Disk zu löschen, öffnen wir erneut das „Virtuelle Computer“-Menü und klicken im Submenü auf „Datenträger“ (englisch. „Disk“). Danach wählen wir jenen Datenträger aus, den wir entfernen möchten und klicken im unteren Menü auf „Löschen“ – „Die zugeordnete VHD löschen“.

A8

Wurde der Datenträger erfolgreich gelöscht, können wir nun abermals in den Menüpunkt „Speicher“ wechseln und dort unser Speicherkonto löschen.

Schritt 3: Sicherheitseinstellungen

Wenn wir auf unsere virtuelle Maschine klicken, landen wir im „Dashboard“. Hier lässt sich nicht nur ablesen, wie viel Ressourcen unsere Maschine in letzter Zeit verbraucht hat, hier finden sich auch weitere wichtige Informationen im Unterpunkt „kurzer Blick“. Unter anderem ist hier die IP unserer Maschine zu finden, über die sie weltweit erreichbar ist.

A9

Wenn wir diese Adresse in unseren Browser eingeben, gelangen wir jedoch nicht - wie vielleicht zu erwarten wäre - auf die Sample-HTML-Seite unseres LAMP-Servers, es passiert gar nichts. Der Grund dafür ist, dass wir im „Endpunkte“-Menü (unterhalb der Überschrift) erst Port 80 öffnen müssen, per default ist hier nur Port 22 für die SSH-Connection geöffnet. Wir klicken auf „Endpunkt hinzufügen“ im Menü unten, worauf sich ein neues Fenster öffnet.

A10

Auf der zweiten Seite der Konfigurationsseite geben wir sowohl bei „Öffentlicher Port“ als auch bei „Privater Port“ 80 ein und klicken auf das Häkchen.

Wenn wir nun die IP unserer Maschine erneut eingeben, erscheint die Bitnami-default-page.

Schritt 4: Hochladen und Konfiguration des Projekts

Unsere virtuelle Maschine ist nun fertig konfiguriert und via HTTP kann auch von außen darauf zugegriffen werden. Im nächsten Schritt laden wir unsere Daten hoch. Dazu benötigen wir ein beliebiges SSH- bzw. SFTP-Programm wobei wir für dieses Tutorial PuTTY und WinSCP wählen.

In unserem Programm tragen wir als Host-name jene Adresse ein, die sich unter „SSH-Details“ im Untermenü „kurzer blick“ unserer virtuellen Maschine befindet bzw. unseren Username und Passwort.

A11

Nachdem die Verbindung hergestellt wurde, wechseln wir in das „apps“-directory und legen dort mit rechter Maustaste > „New“ > „Directory“ einen neuen Ordner an, den wir nach unserem Programm benennen (in diesem Tutorial „bueboe“).

A12

Danach klicken wir mit der rechten Maustaste auf den Ordner, wählen „Properties“ aus und setzen dort die Permissions so, dass alle (auch „Others“) volle Berechtigungen haben:

A13

Wir wechseln nun in diesen Ordner und legen darin zwei neue Ordner an, einmal „conf“ und einmal „htdocs“. Im Ordner „conf“ legen wir mit rechte Maustaste > „New“ > „File“ eine neue Datei an, die wir nach unserem Programm mit der Endung „.conf“ benennen, in unserem Beispiel „bueboe.conf“. Wir öffnen diese Datei und kopieren folgenden Inhalt hinein, wobei wir überall das Wort „bueboe“ mit dem jeweils gewählten Programmnamen ersetzen:

    1:  Alias /bueboe/ "/opt/bitnami/apps/bueboe/htdocs/"
    2:  Alias /bueboe "/opt/bitnami/apps/bueboe/htdocs"
    3:  <Directory "/opt/bitnami/apps/bueboe/htdocs">
    4:  Options Indexes MultiViews
    5:  AllowOverride All
    6:  Order allow,deny
    7:  Allow from all
    8:  </Directory>

In den ersten zwei Zeilen wird ein „Alias“ angelegt. Ergeht eine Anfrage an den Server, etwa www.example.com/bueboe, so muss der Ordner „bueboe“ im root-directory liegen, um angezeigt werden zu können. Ist das nicht der Fall, kann die Adresse mittels aliasing auf einen anderen Speicherort gemappt werden. Unsere Software liegt nicht im root-directory sondern in "/opt/bitnami/apps/bueboe/htdocs/", weshalb wie die ersten zwei Zeilen einfügen.

Die darunter liegenden Zeilen ermöglichen genauere Konfigurationen für unser Programm, zum Beispiel besagt die Zeile „Allow form all“, dass von jeder Maschine aus auf unsere Applikation zugegriffen werden kann.

Nun müssen wir Apache noch bekannt geben, dass die gerade angelegte .conf-Datei beim Starten auch berücksichtigt werden soll. Dazu wechseln wir in das übergeordnete Verzeichnis und klicken dort auf „apache2“ (absoluter Pfad: /opt/bitnami/apache2). Dort klicken wir auf den Ordner „conf“ und öffnen die httpd.conf-Datei.

In dieser Datei fügen wir ganz unten die folgende Zeile hinzu, wobei wir wiederum „bueboe“ durch den gewählten Programmnamen ersetzen:

    1:  Include "/opt/bitnami/apps/bueboe/conf/bueboe.conf"

Nun muss der Apache-Server neu gestartet werden, um die Konfiguration zu übernehmen. Wir öffnen dazu PuTTY und geben wiederum - wie in WinSCP - unsere Daten ein. Danach wechseln wir mit

cd /opt/bitnami/

in das Bitnami-Verzeichnis und führen dort mittels

sudo ./ctlscript.sh restart apache

den Neustart des Servers aus.

A14

Unser Server ist nun fertig konfiguriert und wir können unsere Projektdateien in den „htdocs“-Ordner laden. Mein Projekt basiert clientseitig auf ExtJS und bedient sich serverseitig PHP mit Zugriff auf eine MySQL-Datenbank. Da MySQL natürlich schon auf unserem Server installiert ist, können wir durch Eingabe von

sudo mysql -u root –p

in PuTTY den mysql-client mit root-Rechten öffnen. Zunächst wird nach unserem root-Passwort für den Server gefragt, danach nach dem root-Passwort für MySQL, das per default „bitnami“ lautet. Nun können wir neue Datenbanken oder User anlegen bzw. entsprechende Berechtigungen setzen.

Die Datenbank konfiguriere ich in meinem Projekt einfach mittels Aufruf „install.php“-script, in dem sich SQL-Anweisungen befinden (natürlich sollte diese Datei nach der Installation wieder gelöscht werden).

Ist die Datenbank installiert, rufen wir einfach unsere URL inklusive Verzeichnisname (in unserem Beispiel virtuallampmachine.cloudapp.net/bueboe) auf und gelangen direkt zur index.php unseres Programms. In meinem Fall ist nun der Startscreen der Bücherbörse zu sehen, Benutzer können nun Bücher und Benutzer hinzufügen und diese verwalten.

Die Vorteile einer solchen Cloudlösung liegen auf der Hand: Zunächst muss ich mich als Endkunde nicht um Backups kümmern oder gar RAID-Systeme aufsetzen: In Windows Azure sind alle Daten (das inkludiert unsere Programmdateien als auch die Datenbank) mehrfach redundant gespeichert – Datenverlust ist damit so gut wie unmöglich. Außerdem kann ich per Mausklick neue Ressourcen hinzufügen, wenn ich diese benötige, oder wieder löschen, wenn ich andere Pläne haben. „Mein Rechenzentrum“ wächst also so schnell wie ich es möchte ohne das ich mir stets neue Devices oder Festplatten kaufen und in die Umgebung integrieren müsste. Zu guter Letzt lässt sich Windows Azure, wie bereits weiter oben angesprochen hervorragend als Spielwiese für neue Dienste nutzen, sei es um die Kapazitätsgrenzen von Software auszuloten oder temporär einen SVN-Server aufzusetzen, um gemeinsam an einem Softwareprojekt zu arbeiten. In Azure lassen sich Cloud-Dienste von einem Klick auf den anderen starten und auch wieder löschen – je nachdem was man gerade benötigt. Windows Azure ist daher nicht nur für langfristige Hostings von Cloud-Diensten geeignet, sondern auch als Entwicklungs- und Experimentierplattform.