Anfang Januar, kurz vor dem Univention Summit, habe ich die App Minio im Univention App Center veröffentlicht. Ihre Existenz verdankt die App im Grunde der Tatsache, dass ich bereits vor langer Zeit ein wenig mit der damals im App Center noch ganz neuen Docker Technologie herumexperimentieren wollte. Minio, als einzelne Binärdatei, die kaum externe Konfiguration benötigt, erschien als das perfekte Testobjekt. Wie sich herausstellte, war es das auch. Ich habe dabei jede Menge über Docker gelernt und mich mit diesem Wissen erst einmal erfolgreich an den Bau einer Mattermost App gemacht, die bereits im App Center veröffentlicht wurde. Aber Minio ließ mir keine Ruhe.

Als ich mich auf dem Univention Summit Anfang Februar mit verschiedenen Personen über die neue Anwendung unterhalten habe, war ich sehr überrascht, wie wenig Leute Minio überhaupt kennen. Und das, obwohl viele von ihnen erwähnten, dass sie Apps benutzen, die Daten über Amazon S3 speichern. Das finde ich sehr schade, denn Minio bringt erhebliche Vorteile für Nutzer, wenn sie ihre Daten unter ihrer Kontrolle behalten wollen.

Also, was ist Minio?

Die kurze und einfache Antwort ist: “Es ist wie Amazon S3, mit dem Unterschied, dass es lokal ausgerichtet ist”.

Minio ist ein Server zur Objektspeicherung, der dieselbe öffentliche API wie Amazon S3 enthält. Das heißt, dass man Anwendungen, die mit Amazon S3 interagieren können, so konfigurieren kann, dass eine Interaktion mit Minio erfolgt. Ein Objektspeicher wie Minio kann zur Speicherung von unstrukturierten Daten wie Fotos, Videos, Logfiles, Backups und Container-/ VM-Images eingesetzt werden. Dabei kann die Größe dieser Objekte von ein paar KBs bis zu maximal 5 TB variieren. Die Daten sind in sogenannten “Buckets” angelegt, die die Objekte logisch sortieren. Buckets müssen Ihrer Anwendung zusammen mit Ihrem öffentlichen und privaten Schlüssel sowie der HTTP-Adresse Ihrer Minio-Instanz übergeben werden.

Screenshot Übersicht der Buckets im Minio Browser

 

Hervorragend für die Handhabung großer Datenmengen

Bei Kopano sind wir es gewohnt, mit großen Mengen an Daten zu jonglieren. Daher wissen wir, dass man bei der Arbeit mit großen Datensätzen aus verteilten Setups die Mailanhänge (welche bis zu 90% der Gesamtgröße Ihres Posteingangs ausmachen können) nicht immer auf demselben Server speichern möchte, wo Kopano läuft. Außerdem können stetig wachsende Posteingänge dem Administrator massive Kopfschmerzen bereiten, da ständig der Speicherplatz erweitert und repliziert werden muss, damit alles im Falle eines Festplattenausfalls gesichert ist.

Minio bietet einen einfachen Weg an, um aus diesem Dilemma auszubrechen. Zum einen entkoppelt es Speicherplatten von Ihren lokalen Geräten, sodass Sie diese durch eine einfache HTTP Schnittstelle erreichen können. Zum anderen erschafft Minio redundanten Datenspeicher, ohne hierfür auf reguläre Clusterdateisysteme zurückgreifen zu müssen.



Einfache Einrichtung

Die Minio Anwendung für UCS (hier können Sie UCS kostenlos downloaden) legt nur ein lokales Verzeichnis über die S3 API offen. An sich kann man Minio jedoch so konfigurieren, dass ein kompletter Schutz vor Festplattenausfall und Datenverlust besteht. Dafür werden die Daten auf verschiedene Festplatten und Knotenpunkte verteilt, die Minio ebenfalls ausführen.

Aber ist Minio die einzig vorhandene S3 API Implementierung? Nein, natürlich nicht. Lösungen wie OpenStack Swift oder OpenIO implemetieren ebenfalls S3 API und bieten dadurch ähnliche Vorteile. Jedoch lässt sich Minio höchstwahrscheinlich am einfachsten von all diesen Lösungen einrichten, da es sich dabei um eine einzelne Binärdatei handelt.

Grafik über Minio Object Storage - File System

 

Und wenn ich Minio für meine Kopano-Daten nutzen möchte?

Um Minio für Kopano zu nutzen, müssten die nachfolgenden Variablen programmiert werden (bevor manKopano Core installiert):

ucr set \
kopano/cfg/server/attachment_storage=s3 \
kopano/cfg/server/attachment_s3_hostname=minio.ucs.intranet \
kopano/cfg/server/attachment_s3_region=us-east-1 \
kopano/cfg/server/attachment_s3_protocol=https \
kopano/cfg/server/attachment_s3_uristyle=path \
kopano/cfg/server/attachment_s3_accesskeyid=accessKey \
kopano/cfg/server/attachment_s3_secretaccesskey=secretKey \
kopano/cfg/server/attachment_s3_bucketname=bucket \
kopano/cfg/server/attachment_path=attachments

Mit diesen Voreinstellungen wird Kopano automatisch Minio zum Speichern von Anhängen nutzen. Ist Kopano bereits installiert, ist es zwar möglich, das Programm im Nachhinein für die Zusammenarbeit mit Minio einzurichten, allerdings ist der Vorgang dann etwas komplizierter. Kontaktieren Sie hierfür bitte den Kopano Support für ein Angebot zur Konvertierung Ihrer derzeitigen Installation von festplattenbasierten Anhängen zu S3 Anhängen.

Wofür kann ich S3 noch benutzen?

Neben der Möglichkeit als Speicherbackend für andere Anwendungen zu diesen, kann S3 auch genutzt werden um Backupdaten langfristig zu speichern. Eine solche Backupanwendungen die S3 (unter anderem) zur Backup-Speicherung nutzen kann ist “restic”. Restic ist ebenfalls in Go geschrieben und kann sowohl datenbasierte Backups erstellen als auch Backups, die aus dem stdout von z.B. mysqldump übergeben werden. Um Backups auf S3 mit restic noch einfacher zu machen, haben Github User Binarybucks die sogenannten “restic-tools” erstellt. Ich habe die Kombination aus Minio, restic und restic-tools bereits ein paar Wochen im Einsatz, um verschiedene Systeme zu sichern, darunter eine Univention-Konfiguration auf der Kopano installiert ist. Für das Univention-Setup benutze ich das folgene Skript zur Vorausführung von restic-tools:

echo "running kopano-backup"
mkdir -p /backup/bricklevel/ && cd /backup/bricklevel
kopano-backup -l INFO --skip-junk --skip-deleted -w 2 --differential
echo "backing up Kopano MySQL database"
mysqldump --defaults-extra-file=/etc/mysql/debian.cnf --single-transaction kopano | \
backup minio backup --tag mysql --stdin --stdin-filename kopano.sql

Somit habe ich mit einem einfachen “/usr/local/bin/backup minio local” eine vollständige Sicherung des Univention Datensystems geschaffen und davor zusätzlich das “kopano-backup” und einen MySQL Dump ausgelöst.

Soll ich jetzt all meine Apps migrieren, um Minio/ S3 für die Datensicherung zu benutzen?

Amazon S3 ist der Gold-Standard, wenn es darum geht, Datenspeicherplatz für Cloud-Anwendungen bereitzustellen. Tools wie Minio bieten denselben einfachen Anwendungszugriff (einfache HTTP-Requests) für Ihre Apps, ohne dass Sie die Kontrolle über Ihre Daten abgeben. Aber bedeutet das, dass Sie nun all Ihre Anwendungen migrieren sollen um S3 zu nutzen? Wahrscheinlich nicht, aber es hängt sehr stark davon ab, wie Ihre IT-Infrastruktur insgesamt aufgebaut ist. Wenn Sie z.B. Amazon S3 bereits für die Datensicherung Ihrer Apps nutzen, ist es relativ einfach die externe Abhängigkeit von Amazon durch eine selbstverwaltete Minio-Instanz zu ersetzen und existierende Buckets in Ihre Minio-Installation zu verschieben. Minio stellt dafür eine Reihe von Komandozeilen-Tools bereit.

Sie sind sich immer noch nicht sicher? Probieren Sie Minio einfach selbst aus. Sie finden es im Univention App Center zum Download in UCS.

Minio testen


UCS Core Edition jetzt kostenfrei einsetzen!

Zum Downloadbereich
Felix Bartels

Felix ist ein begeisterter Forum-Nutzer, ein Fernseh- und Filmjunkie und ein Fan davon, das richtige Werkzeug für den Job zu haben. In den letzten zehn Jahren war er als Vertriebsexperte, Professional Services Engineer und Product Owner eng mit den Partnern und Kunden von Kopano verbunden. Seine Erfahrung und sein analytisches Geschick machen ihn zum perfekten Release & QA Manager. Er ist maßgeblich an der Weiterentwicklung von Kopano Groupware Core, der Kopano OL Extension und dem Z-Push Projekt beteiligt.

Was ist Ihre Meinung? Hinterlassen Sie einen Kommentar!

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.