Seit bereits sieben Jahren betreiben wir bei NETWAYS eine Private Cloud Installation auf Basis von OpenNebula. Damals starteten wir gerade einmal mit drei Hypervisor Servern und einem NFS-Datastore, bereitgestellt aus einer Netapp 3140. Bis heute hat sich daran natürlich einiges verändert. Die Technologien haben sich geändert, als auch die notwendigen Ressourcen sind deutlich gestiegen. Heute laufen zum Beispiel unsere virtuellen Maschinen nicht mehr auf NFS sonder auf Ceph RBDs. Das Ceph-Cluster, verteilt über zwei Standorte, umfasst aktuell knapp ein halbes Petabyte Storage Kapazität.
OpenNebula hat uns während dieser Zeit der Transformation immer gut und zuverlässig zur Seite gestanden. Sämtliche Upgrades verliefen meist tadellos. Deshalb ist es fast ein bisschen Schade, diesem tollem Open-Source-Projekt den Rücken zu kehren und von nun an mit dem Platzhirsch OpenStack zu liebäugeln. Einer der Hauptgründe diesen Schritt zu gehen – neben beispielsweise der oft besseren und breiteren Verfügbarkeit an Integrationen und Tools von Dritten (z.B. Foreman, Puppet, Terraform usw.) – ist Software Defined Networking. Kurz SDN. Natürlich gibt es hierfür auch gute Ansätze und eine Basis-Unterstützung im OpenNebula Projekt. Theoretisch gibt es sogar die Möglichkeit fast jeden SDN Provider in OpenNebula, dank seiner Erweiterbarkeit, zu integrieren, aber leider nicht ohne selbst vorher ordentlich Pionierarbeit leisten zu müssen. Bei OpenStack hat man eher die Qual der Wahl, welcher SDN Provider für sein Setup passt.
Mit SDN virtualisiert man in einem Overlay Netzwerk ein künstliches und unabhängiges Netzwerk, ohne dass man das Underlay, die tatsächliche Hardware z.B. Switches und Router, auf die jeweiligen Umstände und Anforderungen anpassen muss. Die Vorteile liegen dabei auf der Hand: Im Underlay hat man ein stabiles Trägernetzwerk, dass man im Prinzip nur noch skalieren und robust betreiben muss und im Overlay werden die Anforderungen der Kunden realisiert. Wir setzen hierbei im Underlay auf Cumulus Linux in Kombination mit Mellanox Hardware und im Overlay auf die SDN Lösung von Midonet. Beides harmoniert gut miteinander und kann entsprechend verknüpft werden.
In unserer neuen Cloud-Installation ist es für uns und unsere Kunden dann dadurch möglich im Self-Service sich Netzwerke, Router, VPNs, Load-Balancer und Firewall-Regeln zu erstellen, ohne hierfür vom Administrator Hilfe und Beistand einzufordern. Auch überlappende private Netzwerke sind dann kein Problem und eine Pflege und penible Vergabe von IPs und Subnetzen bzw. VLANs fallen somit vom Tisch.
Klar ist, der Self-Service Part könnte mit OpenNebula in unserer bisherigen Installation ebenfalls gelöst werden, allerdings beeindruckt insbesondere die technische Umsetzung und das sehr raffinierte und intelligente Konzept der SDN Lösung von Midonet. Wie das ganze technisch funktioniert erklären wir im Blog in einem unserer nächsten Artikel.
NETWAYS Blog
Monthly Snap June: Icinga2, Training, Foreman, GitLab, Icinga director, OpenNebula
Martin presented in June our new book about Icinga 2 written by our very own Lennart Betz and Thomas Widhalm.
Julia announced the official Foreman training material and Michael recommended the new DEV-Trainings: Git and Jenkins.
Tim explained how to use OpenNebula ACLs and Foreman in Part 1 and Part 2 while Florian showed us how to animate vector graphics with CSS.
Julia gave us a nice update of our new training facility – the „Kesselhaus“.
Dirk announced that the Foreman Project will be 7 years at the 21st of July – so safe the date and visit us at the German Foreman birthday event that will take place in our event room „Kesselhaus“.
Enrico shared some tips and tricks about how to work with GitLab web hooks and Thomas Gelf showed us the new and shiny Icinga director 1.10.
Monthly Snap May: Docker, Graphite, Opennebula and Beijing
May started with Simons blog post on monitoring custom applications.
Blerim gave us an insight into Graphite – the history of a data point. Kai, one of our trainees explained what he learned at NETWAYS.
Tobias explained Debugging with Docker and Michael told us something about Docker on OSX.
Kay explained on how to get started with the Opennebula API.
Finally, Christoph told us about his Consulting journey to Beijing.
Getting started Opennebula API
In wenigen Tagen starten die OpenNebula Techdays welche von Netways gesponsort werden. Da auf diesen einige interessante Dinge gezeigt werden gibt es hier jetzt eine kleine Einführung in die API.
Wenn man die API von OpenNebula benutzen möchte, gibt es zwei Möglichkeiten. Einmal „RPC XML“ und zweitens mit einem Ruby Binding. In meinem Beispiel werde ich mich auf das Ruby Binding beziehen.
Um mit der API rumspielen zu können benötigen wir erstmal eine passende OpenNebula Umgebung. Hierfür können wir uns ganz einfach eine vorinstallierte VM als VirtualBox image herunterladen.
Um nun auch auf die API zugreifen zu können, muss man noch eine Portweiterleitung für den Port „26330“ einrichten (Port 9869 ist optional, sollte man auch auf das Web-interface zugreifen wollen). Die Weiterleitung kann unter Setting > Network > Advanced > Port Forwarding eingerichtet werden.
Jetzt kann man anfangen sich gegen die API zu connecten. Als erstes fügt man die benötigten Ruby Gems hinzu. Dies wird mit
require 'opennebula' include OpenNebula
gemacht.
Danach erstellt man Variablen für die login credentials und den Endpoint. Ich benutze dafür die default Username und Passwort Kombination.
CREDENTIALS = "oneadmin:opennebula" ENDPOINT = "http://<DeineVBoxIP>:26330/RPC2"
Nachdem dies erledigt ist, kann man eine Verbindung zur API festlegen. Hierfür legt man wieder eine Variable fest. (Bitte beachtet, das die credentials und endpoint variablen genauso heißen, wie oben festgelegt!)
client = Client.new(CREDENTIALS, ENDPOINT)
Als nächstes initialisiert man den Virtual Maschine Pool. Dafür wird die Variable vm_pool angelegt.
vm_pool = VirtualMaschinePool.new(client, -1)
Um mögliche Fehler abzufangen kann man eine kurze Fehlerabfrage einrichten. Diese gibt uns, im Falle eines Fehlers, gleich den richtigen Fehler Code zurück.
rc = vm_pool.info if OpenNebula.is_error?(rc) puts rc.message exit -1 end
Damit jetzt jede Virtuelle Maschine gestoppt wird, richtet man eine kleine Schleife ein die uns pro VM, die sich im vm_pool befindet, eine Funktion ausführt.
vm_pool.each do |vm| rc = vm.shutdown end
Mit der oben eingerichteten Fehlerabfrage kann man sich hier auch gleich noch den aktuellen Status bzw eine Success oder Fehlermeldung ausgeben lassen. Dafür fügt man ein paar Zeilen zu seiner Schleife hinzu.
vm_pool.each do |vm| rc = vm.shutdown if OpenNebula.is_error?(rc) puts "Virtual Machine #{vm.id}: #{rc.message}" else puts "Virtual Machine #{vm.id}: Shutting down" end end
Das ganze noch mit einem sauberen
exit 0
abschließen und das erste Script ist fertig!
Um das Endprodukt testen zu können, muss man noch eine VM in OpenNebula erstellen. Hierfür kann man ein schon vorgefertigte Template nutzen.
Dieses einfach instantiieren und warten bis die VM hochgefahren ist. (Meist ca 10 Sekunden).
Wenn man jetzt das Ruby Script ausführt sollten man folgende Ausgabe erhalten:
Virtual Machine 1: Shutting down
Wie man an diesem Beispiel sehen kann, ist es sehr einfach eigene Scripte für Opennebula zu schreiben. Noch mehr spannende Dinge gibt es auf den diesjährigen TechDays!
NETWAYS sponsors The OpenNebula TechDay on June 2, 2016
The Event
The OpenNebula TechDay is a full day event to learn about OpenNebula with a hands-on cloud installation and operation workshop, as well as presentations from community members and users. The event is targeted at cloud architects, data center admins, systems admins, systems integrators, DevOps architects, and solutions architects. The emphasis is to find local speakers and users to come together and talk about things that they care about most, and to share stories from their experiences using OpenNebula.
The number of seats is limited to ensure there is plenty of opportunity for everyone to interact. We encourage everyone to register as early as possible.
Call for Papers
You would like to give a talk and you are interested in
- Sharing cloud use cases and deployment experiences,
- Introducing new integrations and ecosystem developments,
- Describing other related cloud open-source projects and tools?
Then send your proposal at events@opennebula.org or events@netways.de.
Registration
Participation is free of charge! Please sign up for attendance since the number of seats is limited.
Sponsor and Location
NETWAYS will host the event and take care of the organization on-site.
The TechDay will be held at
NETWAYS GmbH
Deutschherrnstr. 15-19
90429 Nuremberg
Germany
Further Information
To learn more about OpenNebula TechDays, get detailed information on agenda, speakers, workshops, etc., visit: opennebula.org.