Sind Sie auf der Suche nach einer Objektspeicher-Software, die Sie auf Ihrem Server hosten können?

Ich nehme an, ja?

Es gibt viele Cloud-basierte Objektspeicher wie AWS S3 und andere, die ich hier erwähnt habe. Wenn Sie Ihre Daten jedoch auf Ihrem Server hosten müssen, kann MinIO in Ihren Rechenzentren helfen.

MiniIO ist eine beliebte Open-Source-Software für die verteilte Speicherung von Objekten, die mit S3 kompatibel ist. Es ist unternehmenstauglich und für seine hohe Leistung bekannt.

Sie können MinIO von einer einfachen Webanwendung bis hin zu großen Datenverteilungsworkloads für Analyse- und maschinelle Lernanwendungen einsetzen. Es kann in vielen Anwendungsfällen helfen.

  • Standard-Flat-File-Speicherung
  • Multi-cloud Datenverteilung
  • Disaster Recovery
  • Datenanalytik

Ist es eine sperrige Software?

Nein, sie ist nur ca. 50 MB groß und Kubernetes-freundlich. Es schreibt Daten und Metadaten als Objekt. Damit entfällt die Abhängigkeit von einer zusätzlichen Datenbank oder Software zur Speicherung von Metadaten und die Leistung wird verbessert.

Die untenstehende Architektur stammt von der offiziellen Website.

Schauen wir uns einige der erwähnenswerten Funktionen an.

  • Leistungsstark – wie der Titel schon sagt. Es ist in der Lage, mit einer Geschwindigkeit von ~170GB/s zu lesen/schreiben. Das ist eine ganze Menge!
  • Skalierbar – entscheiden Sie sich für Clustering und skalieren Sie nach Bedarf
  • Cloud-nativ
  • Datenschutz durch Erasure-Code-Methode
  • Unterstützt mehrere Verschlüsselungen, darunter AES-CBC, AES-256-GCM, ChaCha20
  • Kompatibel mit gängigen KMS
  • Anwendungs- und Benutzeridentität
  • Ereignis-Benachrichtigung
  • Verbund mit etcd und CoreDNS

MinIO ist eine gute Wahl für softwaredefinierten Speicher. Schauen wir uns an, wie Sie die Dinge einrichten.

Installieren von MinIO Server

Sie können es unter Linux, Windows, macOS und über Kubernetes installieren. Bevorzugen Sie die Erstellung über den Quellcode? Sicher, das können Sie, wenn Sie Golang installiert haben.

Für diese Demonstration werde ich auf CentOS installieren, das auf Kamatera gehostet wird.

  • Melden Sie sich auf dem Server an
  • Erstellen Sie einen Ordner im gewünschten Dateisystem. Vielleicht minio-server
  • Navigieren Sie zu dem neu erstellten Ordner und führen Sie den folgenden wget-Befehl aus
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Es wird eine Binärdatei heruntergeladen, die wie folgt aussehen sollte.

-rw-r--r-- 1 root root 48271360 Oct 18 21:57 minio

Machen Sie die Datei mit dem Befehl chmod ausführbar

chmod 755 minio

Starten wir den MinIO als Server.

./minio server /data &

das oben erwähnte/data ist das Dateisystem, in dem MinIO die Objekte speichern wird.

Das Starten geht schnell und Sie sollten die Startinformationen wie unten sehen.

Endpunkt: http://xx.71.141.xx:9000 http://127.0.0.1:9000      
AccessKey: minioadmin 
GeheimSchlüssel: minioadmin 

Browser-Zugang:
   http://xx.71.141.xx:9000 http://127.0.0.1:9000      

Kommandozeilen-Zugang: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio http://xx.71.141.xx:9000 minioadmin minioadmin

Objekt-API (Amazon S3 kompatibel):
   Go: https://docs.min.io/docs/golang-client-quickstart-guide
   Java: https://docs.min.io/docs/java-client-quickstart-guide
   Python: https://docs.min.io/docs/python-client-quickstart-guide
   JavaScript: https://docs.min.io/docs/javascript-client-quickstart-guide
   .NET: https://docs.min.io/docs/dotnet-client-quickstart-guide
Erkannte Standard-Anmeldeinformationen 'minioadmin:minioadmin', bitte ändern Sie die Anmeldeinformationen sofort mit 'MINIO_ACCESS_KEY' und 'MINIO_SECRET_KEY'

Greifen wir auf MinIO im Browser mit den Standard-Anmeldeinformationen zu – minioadmin:minioadmin

Die Oberfläche ist sehr ordentlich und sauber, aber bevor wir etwas tun, sollten wir die Standard-Zugangsdaten ändern, da sie ein Risiko darstellen. Es gibt keine Möglichkeit, die Admin-Anmeldeinformationen über den Browser zu ändern, sondern nur über Umgebungsvariablen.

Um die Standard-Anmeldeinformationen von MinIO zu ändern, exportieren wir den Zugriffsschlüssel und den geheimen Schlüssel wie unten beschrieben und starten MinIO.

export MINIO_ACCESS_KEY=geekflare
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

Jetzt sollte es keine Warnung wegen der Erkennung von Standard-Anmeldeinformationen mehr geben.

Lassen Sie uns versuchen, einige Dateien hochzuladen.

  • Klicken Sie auf das Symbol unten rechts und erstellen Sie einen Bucket
  • Ich habe eine Testdatei hochgeladen und sie ist sofort im Browser sichtbar

und auf dem Server

[root@gf-lab geekflare]# ls -ltr
insgesamt 4
-rw-r--r-- 1 root root 11 Oct 19 11:09 MinIO-Test.txt
[root@gf-lab geekflare]#

Wenn Sie im Browser auf die Schaltfläche Dateifreigabe klicken, erhalten Sie den freizugebenden Link und eine Option zum Einstellen des Ablaufs.

MinIO-Client

Der MinIO-Client ist mehr als ein aws-cli, mit dem Sie den Speicher verwalten können. Der Client ist für Windows, macOS und Linux verfügbar.

Zur Installation unter Linux führen Sie Folgendes aus.

wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod 755 mc

Führen Sie den Befehl mc aus, um die Befehlshilfe anzuzeigen.

[root@gf-lab ~]# ./mc
NAME:
  mc - MinIO Client für Cloud-Speicher und Dateisysteme.

ANWENDUNG:
  mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTE...]

KOMMANDOS:
  alias setzen, entfernen und auflisten von Aliasen in der Konfigurationsdatei
  ls Buckets und Objekte auflisten
  mb einen Bucket erstellen
  rb einen Bucket entfernen
  cp Objekte kopieren
  mirror Objekt(e) mit einem entfernten Standort synchronisieren
  cat Objektinhalt anzeigen
  head zeigt die ersten 'n' Zeilen eines Objekts an
  pipe stream STDIN an ein Objekt weiterleiten
  share URL für temporären Zugriff auf ein Objekt erzeugen
  find Suche nach Objekten
  sql führt sql-Abfragen auf Objekte aus
  stat zeigt Objekt-Metadaten an
  mv Objekte verschieben
  tree Buckets und Objekte in einem Baumformat auflisten
  du fasst die Festplattennutzung rekursiv zusammen
  retention Aufbewahrung für Objekt(e) festlegen
  legalhold verwaltet die Aufbewahrungsfrist für ein oder mehrere Objekte
  diff Unterschiede in Objektname, Größe und Datum zwischen zwei Buckets auflisten
  rm Objekte entfernen
  version Versionierung des Buckets verwalten
  ilm verwaltet den Lebenszyklus von Buckets
  encrypt Verschlüsselungseinstellungen für Buckets verwalten
  event Objektbenachrichtigungen verwalten
  watch Lauschen auf Objektbenachrichtigungsereignisse
  undo PUT/DELETE-Operationen rückgängig machen
  policy verwaltet anonymen Zugriff auf Buckets und Objekte
  tag verwaltet Tags für Bucket und Objekt(e)
  replicate konfiguriert die serverseitige Bucket-Replikation
  admin MinIO-Server verwalten
  update mc auf die neueste Version aktualisieren
  
GLOBALE FLAGS:
  --autocompletion installiert die automatische Vervollständigung für Ihre Shell
  --config-dir Wert, -C Wert Pfad zum Konfigurationsverzeichnis (Standard: "/root/.mc")
  --quiet, -q deaktivieren Sie die Anzeige des Fortschrittsbalkens
  --no-color Farbthema deaktivieren
  --json aktiviert JSON-Zeilen-formatierte Ausgabe
  --debug aktiviert die Debug-Ausgabe
  --insecure deaktiviert die Überprüfung des SSL-Zertifikats
  --help, -h Hilfe anzeigen
  --version, -v gibt die Version aus
  
TIPP:
  Verwenden Sie 'mc --autocompletion', um die automatische Shell-Vervollständigung zu aktivieren

VERSION:
  RELEASE.2020-10-03T02-54-56Z
[root@gf-lab ~]#

Lassen Sie uns versuchen, die Datei aufzulisten, die ich mit dem Befehl mc hochgeladen habe.

Zuerst müssen wir den Alias auf den Speicher setzen, den wir verwalten wollen.

[root@gf-lab ~]# ./mc alias set minio http://xx.71.141.xx:9000/ geekflare geekpassword
Erfolgreich `minio` hinzugefügt.
[root@gf-lab ~]#
  • minio ist der Name des Alias. Sie können diesen Namen ändern, wie Sie wollen.
  • Ändern Sie den HTTP-Endpunkt in Ihren echten Endpunkt
  • Ändern Sie den Zugang und den geheimen Schlüssel in den Ihren

und verwenden Sie zum Auflisten den Befehl ls wie folgt.

[root@gf-lab ~]# ./mc ls --recursive minio 
[2020-10-19 11:09:06 UTC] 11B geekflare/MinIO-Test.txt
[root@gf-lab ~]#

Großartig. Es funktioniert!

Sie können buchstäblich alles über den Client machen. Sie können nicht nur den MinIO Cloud-Speicher verwalten, sondern auch GCS, AWS S3, Azure.

Weitere Einzelheiten finden Sie in dieser Client-Kurzanleitung.

MinIO SDK

Abhängig von Ihrem Anwendungsstack können Sie mit dem SDK programmatisch mit dem Objektspeicher interagieren. Es unterstützt Go, Python, Node.js, .NET, Haskell und Java.

MinIO-Gateway

Fügen Sie MiniIO Gateway zu S3, Azure, NAS, HDFS hinzu, um die Vorteile von MinIO Browser und Disk Caching zu nutzen.

Schlussfolgerung

Wenn Sie einen privaten, hybriden oder Multi-Cloud-Objektspeicher suchen, dann sieht MinIO vielversprechend aus. Probieren Sie es aus und Sie werden sich in die Software verlieben. Zum Testen können Sie die MinIO-VM von Kamatera erhalten oder selbst auf einem beliebigen Cloud-Server installieren.