Tag: Amazon EC2


Amazon Spot Instanzen unterstützen nun Auto Scaling und CloudFormation

Die Amazon EC2 Spot Instances können nun auch zusammen mit dem Auto Scaling und der AWS CloudFormation genutzt werden. Das schreibt AWS auf seinem Unternehmensblog. Weiterhin stehen neue Code Beispiele bereit, mit denen gezeigt wird, wie die Amazon SNS genutzt werden können, um sich über Änderungen an den Spot Instance Preisen informieren zu lassen.

Amazon Spot Instances unterstützen nun Auto Scaling und CloudFormation

Auto Scaling mit Spot Instances

Anhand der Auto Scaling Funktion lässt sich jetzt auch die Anzahl der EC2 Spot Instances bei Bedarf automatisch skalieren. Mit Spot Instances bietet ein Kunde auf ungenutzte Amazon EC2 Kapazitäten. Dazu teilt man Amazon mit, welche EC2 Instanz man gerne haben möchte und was man bereit ist dafür zu bezahlen. Anhand von Angebot und Nachfrage wird ein Spot-Preis ermittelt.

AWS CloudFormation mit Spot Instances

EC2 Spot Instances lassen sich zudem nun auch über AWS CloudFormation Templates bereitstellen. Dazu stellt AWS entsprechend drei neue CloudFormation Templates zur Verfügung, um den Einstieg zu vereinfachen. Diese Templates beinhalten bspw. ein Template für die Verwaltung der asynchronen Verarbeitung mit Amazon SQS und Auto Scaling, ein Template für den Lasttest von Webseiten zusammen mit "Bees with Machine Guns" und Auto Scaling sowie einem Template für das Grid Computing in Verbindung mit StarCluster.

Neue Code Beispiele für Amazon SNS

Mit einem neuen Code Beispiel werden zudem nun Möglichkeiten gezeigt, wie man Amazon SNS Benachrichtigungen erstellen und verwalten kann, wenn sich der Status von Amazon EC2 Spot Instanzen oder der Preis von Spot Instanzen in einer bestimmten Region ändert.



AWS veröffentlicht VM Export Service für Amazon EC2

Mit dem AWS VM Import Service ermöglichen die Amazon Web Service den Import unterschiedlicher Virtual Machine Formate nach Amazon EC2, um damit virtualisierte On-Premise Ressourcen in die Amazon Cloud zu migrieren. Wie Jeff Barr auf dem Unternehmensblog berichtet, wurde der Service nun so erweitert, um virtuelle Maschinen von Amazon EC2 in die eigene On-Premise Umgebung zu exportieren.

AWS veröffentlicht VM Export Service für Amazon EC2

Diese Funktion steht mit der neuesten Version der EC2 command line (API) Tools bereit. Ein Export könnte bspw. so aussehen:

ec2-create-instance-export-task –e vmware -b NAME-OF-S3-BUCKET INSTANCE-ID

Hier wird die Instanz ID und der Name eines S3 Buckets benötigt, in dem die exportierte VM gespeichert wird.

Mit dem Befehl ec2-describe-export-tasks kann der Export Prozess überwacht und mit ec2-cancel-export-task gestoppt werden.

Ist der Exportvorgang abgeschlossen, muss das exportierte Image lediglich in die lokale On-Premise Umgebung heruntergeladen werden.

Der Service unterstützt derzeit den Export von Windows Server 2003 (R2) und Windows Server 2008 EC2 Instanzen in das VMware ESX kompatible VMDK Format sowie nach Microsoft Hyper-V VHD oder Citrix Xen VHD Images. Zudem plant AWS in Zukunft weitere Betriebssysteme, Image Formate und Virtualisierungstechnologien zu unterstützen.



Die Amazon Web Services hosten Katalog für Humangenetik in der Cloud

Die Amazon Web Services (AWS) und das U.S. National Institutes of Health (NIH) haben die komplette Datenbank des 1000 Genomes Project als Public Data Set in die Amazon Cloud migriert. Damit haben Wissenschaftler nun ständigen Zugang zu 200 Terabyte an genetischen Daten zur Erforschung von Krankheiten. Ein weiterer idealer Anwendungsfall für Cloud Computing und Big Data.

Die Kooperation, die offiziell während des White House Big Data Summit angekündigt wurde, ermöglicht es Wissenschaftlern kostenlos auf die weltweit größte Sammlung von Daten zur Humangenetik zuzugreifen Bei dem 1000 Genomes Project handelt es sich um ein internationales Forschungsprojekt, das von einem Konsortium bestehend aus 75 Unternehmen und Organisationen koordiniert wird. Das Ziel des Projekts ist die Erstellung des detailreichsten Katalogs von genetischen Variationen bei Menschen.

Dazu hat das Projekt bereits 200 Terabyte an genetischen Daten inkl. DNS Sequenzen von mehr als 1.700 Personen gesammelt, auf die Wissenschaftler nun kostenlos über die AWS Cloud zugreifen können. Das Projekt verfolgt das Ziel die Gene von weltweit über 2.600 Individuen aus 26 Bevölkerungen bereitzustellen. Das 1000 Genomes Project startete 2008 mit ein paar Terabytes an Daten in seine Pilotphase. Bereits 2010 wurde ein kleiner Teil als Public Data Set auf AWS veröffentlicht.

Bei den Amazon Public Data Sets handelt es sich um ein öffentliches zentrales Repository von unterschiedlichen Daten, die auf Amazon S3 und Amazon EBS gespeichert sind. Auf diese Daten kann direkt zugegriffen werden, z.B. über Amazon EC2 oder Amazon EMR (Elastic MapReduce) ohne diese großen Datenmengen auf lokale Server herunterzuladen.

Amazon hat neben dem 1000 Genomes Project ebenfalls Public Data Sets vom NASA Jet Propulsion Laboratory, Langone Medical Center an der New York University, Unilever, Numerate, Sage Bionetworks oder Ion Flux gespeichert.

Die Nutzung der Public Data Sets ist kostenlos. Kosten entstehen für die Verarbeitung der Daten auf der Amazon Cloud wie z.B. Amazon EC2.

In diesem Zusammenhang sehr interessant: Nach der Cloud, wird Amazon auch der Big Data Gigant?

Weiterführende Informationen


Bildquelle: http://www.ige3.unige.ch



Red Hat OpenShift – Ein Blick hinter die Kulissen

Red Hat gehört zweifelsohne zu den bekannten Unternehmen die Plattformen in ihrem Portfolio haben. Zudem haben sie es geschafft das Open Source Konzept in ein rentables Business Model zu überführen. Mit der damaligen Akquisition von JBoss wurde der Weg in den lukrativen Markt der Middleware und Application-Server geebnet. In der Szene gilt der JBoss darüber hinaus zu den Entwickler freundlichen J2EE Application-Server.

RedHat: Von Open-Source zur Open-Cloud

Red Hats Cloud Strategie hat sich mit der Zeit entwickelt. Begonnen hat alles mit der klassischen Virtualisierung basierend auf KVM gefolgt von Red Hat MRG, mit dem Messaging-, Realtime- und Grid-Technologien für Unternehmen angeboten werden. Mit CloudForms erschien dann der erste vollständige IaaS Stack zum Aufbau einer Private Cloud, die im direkten Wettbewerb zu VMware und Microsoft Hyper-V steht. Somit hatet RedHat alle notwendigen Komponenten zusammen, um eine PaaS Angebot zu veröffentlichen: Virtualisierung auf Basis von KVM, Self Service und Private Cloud Möglichkeiten anhand von CloudForms sowie Application Services via JBoss.

Red Hat hat erkannt, dass wenn es im PaaS Bereich erfolgreich sein will, ein mehrsprachiges Angebot in den Markt bringen muss. Die Stärke von Red Hat besteht, unterstützt durch JBoss, in der Java EE Plattform. Durch die Akquisition von Makara wurde ein PaaS Anbieter gekauft, der sich auf PHP und Python Umgebungen spezialisiert hat. Ein kluger Schachzug, da Makara um Java EE erweitert werden konnte, um damit ein PaaS Angebot für Unternehmen anzubieten. Im May 2011 wurde mit OpenShift dann endgültig ein PaaS für Unternehmen veröffentlicht.

OpenShift gibt es in zwei unterschiedlichen Varianten: Express und Flex.

OpenShift Express ist ein kostenloses Angebot für Entwickler, dass zwar über keine graphische Managementoberfläche verfügt, aber eine Reihe von Sprachen wie Java, Perl, PHP, Python und Ruby unterstützt. Die Anwendungen werden in einer Shared-Umgebung betrieben und können über diverse Kommandozeilentools deployed werden. Die Möglichkeiten die einem Entwickler zur Verfügung stehen sind recht umfangreich. OpenShift Express unterstützt neben GIT Deployments eine gute Auswahl an Sprachen und Datenbanken.

OpenShift Flex läuft auf Amazon EC2 und benötigt die AWS Anmeldedaten, um Deployments von Anwendungen vorzunehmen. Während der 30 tägigen Probezeit werden die AWS Anmeldaten nicht benötigt und ermöglichen für diesen Zeitraum die kostenlosen Nutzung. OpenShift Flex ist für Unternehmen und Anwendungen mit einer Hochverfügbarkeit gedacht. Dazu werden neben dem JBoss Application Server ebenfalls der Apache Web Server, Apache Tomcat, MySQL, PHP, Zend Framework, Java, Memcached, Membase, Infinispan, MRG Messaging und MongoDB unterstützt. Die Architektur von OpenShift Flex wurde für Cloud Skeptiker entwickelt. Das bedeutet, das Flex technisch auf mehreren Public Cloud Anbietern und ebenfalls innerhalb eines eigenen Private PaaS eingesetzt werden kann.



openQRM integriert Ubuntu Enterprise Cloud, Amazon EC2 und Eucalyptus

Gesponsert durch die openQRM Enterprise, veröffentlicht das openQRM project ein neues Plugin, das Hybrid Cloud Computing ermöglicht.

Mit dem Plugin erhalten openQRM Nutzer nun die Möglichkeit, ihre selbst verwalteten Systeme transparent und vollautomatisiert zwischen Private und Public Clouds zu migrieren. Das Importieren bereits vorhandener Cloud Instanzen aus der Ubuntu Enterprise Cloud (UEC), Amazon EC2 oder Eucalyptus kann damit ohne großen Aufwand erfolgen. Dasselbe gilt ebenso für den Export der Systeme aus der openQRM Cloud heraus. Cloud Transparenz! Über die graphische Web Oberfläche können alle dafür benötigten Schritte der Migration durchgeführt werden. Damit können dem eigenen Rechenzentrum nach Bedarf externe Ressourcen von Public Cloud Anbietern hinzugefügt werden.

Durch die Nutzung einer agilen Privat zu Public oder Public zu Private Migration, kann damit kontrolliert werden, welche Daten und Dienste in einem sicheren Bereich bereitgestellt werden sollen. Somit können sensible Systeme innerhalb des eigenen Rechenzentrums betrieben und alle weiteren ressourcenintensiven Systeme zu Cloud Anbietern verlagert werden.

Ein Überblick über die neuen Funktionen zeigt das Video am Ende dieses Artikels.

Für alle die einen tieferen Einblick in eine Hybrid Cloud Lösung haben möchten, stellt openQRM Enterprise ein detailliert beschriebenes How to auf ihren Webseiten zur Verfügung. Dieses kann hier heruntergeladen werden.

Das Plugin steht bereits auf der Seite des openQRM project unter http://sourceforge.net/projects/openqrm zum Download bereit.



Was bei der Nutzung von EC2 Instanzen zu beachten ist

Nachdem eine AMI gestartet wurde steht eine sogenannte Instanz bereit, die sich im Status "running" befindet. Eine Instanz die zentrale Komponente, wenn es darum geht, in der Amazon Cloud Daten zu verarbeiten. Dazu stellt Amazon mehrere unterschiedliche Instanz Typen für unterschiedliche Einsatzszenarien zur Verfügung.

Für die bestmögliche Nutzung von Amazon EC2 Instanzen sollten folgende Hinweise beachtet werden:

  • Wichtige und langfristig benötigte Daten sollten nicht auf dem lokalen Instanzspeicher abgelegt werden.
    Wenn eine Instanz ausfallen sollte, sind die Daten auf dem lokalen Speicher nicht mehr vorhanden. Das kann umgangen werden, indem eine Replikationsstrategie angewendet wird, bei der die Daten über mehrere Instanzen repliziert werden. Weiterhin kann Amazon S3 oder Amazon EBS für das dauerhafte Speichern von Daten verwendet werden.
  • Erstellen von Images die regelmäßig für eine bestimmte Aufgabe benötigt werden.
    Für den Einsatz von Web Anwendungen wird z.B. ein Image für Datenbank Instanzen und ein weiteres für Web Server Instanzen erstellt.
  • Überwachen des Zustands der Instanzen
    Das kann z.B. mit Amazon CloudWatch vorgenommen werden.
  • Die Firewall Regeln von Amazon EC2 sollten so restriktiv wie möglich sein.
    Es sollten zunächst nur die Berechtigungen vergeben werden, die auch tatsächlich benötigt werden. Weiterhin sollten für alle Instanzen mit unterschiedlichen Sicherheitsanforderungen separate Security Groups erstellt werden. Es sollten ggf. zusätzliche Sicherheitsmaßnahmen innerhalb einer Instanz getroffen werden, z.B. der Einsatz der eigenen Firewall. Für den SSH Zugriff auf eine bestimmte Instanz sollte eine Bastion Group erstellt werden, die ausschließlich einen externen Login erlaubt. Alle weiteren Instanzen sollten einer Security Group zugewiesen werden die einen externen Login verbietet.

Quelle




Amazon stellt Cluster Compute Instanzen für Amazon EC2 bereit

Amazon gibt mit dem heutigen Tag einen neuen Instanz Typ für ihre Amazon Elastic Compute Cloud (EC2) bekannt. Dabei handelt es sich um einen Typ, der speziell für Anwendungen aus dem High-Performance Computing (HPC) konzipiert wurde. Damit haben Nutzer von Amazon EC2 nun die Möglichkeit, eine große Menge von komplexen Daten und rechenintensiven Aufgaben, die eine hohe Auslastung bedeuten, wie z.B. Finanzdienstleistungen, zu verarbeiten.

Der Vorteil der Cluster Compute Instanzen besteht darin, dass diese so entwickelt wurden, deutlich mehr Rechenleistung als die bisherigen Amazon EC2 Instanz Typen bereitzustellen. Weiterhin können Cluster Compute Instanzen in Cluster gruppiert werden, wodurch Anwendungen von der geringeren Netzwerklatenz und der höheren Performanz zwischen den einzelnen Nodes, durch eine bessere und schnellere Kommunikation, profitieren.

Jede Cluster Compute Instanz besteht aus einem Paar von Quad-Core Intel "Nehalem" X5570 Prozessoren, mit einer maximalen Anzahl von 33,5 ECU (EC2 Compute Units), 23 GB RAM und 1690 GB lokalen Instanzspeicher. Der Preis beträgt $1.60 pro Stunde.

Die EC2 API, die Kommandozeilen Tools, sowie die AWS Management Console wurden bereits aktualisiert, um das Erstellen von Cluster Gruppen zu erstellen.

Die folgenden Befehle erstellen eine Placement Group mit dem Namen biocluster. Anschließend werden 8 Cluster Compute Instanzen innerhalb dieser Gruppe gestartet.

$ ec2-create-placement-group biocluster -s cluster

$ ec2-run-instances ami-2de43f55 --type cc1.4xlarge --placement-group biocluster -n 8


Peecho's Printcloud – Printing as a Service

Mit der Printcloud bietet das Unternehmen Peecho aus den Niederlanden einen Cloud Service, mit der ein einheitlicher Zugang zu allen Druckumgebungen auf der ganzen Welt ermöglicht wird. Es reicht dafür aus, lediglich eine eigene Benutzerschnittstelle zu erstellen. Der Rest wird von der Printcloud auf Basis von pay-per-use und ohne eine erforderliche Menge abgewickelt. Der gesamte Prozess vom Auftragseingang über die Verarbeitung bis hin zur Produktion und dem Versand von personalisierten Produkten wird von der Printcloud übernommen.

Was bietet die Printcloud?

  • Grafik-Design
    Vollständige Unterstützung von Adobe Indesign IDML. Weltweit kann jeder Graphikdesigner für ein Unternehmen, dass die Printcloud nutzt, Produkte entwerfen.
  • Einfache Konnektivität
    Mit Hilfe der REST API kann sich jede Anwendung (z.B. eine Webseite, eine mobile Anwendung, eine Desktop Anwendung oder ein Gadget eines Sozialen Netzwerks) mit der Printcloud verbinden.
  • Software
    Programme stehen für das iPhone und Adobe Flex zur Verfügung.
  • Skalierbarkeit
    Auf Grund von Cloud Computing Technologien können die Kapazitäten in wenigen Minuten erhöht werden, wodurch kein Engpass entsteht.
  • Weltweite Produktion
    Auf Basis von Druckstandards wie JDF und JMT kommuniziert die Printcloud mit einem weltweiten Netzwerk von Druckumgebungen, um das endgültig gedruckte Produkt so nah wie möglich am Ziel der Auslieferung zu produzieren und dadurch die Versandkosten zu minimieren.
  • Faire Abbrechung
    Es müssen keine langfristigen Verträge eingegangen werden was ebenfalls bedeutet, dass Terminierungsentgelte, Vorab-Investitionen oder Einrichtungskosten entstehen. Die Abbrechnung erfolgt vollständig auf einer pay per use Basis. Es wird also tatsächlich nur das bezahlt, was genutzt wird.

Funktionen

  • Produktkatalog
    Es steht ein Produktkatalog für Anwendungen/ Produkte von Kunden bereit, die schnell erstellt werden können.
  • Produktvorlagen
    Schnelle Erstellung von Produktvorlagen durch die Nutzung von Adobe InDesign IDML.
  • Einkaufswagen
    Es können mehrere Produkte in einer Bestellung zusammengefasst werden.
  • Abbrechnung
    Die Rechnungsstellung an die Endkunden kann von der Printcloud ebenfalls übernommen werden.
  • Gutschein-Codes
    Für werden mobile Zahlungen oder Marketing-Kampagnen können Gutschein-Codes erstellt werden.
  • Status-Updates
    Der Status des gesamten Prozessverlaufs kann zu jederzeit mittels einer eigens entwickelten Anwendung oder via der Webseite der Printcloud dem Endkunden angezeigt werden.

  • REST API
    Zur Kommunikation steht eine REST API zur Verfügung.
  • iPhone
    Hilfe bei der Entwicklung einer iPhone Anwendung für eigene Produkte mittels der Printcloud Open Source iPhone Anwendung.
  • Adobe Flex
    Vollständige Unterstützung von Adobe Flex.
  • Skalierbarkeit
    Hohe Skalierbarkeit und Verfügbarkeit durch Cloud Computing Technologien.
  • Weltweite Produktion
    Mit der Printcloud kann jede Druckumgebung auf der ganzen Welt angesprochen werden.

Technik

Die Printcloud Plattform basiert vollständig auf der Architektur der Amazon Web Service.

  • Simple Storage Service
    Alle Daten werden in Amazons Cloudspeicher Simple Storage Service (S3), wodurch eine unbegrenzte Menge an Daten verwaltet und gespeichert werden kann und von überall aus verfügbar ist.
  • Elastic Compute Cloud
    Das Versprechen der Skalierbarkeit realisiert die Printcloud durch den Einsatz von Amazons Elastic Compute Cloud (EC2), mit der je nach Bedarf die Systeme erweitert oder verkleinert werden können und damit saisonale Lastspitzen abgefangen werden können.
  • Simple Queue Service
    Mit dem Amazon Simple Queue Service (SQS) werden die einzelnen Prozesse der Printcloud separiert, wodurch kein neuer Auftrag den gesamten Prozess stören kann.
  • Relational Database Service
    Mit dem Relational Database Service (RDS) steht der Printcloud eine skalierbare Datenbank in der Cloud zur Verfügung.
  • Cloudfront
    Mit Amazon CloudFront werden die benötigten Daten eines Druckauftrags der am nächsten gelegenen Druckumgebung des Auslieferungsorts bereitgestellt.

Für Druckereien

Die Printcloud stellt Anwendungen von Drittanbietern (Händlern) eine REST API für die Kommunikation bereit. Der gesamte Prozess vom Auftragseingang über die Verarbeitung bis hin zur Produktion und dem Versand von personalisierten Produkten wird von der Printcloud für den Händler übernommen.

Aus der Sicht einer Druckerei arbeitet Peecho als eine Art Broker für die eigenen Produkte. Dazu steht ein einziger Einstiegspunkt zur Verfügung, wodurch Peecho's Partner ihren Kunden jegliche Art von Produkt anbieten können. Diese Produkte können in verschiedenen Produktionsstätten auf der ganzen Welt hergestellt werden.

Die Infrastruktur basiert vollständig auf den Amazon Web Services, wobei Technologien wie Elastic Load Balancing und Auto-Scaling genutzt werden, um innerhalb von wenigen Minuten die Skalierung der Systeme vorzunehmen.

Der (Kommunikations)-Prozess zwischen einem Partner und der Printcloud funktioniert wie folgt:

Die Ausgabe der Printcloud für 2D Drucker basiert auf den folgenden Elementen:

  • Job Ticket in JMF (Job Messaging Format) und JDF (Job Definition Format).
  • Produktbeschreibung als Adobe Indesign IDML (InDesign Markup Language).

Die Bestellungen werden dabei nicht direkt zu den Druckereien geschickt, um diese nicht zu überlasten. Vielmehr basiert der gesamte Vorgang auf dem Pull Mechanismus, wodurch die Druckereien die Möglichkeiten haben, die Arbeitslast selber zu bestimmen und können die Aufträge in ihren Produktionsfluss integrieren.

  • Erster Schritt: Ein Jobticket beziehen
    Jeder Job wird einer Druckerei in einer eigenen Amazon SQS Job Ticket Queue abgelegt. Diese können z.B. mittels SOAP abgefragt werden. Das Job Ticket basiert auf einer kleinen XML Datei, in der ein Zeiger auf die Produktionsdatei und die Produkbeschreibung zeigt. Mit der JDF Datei kann die Druckerei entscheiden, wann und wie das Produkt gedruckt werden soll.

    Ist das Ticket von der Druckerei heruntergeladen worden, wird der Status des Tickets auf "Queue" gesetzt, was gleichermaßen bedeutet, dass der Auftrag in Produktion ist.

  • Zweiter Schritt: Das Produkt erhalten
    Jedes Job Ticket zeigt zusätzlich auf einer Produktdatei, die in Amazon S3 gespeichert ist. Auf diesen Service kann mit SOAP oder REST mittels eines Schlüssels oder direkt mit einer URL zugegriffen werden. Abhängig von der Job Beschreibung kann die Druckerei die Produktdatei herunterladen, wenn sie bereit sind zu produzieren.
  • Dritter Schritt: Produzieren, Versenden und auf "versendet" setzen
    Jetzt kann die Druckerei die IDML Datei in ein für sie passendes Format übersetzen, wie z.B. PDF oder PPML. Die Druckerei produziert das Produkt und versendet es an die Empfänger. Anschließend wird der Status des Job Tickets auf "versendet" gesetzt.

    Für die ersten Schritte wird eine Open Source Beispielanwendung bereitgestellt, die Job Tickets und Produkt Dateien aus der Printcloud in einen bestimmten Ordner herunterlädt.

Quelle

  • PRINTCLOUD by Peecho



Skalierung eines Cluster mit Amazon EC2

Dieses Beispiel zeigt welche Komponenten erstellt und konfiguriert werden müssen, um einen Mini Cluster innerhalb eines privaten Netzwerks unter der Verwendung von NIS und NFS aufzubauen. Zusätzlich werden externe Amazon EC2 Nodes per VPN mit dem Server verbunden und am Ende der Cluster mittels der Sun Grid Engine (SGE) aufgebaut.

Architektur

Folgende technische Voraussetzungen werden benötigt:

  • Das private Netzwerk darf nur über ein VPN erreichbar sein, damit die Nodes die sich darin befinden vollständig isoliert sind.
  • Der Server muss NFS, NIS und VPN unterstützen.
  • Die internen Nodes müssen den NFS und NIS Dienst automatisch vom Server starten.
  • Die externen Nodes sind von Amazon EC2.
  • Die externen Nodes müssen automatisch eine Verbindung in das VPN aufbauen und den NFS und NIS Dienst vom Server starten.

Auf Basis dieser Anforderungen werden 3 Images benötigt.

  • 2 Xen Images - einen Server und einen internen Node
  • 1 Amazon Machine Image (AMI) von Amazon EC2 mit derselben Konfiguration wie der interne Node.

Die Konfigurationen sehen in diesem Beispiel wie folgt aus:

Server

  • Private IP-Adresse: eth0 10.1.1.99
  • Öffentliche IP-Adresse: eth1 147.96.1.100
  • Hostname: oneserver

Xen Node (lokal)

  • Private IP-Adresse: eth0 10.1.1.55
  • Hostname: local01

Amazon EC2 Node (IP-Adress Bereich: 10.1.1.100 bis 10.1.1.254)

  • VPN IP-Adresse: tap0 10.1.1.100 (wird durch den VPN Server vergeben)
  • Öffentliche IP-Adresse: eth0 - wird automatisch von Amazon vergeben
  • Hostname: workernode0

Konfiguration

Konfiguration der Images

Nun wird eine Kopie des Image erstellt und die /etc/hostname und /etc/network/interfaces für den Server (oneserver) editiert. Eine weitere Kopie des Image dient als Node, die oben genannten Dateien müssen für diesen ebenfalls angepasst werden. Nach dem unmount der Images werden diese mit Xen gestartet. Für die Konfiguration von NFS und NIS helfen die beiden nachfolgend verlinkten Howtos.

Bei der Konfiguration des VPN Server ist darauf zu achten, dass alle Clients die Zertifikate doppelt verwenden können. Das liegt daran, da keine separaten Amazon EC2 Instanzen erstellt werden sollen und es sich bei den EC2 Instanzen daher um dieselben handelt. Dazu muss in der Konfigurationsdatei von OpenVPN /etc/openvpn/server.conf in Zeilt "duplicate-cn" eingefügt werden. Die Konfiguration von OpenVPN findet nur auf dem Server statt. Eine Howto für die Konfiguration von OpenVPN ist unter dem folgenden Link zu finden.

Für das Erstellen eines Amazon Machine Images wird der Befehl bundle benötigt, dazu kann der lokale Node genutzt werden. Weiterhin muss der VPN Client und die Sun Grid Engine installiert und konfiguriert werden. Auf dem schnellsten Wege sollte das funktionieren, indem eine Kopie des lokalen Node erstellt und konfiguriert wird, anschließend wird es mit dem Befehl ec2-bundle-image gebündelt.

Während des Boot-Vorgangs wird nun noch ein Skript benötigt, in welchem der IP-Adressbereich von OpenVPN für die Amazon EC2 Instanzen von 10.1.1.100 bis 10.1.1.254 reserviert wird. die Konfiguration erfolgt in der /etc/hosts auf dem Server (oneserver).

EC2 Konfiguration mit OpenNebula

Nach der Konfiguration werden nun die Templates benötigt, um die Maschinen zu starten. Für alle lokalen Maschinen wie den oneserver und die Nodes wird jeweils ein Template benötigt, für die EC2 Maschinen reicht ein Template aus.

clouduser@machine:bin$ ec2-describe-images
IMAGE ami-e4a94d8d one-w2/image.manifest.xml 587384515363 available private i386 machine
IMAGE ami-cdb054a4 sge-dolphin/image.manifest.xml 587384515363 available private i386 machine
IMAGE ami-d8b753b1 sge-parrot/image.manifest.xml 587384515363 available private i386 machine
IMAGE ami-dcb054b5 sge-squirrel/image.manifest.xml 587384515363 available private i386 machine

Auf Basis des Images "ami-dcb054b5" wird das EC2 Template erstellt.

CPU=1

MEMORY=1700

EC2=[ AMI="ami-dcb054b5", KEYPAIR="gsg-keypair", ELASTICIP="75.101.155.97", INSTANCETYPE="m1.small", AUTHORIZED_PORTS="22-25"]

REQUIREMENTS = 'HOSTNAME = "ec2"'

Deployment und Tests

Um den Test zu starten muss zunächst OpenNebula gestartet und der EC2 Host hinzugefügt werden.

clouduser@machine:one$ one start
oned and scheduler started
lgonzalez@machine:one$ onehost create ec2 im_ec2 vmm_ec2
lgonzalez@machine:one$ onehost list
HID NAME RVM TCPU FCPU ACPU TMEM FMEM STAT
0 ec2 0 0 100 on

Als nächstes wird die EC2 Instanz gestartet.

clouduser@machine:one$ onevm create ec2.template
ID: 0

Die virtuelle Maschine wird später automatisch auf Amazon EC2 bereitgestellt.

clouduser@machine:one$ onevm list
ID NAME STAT CPU MEM HOSTNAME TIME
0 one-0 pend 0 0 00 00:00:05
lgonzalez@machine:one$ onevm list
ID NAME STAT CPU MEM HOSTNAME TIME
0 one-0 boot 0 0 ec2 00 00:00:15

Mittels onevm show id können alle Informationen eingesehen werden.

clouduser@machine:one$ onevm show 0
VID : 0
AID : -1
TID : -1
UID : 0
STATE : ACTIVE
LCM STATE : RUNNING
DEPLOY ID : i-1d04d674
MEMORY : 0
CPU : 0
PRIORITY : -2147483648
RESCHEDULE : 0
LAST RESCHEDULE: 0
LAST POLL : 1216647834
START TIME : 07/21 15:42:47
STOP TIME : 01/01 01:00:00
NET TX : 0
NET RX : 0

....: Template :....
CPU : 1
EC2 : AMI=ami-dcb054b5,AUTHORIZED_PORTS=22-25,ELASTICIP=75.101.155.97,INSTANCETYPE=m1.small,KEYPAIR=gsg-keypair
IP : ec2-75-101-155-97.compute-1.amazonaws.com
MEMORY : 1700
NAME : one-0
REQUIREMENTS : HOSTNAME = "ec2"

In diesem Beispiel ist die EC2 Instanz über die Adresse ec2-75-101-155-97.compute-1.amazonaws.com zu erreichen.

Nun muss geprüft werden, ob alle virtuellen Maschinen im Cluster gestartet sind. Es existiert eine lokale virtuelle Maschine auf Basis von Xen (local01) und eine von Amazon EC2 (workernode0).

oneserver:~# qstat -f
queuename qtype used/tot. load_avg arch states
----------------------------------------------------------------------------
all.q@local01 BIP 0/1 0.05 lx24-x86
----------------------------------------------------------------------------
all.q@workernode0 BIP 0/1 0.04 lx24-x86
----------------------------------------------------------------------------

Um den Cluster zu testen können ein paar Jobs mittels qsub an die Sun Grid Engine geschickt werden.

oneserver:~# qsub test_1.sh; qsub test_2.sh;

Nun ist zu sehen, welche Jobs im Hybrid Cluster geplant und gestartet sind.


clouduser@oneserver:~$ qstat -f
queuename qtype used/tot. load_avg arch states
----------------------------------------------------------------------------
all.q@local01 BIP 0/1 0.02 lx24-x86
----------------------------------------------------------------------------
all.q@workernode0 BIP 0/1 0.01 lx24-x86
----------------------------------------------------------------------------
############################################################################
- PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS - PENDING JOBS
############################################################################
1180 0.00000 test_1.sh clouduser qw 07/21/2008 15:26:09 1
1181 0.00000 test_2.sh clouduser qw 07/21/2008 15:26:09 1

clouduser@oneserver:~$ qstat -f
queuename qtype used/tot. load_avg arch states
----------------------------------------------------------------------------
all.q@local01 BIP 1/1 0.02 lx24-x86
1181 0.55500 test_2.sh clouduser r 07/21/2008 15:26:20 1
----------------------------------------------------------------------------
all.q@workernode0 BIP 1/1 0.07 lx24-x86
1180 0.55500 test_1.sh clouduser r 07/21/2008 15:26:20 1
----------------------------------------------------------------------------

Es können beliebig viele externe Amazon EC2 Instanzen automatisch zum Cluster als Nodes hinzugefügt werden und damit die Skalierbarkeit dynamisch erhöht werden.

Quelle



Skalierung von Web-Servern auf Amazon EC2

Dieses Beispiel zeigt, wie eine skalierbare Web Anwendung auf einer virtuellen Infrastruktur bereitgestellt wird. Um dies zu erreichen wird ein Load Balancer als Master Node für diese Web Anwendung eingesetzt. Hinter dem Load Balancer werden Slave Nodes eingesetzt, die über eine Kopie dieser Web Anwendung verfügen, für den Fall, dass eine Anfrage zu ihnen weitergeleitet wird. Die Leistung (Anfragen pro Sekunde) der Web Anwendung kann durch das Starten oder Herunterfahren von virtuellen Instanzen, die als Nodes des Load Balancer dienen, dynamisch erhöht oder verringert werden.

Ein Teil dieses Beispiels zeigt, wie Remote Nodes (Amazon EC2) eingesetzt werden, wenn die lokale Infrastruktur (auf Basis von Xen) ausgelastet ist.

Architektur

Folgende Komponenten werden für den Aufbau der virtuellen Infrastruktur genutzt:

  • Ein NGinx Server als Load Balancer - zur Aufteilung der Anfragen an die Webserver.
  • Mehrere NGinx Server als Webserver (die einzelnen Nodes des Load Balancer), die jeweils auf einer virtuellen Maschine ausgeführt werden.

Mit den folgenden Eigenschaften:

  • Die virtuellen Maschinen, auf welchen die Webserver ausgeführt werden, können sich lokal (auf dem Xen Hypervisor innerhalb der lokalen Infrastruktur) oder remote (auf Amazon EC2 Instanten) befinden.
  • Die Verwaltung (Monitoring, Deployment, Miration, ...) der virtuellen Maschinen wird mit OpenNebula vorgenommen.

Die obere Graphik beschreibt folgende Eigenschaften:

  • Die grünen Pfeile stehen für Web-Anfragen durch die Web-Clients an den Load Balancer.
  • Die roten Pfeile sind die Anfragen der Web-Clients, die von dem Load Balancer an die Webserver weitergeleitet werden.
  • Die orangen Pfeile stehen für das Monitoring und der Verwaltung durch den Virtual Machine Manager (OpenNebula).

Durch das dynamische Bereitstellen und Hinzufügen weiterer virtueller Webserver zu dem Load Balancer, verfügt diese Infrastruktur über eine hohe Fehlertoleranz, Verfügbarkeit und Skalierbarkeit. Darüber hinaus unterstützt die (virtuelle) Infrastruktur zwei unterschiedliche Virtualisierungs-Technologien (Xen und Amazon EC2), wodurch eine Erweiterung der lokalen Infrastruktur durch eine externe Infrastruktur möglich ist.

Konfiguration
Zunächst muss OpenNebula für das Deployment der virtuellen Infrastruktur konfiguriert werden. Weiterhin muss NGinx auf die Systeme installiert werden, die später den Load Balancer und die Webserver beherbergen sollen. Das Vorgehen dazu ist in dem folgenden Howto beschrieben.

Für die Konfiguration des Load Balancer gelten dieselben Schritte wie in dem oben genannten Howto. Als Konfigurationsdatei kann die nachfolgend aufgeführte genutzt werden. Hier ist der Host definiert, der als Load Balancer verwendet wird und welche Auswahlmethode (round-robin, gewichtet) genutzt werden soll.


clouduser@machine:one$ vim nginx.conf

user www-data;
worker_processes 1;
error_log /var/log/nginx/error.log;
pid /var/run/nginx.pid;
events {
worker_connections 1024;
}
http {
include /etc/nginx/mime.types;
default_type application/octet-stream;
access_log /var/log/nginx/access.log;
sendfile on;
keepalive_timeout 65;
tcp_nodelay on;
gzip on;
server {
listen 80;
server_name localhost;
access_log /var/log/nginx/localhost.access.log;
location / {
proxy_pass http://one_loadbalancer;
}
}
upstream one_loadbalancer {
server 10.1.1.11:80 ;
server 10.1.1.22:80 ;
server 10.1.1.33:80 ;
server 10.1.1.44:80 ;
}
}

Im Bereich upstream der Konfigurationsdatei werden die virtuellen Webserver definiert, auf welche die Anfragen für den Lastausgleich aufgeteilt werden. Hier müssen ggf. weitere virtuelle Webserver hinzugefügt werden.

In diesem Beispiel haben die Webserver die IP-Adressen 10.1.1.11, 10.1.1.22, 10.1.1.33 und 10.1.1.44. Damit können also vier Nodes verwendet werden.

Der Load Balancer verfügt über:

  • eine private IP-Adresse für die Kommunikation mit den Nodes im privaten Netzwerks. (in diesem Beispiel 10.1.1.99)
  • eine öffentliche IP-Adresse für die Kommunikation mit den Web-Clients und den Amazon EC2 Instanzen.

Die Amazon EC2 haben öffentliche IP Adressen und kommunizieren mit OpenNebula und dem Load Balancer über das Internet.

Um OpenNebula für die Kommunikation mit Amazon EC2 zu konfigurieren und die Instanzen mit NGinx bereitzustellen sind folgende Schritte notwendig.

Jetzt können die Templates für die lokalen und remote Machinen erstellt werden.

Für den Load Balancer wird folgendes Template verwendet:

clouduser@machine:one$ cat xen.loadbalancer
CPU = 0.5
MEMORY = 128
OS = [kernel="/boot/vmlinuz",initrd= "/boot/initrd",root="sda1" ]
DISK = [source="/images/loadbalancer.disk",target="sda",readonly="no"]

Die lokalen Maschinen verwenden diese Templates:

clouduser@machine:one$ cat xen.local01
CPU = 0.5
MEMORY = 128
OS = [kernel="/boot/vmlinuz",initrd= "/boot/initrd",root="sda1" ]
DISK = [source="/images/local01.disk",target="sda",readonly="no"]

Die Pfade zu den Images und dem Kernel müssen entsprechend der eigenen Umgebung angepasst werden. Aus den Images können beliebig viele Klone für die lokalen Nodes erstellt werden.

Die folgenden Templates werden für die remote Maschinen (Amazon EC2) verwendet.

clouduser@machine:one$ cat ec2.template
CPU=1
MEMORY=1700
EC2=[
AMI="ami-yao044b1",
KEYPAIR="gsg-keypair",
INSTANCETYPE="m1.small",
AUTHORIZED_PORTS="22-25"
]
REQUIREMENTS = 'HOSTNAME = "ec2"'

Die Parameter AMI Identifier, Key-Pair, Memory etc. müssen entsprechend der eigenen Umgebung angepasst werden.

Deployment und Test

Jetzt wird der virtuelle Cluster initialisiert. Zunächst wird der OpenNebula Daemon gestartet und mit dem onehost Befehl eine Host in die Liste der Ressourcen aufgenommen.

clouduser@machine:one$ one start
oned and scheduler started
clouduser@machine:one$ onehost create ec2 im_ec2 vmm_ec2
clouduser@machine:one$ onehost create ursa03 im_xen vmm_xen

Anschließend werden die virtuellen Maschinen mit dem onevm Befehl erstellt.

clouduser@machine:one$ onevm create xen.loadbalancer
ID: 0
clouduser@machine:one$ onevm create xen.local01
ID: 1
clouduser@machine:one$ onevm create xen.local02
ID: 2
clouduser@machine:one$ onevm create xen.local03
ID: 3
clouduser@machine:one$ onevm create xen.local04
ID: 4
clouduser@machine:one$ onevm create ec2.template
ID: 5
clouduser@machine:one$ onevm create ec2.template
ID: 6
clouduser@machine:one$ onevm create ec2.template
ID: 7
clouduser@machine:one$ onevm create ec2.template
ID: 8

Mit dem onevm Befehl kann anschließend der Status der Instanzen überprüft werden.

clouduser@machine:one$ onevm list
ID NAME STAT CPU MEM HOSTNAME TIME
0 one-0 runn 12 512 ursa03 00 00:01:15
1 one-1 runn 8 512 ursa03 00 00:01:11
2 one-2 runn 10 512 ursa03 00 00:01:10
3 one-3 runn 11 512 ursa03 00 00:01:02
4 one-4 runn 23 512 ursa03 00 00:00:51
5 one-5 runn 0 512 ec2 00 00:00:48
6 one-6 runn 0 512 ec2 00 00:00:48
7 one-7 runn 0 512 ec2 00 00:00:45
8 one-7 runn 0 512 ec2 00 00:00:43

Nachdem alle virtuellen Maschinen gestartet sind, kann der Load Balancer die Anfragen der Webclients annehmen. Nun muss noch für jede virtuelle Maschine die IP-Adresse in die /etc/nginx/nginx.conf eingetragen werden. Darüber wird dem NGinx Load Balancer mitgeteilt welcher Node bereit ist.

Die Leistung der Webanwendung kann durch das Hinzufügen weiterer lokaler oder Amazon EC2 Nodes mittels xen.localXX oder ec2.template und der Aktualisierung der Load Balancer Konfigurationsdatei erhöht werden.

Das Hinzufügen kann durch die Entwicklung eines Service Managers automatisiert werden.

Quelle