Immer mehr Firmen zieht es in die Cloud und die Nutzung von Public-, Private- und Hybrid-Clouds gehört längst zum Alltag. Im Juli befasst sich ... (mehr)

Rollen als Bausteine für Cloud-Anwendungen

Bevor Sie eine Infrastruktur in der Cloud starten können, müssen Sie entweder vorab oder beim Einrichten einer "Farm" die nötigen "Rollen" anlegen. Diese sind im Gegensatz zur üblichen IT-Terminologie keine Berechtigungskonzepte, sondern funktionale Zuschreibungen wie "Webserver", "Load Balancer", "Datenbank" und so weiter. Gleichzeitig dienen die Rollen zur Abstraktion von der konkreten Umsetzung des Konzepts in einer spezifischen Cloud: Einer Webserver-Rolle kann also in Scalr für die Google-Cloud ein anderes Image zugewiesen sein als für die Amazon Web Services. Zum Anlegen einer Rolle in AWS (unser Testfall) startet Scalr eine Instanz, installiert die passende Software und erstellt schließlich einen Snapshot. Dementsprechend sind vorhandene Rollen mit Kosten verbunden, denn den mit den Snapshots verbundenen EBS-Speicherplatz müssen Sie bezahlen, ebenso die Rechenzeit der dafür gestarteten Instanzen.

Um Rollen anzulegen, klicken Sie erst oben auf den Menüpunkt "Roles" und dann auf den grünen Button "New Role". Scalr präsentiert dann drei Optionen: New Role, Role from non-Scalr server und Role builder. Die beiden ersten Optionen setzen laufende Instanzen beziehungsweise vorhandene Images voraus, also gehen wir hier den Weg über das dritte Angebot, das eine Art Wizard darstellt, der dabei hilft, eine Rolle anzulegen.

Nun bietet Scalr die in einer Cloud vorhandenen Regionen und die dort verfügbaren Basis-Betriebssystem-Images an. Wählen Sie beispielsweise "eu-central-1 (Frankfurt)" reduziert sich das Angebot an Images bereits erheblich. Wir wählen "Ubuntu 14.04 Trusty" aus. Jetzt zeigt Scalr auf der rechten Seite die darauf basierende Anwendungssoftware an, etwa MySQL, MariaDB, Apache, Nginx, HAProxy und noch ein paar andere. Wenn Sie nun noch im oberen Teil des Fensters einen Namen für die Rolle eingeben, können Sie auf "Create" klicken und abwarten, ob alles wie erwartet funktioniert (Bild 4).

Im Test schlug das Erstellen von Rollen reproduzierbar fehl, denn der Scalr-Server konnte die gestarteten Instanzen nicht per SSH erreichen. Wir behoben das Problem, indem wir manuell die mit den Instanzen verknüpfte (von Scalr in AWS angelegte) Security Group direkt in der AWS Management Console editierten und den SSH-Zugang für alle IP-Adressen öffneten. Alternativ lassen sich Security Groups auch in Scalr bearbeiten. Anschließend konnte Scalr sich mit der VM verbinden, den Snapshot erstellen und damit das Erzeugen der Rolle abschließen. Dabei sollten Sie etwas Geduld mitbringen, denn eine neue Rolle anzulegen, dauert mindestens eine Viertelstunde. Die kommerzielle Scalr-Version vereinfacht den Umgang mit Rollen dahingehend, dass sie bereits viele fertige Rollen anbietet.

Die von Scalr installierten Rollen umfassen übrigens neben der verwendeten Software auch eine Agenten-Software namens Scalarizr (siehe "/opt/scalarizr"), die bei der Integration in die Management-Umgebung hilft. Der in neuen Scalr-Versionen integrierte Discovery Manager erlaubt es außerdem, auch Instanzen in das Management aufzunehmen, die nicht mit Scalr angelegt wurden. Um sich auf einer von Scalr gemanagten Instanz einzuloggen, benötigen Sie den entsprechenden SSH Private Key, den Sie im Scalr-Menü unter "SSH Keys" finden. Außerdem muss die zugewiesene Security Group das SSH-Login über Port 22 erlauben.

Farms sind Gruppen von Rollen, die zusammen eine Cloud-Anwendung bilden. Auch dies ist abstrakt, denn die Farms können, sofern die passenden Rollen vorhanden sind, auf unterschiedlichen Clouds laufen. Ein Beispiel dafür ist die skalierende Webanwendung, die im Scalr-Tutorial "3 Tier Web Application" aufgebaut wird. Dort besteht die Farm aus einer Loadbalancer-Rolle mit Nginx, einer Python-Webanwendung und einer Datenbank-Rolle mit MySQL. Dementsprechend umfasst das Anlegen einer Farm neben der Vergabe eines Namens, der optionalen Festlegung eines Teams und einiger weiterer Details vor allem die Zuweisung der entsprechenden Rollen.

Orchestrierung über Skripte oder Chef

Die für ein Projekt nötigen Rollen sind Grundbestandteile einer Cloud-Anwendung. Um die zugehörigen Instanzen nach dem Start zum Zusammenspiel zu bewegen, bringt Scalr eine Orchestration Engine mit. Darüber können Anwender sich für bestimmte Events registrieren und die Software automatisch darauf reagieren lassen. Solche Events sind beispielsweise BeforeInstanceLaunch, HostUp, HostDown und so weiter. Außerdem kann der Anwender Custom Events einrichten, die etwa nach dem Start eines Dienstes aktiviert werden.

Als auszuführende Aktionen lassen sich beispielsweise Skripte verwenden, die der Anwender in der Scalr-GUI eingibt oder hochlädt. Alternativ können Skripte auch auf dem der Rolle zugeordneten Server liegen (Local Script). Schließlich lässt sich auch festlegen, dass Scalr auf ein Event mit der Abarbeitung einer Runlist des Config-Management-Tools Chef reagiert.

Durch die Möglichkeit, beliebige Skripte zu verwenden, ist Scalr sehr flexibel, was die Konfiguration einer Rolle/Instanz betrifft. Andererseits eröffnet dies wieder die Möglichkeit der unstrukturierten Konfiguration von Diensten, etwa wenn per Skript "mal eben schnell" noch ein Software-Paket installiert wird oder Ähnliches.

Bild 3: ACLs fassen einen Satz von Berechtigungen zusammen, der sich Benutzern und Teams zuweisen lässt.

Um etwa Konfigurationsdaten zwischen den beteiligten Rollen/Rechnern zu teilen, bietet Scalr sogenannte globale Variablen. Sind sie in der Scalr-GUI gesetzt, stehen sie nach dem Booten auf allen Instanzen einer Farm zur Verfügung. Um die anderen Rechner zu finden, bietet Scalr mehrere Wege zur Service Discovery. So können Sie auf jedem Rechner das Commandline-Tool »szradm -q list-roles« verwenden, um die beteiligten Rollen in Erfahrung zu bringen.

Das Ergebnis ist eine XML-Datei, die Sie mit den entsprechenden Programmen verarbeiten können. Auch die gezielte Abfrage einer Rolle ist mit szradmin möglich. Die gegenüber der XML-Verarbeitung einfachere Variante der Service Discovery ist das Scalarizr Service Directory. Das ist eine Verzeichnishierarchie, die auf jedem Farm-Server automatisch angelegt wird und die Struktur einer Farm widerspiegelt, etwa so:

# tree /etc/scalr/private.d/hosts
/etc/scalr/private.d/hosts
├── base
│ ├── 10.0.1.153
│ └── 10.0.1.167
├── mysql
│ ├── 10.0.2.248
│ └── 10.0.2.58
...

Eine typische Fähigkeit von Cloud-Anwendungen ist die Autoskalierung je nach Auslastung. So können Webdienste etwa die Anzahl der verwendeten Instanzen zurückfahren und dynamisch neue starten, wenn die Zugriffe stark ansteigen. Scalr unterstützt diesen Mechanismus durch verschiedene Maßnahmen. So findet sich in der Farm-Konfiguration ein Menüpunkt namens "Scaling", auf dem der Anwender zum Beispiel nach dem Load Average und anderen Kriterien die Farm hoch- und herunterskalieren kann. Per Default wartet Scalr bis zu einer Stunde, um den Abrechnungstakt des Cloud-Anbieters optimal auszunutzen – jedenfalls den von AWS, denn Google rechnet im Minutentakt ab. Dieser Zeitraum lässt sich aber ebenfalls konfigurieren.

Bild 4: Um eine Rolle anzulegen, startet Scalr in der Cloud eine VM und macht davon einen Snapshot.

Für die häufigsten Dienste bringt Scalr noch anwendungsspezifische Konfigurationshilfen mit (Built-in Role Automation). Damit lassen sich Serverdienste über die Scalr-GUI konfigurieren, ohne auf die oben erwähnten Skripte zurückzugreifen. Beispielsweise lassen sich damit SSL-Zertifikate für Webserver konfigurieren und virtuelle Hosts einrichten, allerdings nur für den Apache-Server. Etwas größer ist das Angebot der Role Automation für Datenbanken. Hier unterstützt Scalr MySQL, Percona, PostgreSQL, MongoDB und Redis. Dabei bietet Scalr Features wie Replikation, Autoscaling, Backup und für die MySQL-Datenbanken auch das grafische Front-end PHP-Myadmin. Nginx und HAProxy sind als Loadbalancer unterstützt, Memcached fungiert als Caching-Server, fürs Messaging bringt Scalr eine RabbitMQ-Rolle mit. Weitere Features, die Scalr unterstützt, sind DNS-Management, die Verwaltung von Security Groups (aber nicht auf allen Clouds) und sogenannte Webhooks zur Integration in andere Systeme. LDAP-Authentifizierung für OpenLDAP und Active Directory lässt sich über eine Extension aktivieren.

comments powered by Disqus

Artikel der Woche

Eigene Registry für Docker-Images

Wer selber Docker-Images herstellt, braucht auch eine eigene Registry. Diese gibt es ebenfalls als Docker-Image, aber nur mit eingeschränkter Funktionalität. Mit einem Auth-Server wird daraus ein brauchbares Repository für Images. (mehr)
Einmal pro Woche aktuelle News, kostenlose Artikel und nützliche ADMIN-Tipps.
Ich habe die Datenschutzerklärung gelesen und bin einverstanden.

Konfigurationsmanagement

Ich konfiguriere meine Server

  • von Hand
  • mit eigenen Skripts
  • mit Puppet
  • mit Ansible
  • mit Saltstack
  • mit Chef
  • mit CFengine
  • mit dem Nix-System
  • mit Containern
  • mit anderer Konfigurationsmanagement-Software

Ausgabe /2022