Sponsor-Board.de
Virtualisierung - Automatisches Installationsverfahren

+- Sponsor-Board.de (https://www.sponsor-board.de)
+-- Forum: Community (/forumdisplay.php?fid=56)
+--- Forum: Hilfe (/forumdisplay.php?fid=102)
+---- Forum: Linux-Server (/forumdisplay.php?fid=105)
+---- Thema: Virtualisierung - Automatisches Installationsverfahren (/showthread.php?tid=65938)


Virtualisierung - Automatisches Installationsverfahren - Dennis - 04.03.2019 23:17

Heyho,

ich bin kein wirklicher Profi, was die Virtualisierung von Maschinen angeht. Meine Kenntnisse reichen im Groben nur dafür aus, eine Linux-Distribution zu betreiben bzw. mit allem nötigen auszustatten, was ich für den Betrieb von meiner Software brauche.

Mir brennt jedoch seit einigen Tagen die Frage im Kopf herum, ob es nicht irgendwie möglich ist, z.B. 10 Root-Server aufzusetzen und diese mit virtuellen Maschinen auszustatten. Dies mit dem Hintergrund, dass man z.B. sagen kann, man möchte gerne 10 dieser virtuellen Maschinen reservieren und als Cluster zusammenschließen.

In wie weit ist das möglich, dass man diese 10 virtuellen Maschinen auch automatisiert mit einem Bauplan von extern aufsetzt? Wie kann ich von diesen 10 Maschinen nach Ablauf einer Zeit X bestimmte Daten sichern, auf eine andere Distribution ablegen und im Anschluss diese 10 Maschinen entferne, sodass diese im Nachhinein neu aufgesetzt werden können, mit ggf. anderen Bauplänen?

Eine Idee wäre Docker zu verwenden, aber der Gedanke da dann einen Container hochzufahren, der dann ein Cluster abbildet, das finde ich dann doch etwas zu krass.

Wie wäre der Gedanke jedoch, wenn man 10 Knoten reserviert, der Bauplan sagt, dass überall Docker installiert sein muss und ich im Endeffekt einen betriebsbereiten Docker-Swarm da stehen habe, der auch automatisiert mit meinen gewünschten Services gestartet wird, sodass ich über einen Zeitraum X eine Testlandschaft habe, nach Ablauf derer Zeit ich meine Daten, z.B. Logs oder andere, auf einer Kiste ablegen kann, um damit auch nach Ablauf der Zeit Analysen zu tätigen?

Ist soetwas mit Virtualisierung realisierbar? Wenn ja, wie?


RE: Virtualisierung - Automatisches Installationsverfahren - Anker43.de - 04.03.2019 23:47

Hey,
soweit ich deinen Beitrag verstanden habe, schmeiße ich hier mal paar Dinge in den Raum, womit du sowas konzeptionieren könntest.
Für deinen Bauplan kannst du Tools wie Puppet oder Chef nehmen, die sind für die Automatisierung zuständig. Cronjobs kannst du gebrauchen für den zeitlichen Trigger. Und wenn es ums komplette aufsetzten geht, könntest du auch etwas wie PXE nehmen.
Gibt natürlich endlos viele Möglichkeiten, aber die Dinge oben sind mir direkt in den Sinn gekommen.


RE: Virtualisierung - Automatisches Installationsverfahren - Dennis - 05.03.2019 16:43

Ja, eine Automatisierung mit Ansible wäre auch möglich.
Die Frage ist aber, ob es eine Möglichkeit gibt, auf verschiedenen Root-Servern X virtuelle Knoten automatisch zu starten und dann mit solchen Automatisierungstools diese aufsetzen?

Dann soll irgendein Dienst gestarten werden und nach X Tagen bestimmte Dateien gesichert werden mit anschließendem Shutdown dieser virtuellen Knoten.


RE: Virtualisierung - Automatisches Installationsverfahren - T-I-M - 05.03.2019 18:15

Das ist definitiv möglich. Du könntest erstmal mit Foreman anfangen, der kümmert sich um den Lifecycle der physischen Knoten (Installation, Setup etc) vollautomatisiert.
Dann kannst du mit Hilfe von z.B. Puppet (wird nativ von Foreman genutzt und unterstützt) Opennebula installieren und das dann mit Hilfe von Terraform managen (VMs deployen) ([Link: Registrierung erforderlich]).

Bei Opennebula kannst dann das Template bestimmt auch so anpassen, dass da eine planned action drin ist, die die Maschine dann löscht ([Link: Registrierung erforderlich]).

Die virtuellen Maschinen können sich dann auch nach jedem Start beim Puppet Host anmelden, da die ja beim Start Befehle ausführen können.

Das letzte Problem mit den Daten würde ich einfach über einen SSHFS-Mount lösen wo es dann einen zentralen Server gibt, der die Daten speichert.


RE: Virtualisierung - Automatisches Installationsverfahren - Nilss - 06.03.2019 21:18

Dein Vorhaben ist natürlich umsetzbar. Die Frage ist wie du es umsetzen willst. Die von T-I-M genannte Lösung hört sich gut an. Ich bin beruflich im Docker/Container Umfeld tätig und könnte Kubernetes empfehlen (Orchestierung von mehreren Containern). Damit könnte man dein Vorhaben ebenfalls realisieren.

Am besten kurz nach Kubernetes googeln und schauen ob es was für dich ist. Wenn es dir zusagt, kannst dich gerne bei mir privat melden.


RE: Virtualisierung - Automatisches Installationsverfahren - Dennis - 06.03.2019 22:19

Hey,

vielen Dank für die ganzen Antworten.

Das Ganze ist eine reine theoretische Frage, die ich mir da stellte.

Wenn ich Kubernetes/Docker verwende, bin ich wieder hart an die Technologie gebunden und muss über die Docker-Netzwerke gehen. Davon will ich eigtl. eher wegkommen, ist im Endeffekt bei dem, was ich mir eigtl. vorstelle, eh schon der Schritt danach.


Top-Down Ansicht
Ebene 0:
Ich hätte theoretisch eine Serverfarm mit 10 Root-Server. Blanko installiert, mit einem FutureOS (Einfach ein Platzhalter, vorrangig Linux-Systeme)


Ebene 1:
Jeder dieser Root-Server hat eine Virtualisierungsmöglichkeit und kann z.B. 4 virtuelle Sub-Knoten hosten. In meinem Verständnis rede ich da von Virtualisierung im Sinne von vServer, die mittels KVM oder wie das alles heißt, erstellt wurden.
Diesen Schritt möchte ich gerne automatisieren, dass ich z.B. statt 4 Sub-Knoten auf jedem Root-Server die Anzahl erhöhen kann auf z.B. 8, sodass die Rechenlast feingranularer verteilt wird (so meine Annahme)

Ebene 2:
Jeder dieser Sub-Knoten wird bei Erzeugung mit einem Softwarepaket nach einem beliebig definierbaren Bauplan vorbereitet (Kickstart-Files, oder wie aus den Antworten schon hervorging PXE, Puppet, Chef) und ggf. alle Services initialisiert.


Mal an einem Szenario etwas beispielhafter erklärt:
Ein Kunde wünscht sich, seine Softwarelandschaft auf Performance zu testen, hat aus Budgetgründen jedoch keine geeignete Hardware dafür. Kleinere Unternehmen z.B., die ein paar kleinere Microservices am Laufen haben, um eine Angular-Seite zu betreiben. Denke, dass das ein gutes Realbeispiel abgibt.

Der Kunde stellt die Services usw. als Docker-Images bereit und wünscht sich, dass 10 Knoten existieren, die in einem Docker-Swarm zusammenhängen und mit diesen Images betrieben werden. Angenommen, er möchte, dass diese 10 Knoten mit jeweils 4 CPU-Kernen und 16GB RAM ausgestattet sind. Die Root-Server hätten, aus rechnerischen Gründen etwas pauschalisiert, jeweils 20 CPU-Kerne und 80GB RAM.

Es werden also auf 2 Root-Server jeweils 5 Sub-Hosts hochgezogen, denen ein vorgefertigter Bauplan sagt, dass die insgesamt 10 Sub-Hosts einen Docker-Swarm bilden sollen. Nach initialisierung des Swarm werden die Images auf allen Sub-Hosts verteilt. Nach Benennung eines Swarm-Managers kann nun auch der Stack damit hochgefahren werden.

Der Kunde konnte zuvor auch noch weitere Informationen angeben, z.B. ein Paket mit Daten und dem Testszenario und fährt nun vollautomatisiert einen Performance-Test auf der gewünschten Hardwareausstattung.

Nach Ablauf einer gewählten Zeitspanne wird der Performance-Test abgebrochen und alle angegebenen Daten gesichert. Diese sind dann im Nachgang auf einer Seite z.B. als Download bereitgestellt.


Vielleicht hilft dieses Szenario etwas mehr, meine leicht wirren Gedankengänge in dieser Theorie etwas nachvollziehen zu können Smile


RE: Virtualisierung - Automatisches Installationsverfahren - Dream - 07.03.2019 08:05

Hallo Dennis,

Dein Vorhaben sollte rein Theoretisch umsetzbar sein, die Frage ist jedoch wie sehr du auf «out of the Box» Sachen setzen möchtest.

Zitat:
Ebene 1:
Jeder dieser Root-Server hat eine Virtualisierungsmöglichkeit und kann z.B. 4 virtuelle Sub-Knoten hosten. In meinem Verständnis rede ich da von Virtualisierung im Sinne von vServer, die mittels KVM oder wie das alles heißt, erstellt wurden.
Diesen Schritt möchte ich gerne automatisieren, dass ich z.B. statt 4 Sub-Knoten auf jedem Root-Server die Anzahl erhöhen kann auf z.B. 8, sodass die Rechenlast feingranularer verteilt wird (so meine Annahme)


Dies sollte über eine API des Hypervisors sicher möglich sein.

Zitat:
Ebene 2:
Jeder dieser Sub-Knoten wird bei Erzeugung mit einem Softwarepaket nach einem beliebig definierbaren Bauplan vorbereitet (Kickstart-Files, oder wie aus den Antworten schon hervorging PXE, Puppet, Chef) und ggf. alle Services initialisiert.


Für die meisten Distributionen kann man Preseed oder auch Kickstarter Dateien mit angeben bei der Installation, welche nach Abschluss die nötigen Pakete Installieren. Dies habe ich mit Debian 9 und Docker schon gemacht bei Wunsch, kann ich dir die Preseed Datei gerne überreichen.

Wo ich aktuell noch das Problem sehe, ist die automatische Swarm Bildung von Docker. Sprich wie soll es gelöst werden, dass der Tocken vom Master zu den einzelnen Nodes kommt, da dieser bei jeder Installation neu generiert wird und nach meinem Wissenstand nicht Fix vergeben werden kann.

Was das mit dem Sichern der Daten angeht, könnte man dies über rsync sicherlich bewerkstelligen, dass dieser Inkrementell die Daten speichert und bei einem Init 6 die Daten erst noch einmal abgleicht, somit hast du die Daten in allen fällen gesichert.

Gerne können wir dies auch mal genauer besprechen und zusammen eine Lösung bauen, da ich mit dem Selben Gedanken schon eine weile spiele, aber vor den gleichen Problemen stehen geblieben bin wie ich Sie hier vorgeführt habe.