Schlagwort-Archive: Backup

Docker statt vServer – Wie ich 770GB verloren habe

Ich habe vServer gemietet. Das ist eine tolle Sache. Dort kann ich tun und lassen was mir beliebt. Doch nicht für jeden Anwendungsfall muss gleich ein vServer her. Denn es gibt inzwischen Docker, dort entfällt eine Menge overhead, den so ein vServer mit sich bringt.

Ich habe ja den ein oder anderen Server und auch ein paar vServer. Damit ich vor Datenverlusten geweiht bin, habe ich einen Server dafür gemietet, sich um Backups zu kümmern. Die Anforderungen an diesen Backup-Server: Massiv Speicherplatz, möglichst günstig. Und so endete es in einem Server der mit 100Mbit Anbindung nicht der schnellste, aber mit 2x2TB (bewusst ohne RAID) viel Speicher hatte und günstig war. Da ich für Kunden ebenfalls Server sichern wollte habe ich mich vor über einem Jahr auf diesem Server dazu entschieden, zwei vServer aufzusetzen. Beide lediglich mit Backuppc ausgestattet. Und jeder vServer hatte seine eigene Festplatte. So konnte ich den Speicherbedarf gut regeln. Ich behaupte nicht dass dies die einzige Lösung ist/war aber es ging schnell und funktionierte.

Nun hat eine Festplatte defekte Sektoren bekommen und musste getauscht werden. Ich habe also den betroffenen vServer gestoppt und seine VDI auf einen anderen Server übertragen, was bei 770GB und der schwachen Anbindung etwa 30 Stunden dauerte. Dann wurde die Festplatte getauscht und ich habe die VDI wieder zurückgespielt (also nochmal etwa 30 Stunden). Resultat: Der vServer ließ sich nicht mehr booten. Die Datei ist beschädigt gewesen, sicherlich folgend aus den kaputten Festplattensektoren. Demnach: 770GB Datenmüll. Es ist nicht dramatisch, es handelte sich lediglich um ein Backup anderer Daten, die ja weiterhin auf ihrem Server lagen und funktionierten.

Ich hatte schon länger darüber nachgedacht, die zwei vServer zu deaktivieren und hier Docker in den Einsatz zu nehmen um beide Backuppc-Instanzen zu betreiben und auf die zwei verschiedenen Festplatten zu schreiben. Ich hatte nur nie einen Anlass dazu. Nun hatte ich bedarf und habe mich rangesetzt.

Fazit: Es läuft prima. Doch was ist jetzt der Unterschied?

Docker vs. Virtualisierung

Ich möchte darauf hinweisen, dass ich kein Virtualisierungs-Profi bin. Ebenso bin ich auch kein Docker-Profi. Ich habe konkrete Anwendungsfälle und benutzte dann eine passende Technik. Sobald es läuft und ich die Situation als „stabil“ einschätze, bin ich zufrieden.

Für mich gibt es zwischen Docker und Virtualisierung in dem obigen Beispiel einen gravierenden Unterschied: Durch das defekte VDI-File, habe ich nun 770GB Daten verloren. Mit Docker hätte ich sicherlich auch Daten verloren, aber eben nur jene, die in den entsprechenden Sektoren gespeichert wurden. Es ist davon auszugehen, dass ein Großteil der Daten erhalten geblieben wäre.

Ein weiterer Punkt ist das Thema Sicherheit: Ich habe natürlich quasi nie die vServer aktualisiert. Auch den Host nicht. Ich hatte einfach schiss, dass dann vbox nicht mehr startet oder irgendwas auf den vServern nicht mehr läuft. Demnach hatte ich einen Host und zwei vServer die potenziell angreifbar wären oder um die ich mich hätte potenziell kümmern müssen.

Nun mit Docker habe ich nur noch den Host. Die Container haben keine Möglichkeit den Host anzugreifen und die Container sind von außen lediglich über einen einzigen Port erreichbar. Mit jedem Update von Backuppc wird ein neues Image bereitgestellt, welches wiederum auf einem aktualisierten Linux-Image beruht und somit werden „Systemupdates“ implizit mit dem aktualisieren des Images eingespielt. Den Host werde ich fortan aktualisieren, ich betreibe einige Docker-Hosts und habe bisher noch nie erlebt, dass es zu einem Problem innerhalb eines Docker-Container kam, dadurch dass ich den Host aktualisiert hätte…

Einfache Wartung: Ich habe ein Script geschrieben welches beide Docker-Instanzen gleichzeitig verwaltet. Ich gebe in dem Script das Basis-Image und einige weitere Parameter an. Und dann kann ich mein Script aufruren und ein Update ausführen, die Container stoppen / starten oder in die Logs schauen. Alle Aktionen werden dann auf beiden Containern ausgeführt. Das ist praktisch und spart Zeit.

mcmyadmin

[Minecraft] McMyAdmin: Minecraft-Server per WebInterface betreiben

McMyAdmin ist das wohl nütztlichste Minecraft-Tool was es meiner Meinung nach gibt. Nitrado hat irgendwann McMyAdmin eingeführt, da habe ich es kennengelernt, jetzt ist der Gameserver auf einen eigenen vServer gezogen, und wieder wird McMyAdmin genutzt.

Fotostrecke zu McMyAdmin

Eindrücke zu McMyAdmin

Nach der Fotostrecke möchte ich noch auf einige Bilder zu McMyAdmin genauer eingehen.

Serverstatus

Wer kennt es nicht: Man spielt auf dem Server und irgendwann „spackt“ es mal rum. Doch woran liegt es? Ist die Verbindung schlecht, mein PC zu überladen oder liegt es am Server? Wenn ja: Was genau fehlt da?

Über den Server-Status, den Startbildschirm von McMyAdmin, lassen sich diese Fragen schonmal auf Server oder Client beantworten und im Server-Fehler-Fall auch auf RAM oder CPU. Denn man hat sowohl die Übersicht, wie viel RAM genutzt wird, als auch die Übersicht, wie viel CPU beansprucht ist.

Wichtig ist: Der maximal auslastbare RAM wird über McMyAdmin konfiguriert. Natürlich können die Server-Kapazitäten nicht überschritten werden.

Berechtigungen

Na das nenn ich mal eine Übersicht. Server-Gruppen können definiert- und dann mit Usern und Berechtigungen finalisiert zu werden.

Ich wand PermissionsEx schon ziemlich klasse, aber über den MC-Chat war das manchmal schon schwierig, McMyAdmin bietet da visuell gesehen schon wesentlich mehr komfort.

In den McMyAdmin-Konfigurationen muss nur noch festgelegt werden, welches Permissions-Plugin befüllt werden soll.

Manko: Kein Export / Import der Permissions. Wird der Server gewechselt und ein neues McMyAdmin eingesetzt, müssen alle Persmissions per Hand übertragen werden.

Planung

Da McMyAdmin ein eigenständiger Prozess auf dem Server ist, welcher Minecraft startet (nicht umgekehrt wie es bei Plugins bspw. ist), gibt es die Möglichkeit, eine Art Cronjobs zu definieren.

Beispielsweise wird die Map jede Stunde gebackupt, jeden Tag um 4 Uhr der Server neugestartet (mit 4 Meldungen jeweils einige Minuten davor) oder eben auch alle 10 Minuten ein World-Safe durchgeführt.

Es wird übrigens nicht nur der Server neugestartet sondern eben auch die Logs rotiert (praktisch und übersichtlich).

Backups

Ein Bild sagt mehr als 1.000 Worte.

Also das ist der Grund, warum ich McMyAdmin einsetze: Die Backups… Ein einfaches Interface mit dem ich Backups anlegen kann und auch wiederherstellen ist möglich.

Manko: Keine Sortierung nach Erstellungsdatum absteigend. Auch der Fehlende Welt-Name in der Backupbezeichnung ist nicht so schön, aber auch nicht tragisch, in der Regel ändert sich der Weltname nicht.

 

Gläsernes Tool

Es währe zu perfekt, wenn es jetzt kein ABER gäbe…

Aber ich mag nunmal keine Spione und daher jetzt etwas meiner Ansicht nach kritisches: McMyAdmin hat einen Google-Tracking-Code verbaut… Auf Webseiten wäre das OK, aber bei gekaufter Software ist das so wie eine Software die alle Aktionen die man Ausführt an einen Server des Programmierers schickt. Stell dir mal vor bei jeder deiner Mails ginge an Microsoft / Thunderbird / Google die Info dass du eine Mail von Hannes Peter dem kleinen bekommen hast bzw. eine dahin schreibst…

Auf Anfrage an den Programmierer kam als Rückmeldung

McMyAdmin uses Google Analytics to collect information about the types of systems being used to connect to McMyAdmin panels (OS, Web browser, etc) and to help monitor overall usage. This information is used to help determine which browsers will receive the most testing. Google Analytics does not collect any personally identifiable information.

Michael Biggins – PhonicUK

Naja ich weiß ja nicht. Da nehm ich mir als WebEntwickler lieber ne Studie zur Hand und schau welche Browser berücksichtigt werden sollten.

Fazit

McMyAdmin ist ein gelungenes Administrations-Interface für Minecraft-Gameserver.

Durch McMyAdmin wird mir sehr viel Arbeit abgenommen und nach dem Herausschneiden des Tracking-Codes und dem einbauen einiger Übersetzungen kann ich diese Adminoberfläche wunderbar einsetzen.

 

Minecraft 1.8.1 MainScreen

Auf Minecraft 1.8.1 Bukkit Server updaten

Wer nicht abwarten will, bis es einen Empfohlenen Release von Bukkit gibt, um Minecraft 1.8.1 auf seinem Server zum Laufen zu bringen, kann gerne schon upgraden.

Ich habe inzwischen die zweite dev-Version von Bukkit auf zwei Minecraft-Servern laufen (einmal ca. 220 MB Spielwelt einmal ca. 80 MB) und es gibt keine Abstürze.

Mit einigen Fehlern ist dennoch zu rechnen.

Ich habe CraftBukkit #1139 am laufen (glaube ich, habe gestern nicht so genau drauf geachtet), eigetnlich nehme ich aber beim Update immer die aktuellste, die nicht gerade einen roten Bubbel hat.

Wie Update ich meinen Server auf Minecraft 1.8.1

  1. WICHTIG: Karten-Backup machen. Bei Nitrade einfach über die Web-Konsole, bei eigenem Server die entsprechenden World-Ordner kopieren, bei einer normalen Welt also „world“ und „world_nether“ (vorher Server runterfahren)
  2. Server herunterfahren (also nur den Gameserver)
  3. Das „neue“ CraftBukkit herunterladen
  4. Das auf dem Server vorhandene CraftBukkit umbenennen (bspw in „org.crafftbukkit[…]“)
  5. Das heruntergeladene CraftBukkit auf den Server laden
  6. Den Server Starten
  7. Per Minecraft einloggen und durch die Welt laufen (i.d.R. gilt: Welt noch da, Update OK)
  8. Truen öffnen, Türen passieren, Redstone-Schaltungen testen, Items sammeln und ablegen, was eben so an Funktionalität vorhanden ist austesten
  9. Plugins auf Funktionalität prüfen (bspw. durch Kommandoeingabe)
  10. Wenn alles OK:
    1. alles OK
  11. Wenn alles Putt:
    1. Auf den Server gehen (per SSH oder Web-Interface)
    2. Server Stoppen
    3. Backup wiederherstellen (bei Nitrado über WebInterface, bei SSH den „world“ und „world_nether“ löschen und die Kopie (das Backup) demenetsprechend wieder umbenennen/verschieben)
    4. CraftBukkit löschen
    5. Die umbenannte CraftBukkit-Version wieder zurückbenennen (in meinem Fall das „org.“ am Anfang entfernen)
    6. Server Starten
    7. Erneut alles Testen

Mit welchen Fehlern muss ich rechnen?

Aktuell ist damit zu rechnen, dass

  • Truen falschrum stehen
  • manche Truen „schwarz“ sind, bis sie geöffnet werden
  • Truen offen bleiben, auch wenn kein Spieler sie benutzt
  • Redstone-Repeater schwarz sind (ohne Textur)
  • 1.8.1 Clients (also unabhängig von Bukkit) teilweise ganz oft „Out of Memory“ bekommen (auch bei nem Windows 7 64bit mit 4 GB, wo noch 2 GB ungenutzt sind)

Wer das hinnehmen mag, um 1.8.1 zu testen sollte definitiv updaten, ich habe es nicht bereut und freue mich über das Update. Was alles mit 1.8.1 kam, könnt ihr anderstwo lesen, da muss ich nicht aktiv werden 🙂