Probieren Sie MinIO aus – selbst gehosteter S3-konformer Hochleistungs-Objektspeicher

Sind Sie auf der Suche nach einer Objektspeicherlösung, die Sie auf Ihren eigenen Servern betreiben können?

Vermutlich ja, oder?

Es gibt zahlreiche Cloud-basierte Objektspeicherangebote wie AWS S3 und andere Dienste, die ich bereits erwähnt habe. Wenn Sie Ihre Daten jedoch lieber auf Ihren eigenen Servern hosten möchten, könnte MinIO eine interessante Option für Ihre Rechenzentren sein.

MinIO ist eine quelloffene, weit verbreitete verteilte Objektspeicherlösung, die mit dem S3-Protokoll kompatibel ist. Sie ist für den Unternehmenseinsatz konzipiert und bekannt für ihre hohe Leistungsfähigkeit.

MinIO ist flexibel einsetzbar, von einfachen Webanwendungen bis hin zu komplexen Datenverteilungs-Workloads für Analyse- und maschinelles Lernen. Die Einsatzmöglichkeiten sind vielfältig:

  • Standardmäßiger Flat-File-Speicher
  • Datenverteilung über mehrere Clouds
  • Notfallwiederherstellung
  • Datenanalysen

Handelt es sich um eine umfangreiche Software?

Nein, mit einer Größe von etwa 50 MB ist MinIO sehr schlank und Kubernetes-freundlich. Es speichert Daten und Metadaten als Objekte, wodurch keine zusätzliche Datenbank oder Software für die Metadatenverwaltung benötigt wird, was die Performance verbessert.

Die folgende Architektur stammt von der offiziellen Webseite.

Lassen Sie uns einige der bemerkenswerten Funktionen genauer betrachten:

  • Hohe Leistung: Wie der Name schon sagt, bietet MinIO eine beachtliche Lese- und Schreibleistung von etwa 170 GB/s.
  • Skalierbarkeit: Durch Clustering können Sie die Kapazität nach Bedarf erweitern.
  • Cloud-nativ: MinIO ist für den Einsatz in Cloud-Umgebungen optimiert.
  • Datensicherheit durch Erasure-Code-Verfahren
  • Unterstützung verschiedener Verschlüsselungsverfahren, einschließlich AES-CBC, AES-256-GCM, ChaCha20
  • Kompatibilität mit gängigen KMS (Key Management Systems)
  • Anwendungs- und Benutzeridentitätsmanagement
  • Ereignisbenachrichtigung
  • Integration mit etcd und CoreDNS

MinIO ist eine ausgezeichnete Wahl für softwaredefinierten Speicher. Im Folgenden erläutern wir, wie Sie das System einrichten.

MinIO-Server installieren

Sie können MinIO unter Linux, Windows, macOS und über Kubernetes installieren. Wenn Sie es bevorzugen, direkt aus dem Quellcode zu bauen, ist dies mit installierter Golang-Umgebung ebenfalls möglich.

Für diese Demonstration werde ich die Installation auf CentOS durchführen, das von Kamatera gehostet wird.

  • Melden Sie sich am Server an.
  • Erstellen Sie einen Ordner im gewünschten Dateisystem, z.B. ‚minio-server‘.
  • Wechseln Sie in den neu erstellten Ordner und führen Sie den folgenden wget-Befehl aus:
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Dies lädt eine Binärdatei herunter, die wie folgt aussehen sollte:

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

Machen Sie die Datei mit dem ‚chmod‘-Befehl ausführbar:

chmod 755 minio

Starten wir nun MinIO als Server:

./minio server /data &

Das oben genannte ‚/data‘ ist das Dateisystem, in dem MinIO die Objekte speichert.

Der Startvorgang ist schnell, und Sie sollten Informationen ähnlich den folgenden sehen:

Endpoint:  https://xx.71.141.xx:9000 https://127.0.0.1:9000
AccessKey: minioadmin
SecretKey: minioadmin

Browser Access:
   https://xx.71.141.xx:9000 https://127.0.0.1:9000

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
   $ mc alias set myminio https://xx.71.141.xx:9000 minioadmin minioadmin

Object API (Amazon S3 compatible):
   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
Detected default credentials 'minioadmin:minioadmin', please change the credentials immediately using 'MINIO_ACCESS_KEY' and 'MINIO_SECRET_KEY'

Lassen Sie uns über den Browser auf MinIO mit den Standardanmeldeinformationen zugreifen – minioadmin:minioadmin.

Die Benutzeroberfläche ist sehr übersichtlich und benutzerfreundlich. Es ist jedoch entscheidend, die Standardanmeldeinformationen zu ändern, da sie ein Sicherheitsrisiko darstellen. Es gibt keine Möglichkeit, die Administratoranmeldeinformationen über den Browser zu ändern, sondern nur über Umgebungsvariablen.

Um die Standardanmeldeinformationen für MinIO zu ändern, exportieren wir den Zugriff und den geheimen Schlüssel wie folgt und starten MinIO neu:

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

Nun sollte keine Warnung mehr bezüglich der Standardanmeldeinformationen angezeigt werden.

Versuchen wir nun, einige Dateien hochzuladen.

  • Klicken Sie auf das „+“-Symbol unten rechts und erstellen Sie einen Bucket.
  • Ich habe eine Testdatei hochgeladen und sie wird sofort im Browser angezeigt.

Und auf dem Server:

[[email protected] geekflare]# ls -ltr
total 4
-rw-r--r-- 1 root root 11 Oct 19 11:09 MinIO-Test.txt
[[email protected] geekflare]#

Wenn Sie im Browser auf die Schaltfläche zum Teilen einer Datei klicken, erhalten Sie einen teilbaren Link und die Möglichkeit, ein Ablaufdatum festzulegen.

MinIO-Client

Der MinIO-Client ist eine Alternative zu aws-cli, mit der 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:

[[email protected] ~]# ./mc
NAME:
  mc - MinIO Client for cloud storage and filesystems.

USAGE:
  mc [FLAGS] COMMAND [COMMAND FLAGS | -h] [ARGUMENTS...]

COMMANDS:
  alias      set, remove and list aliases in configuration file
  ls         list buckets and objects
  mb         make a bucket
  rb         remove a bucket
  cp         copy objects
  mirror     synchronize object(s) to a remote site
  cat        display object contents
  head       display first 'n' lines of an object
  pipe       stream STDIN to an object
  share      generate URL for temporary access to an object
  find       search for objects
  sql        run sql queries on objects
  stat       show object metadata
  mv         move objects
  tree       list buckets and objects in a tree format
  du         summarize disk usage recursively
  retention  set retention for object(s)
  legalhold  manage legal hold for object(s)
  diff       list differences in object name, size, and date between two buckets
  rm         remove objects
  version    manage bucket versioning
  ilm        manage bucket lifecycle
  encrypt    manage bucket encryption config
  event      manage object notifications
  watch      listen for object notification events
  undo       undo PUT/DELETE operations
  policy     manage anonymous access to buckets and objects
  tag        manage tags for bucket and object(s)
  replicate  configure server side bucket replication
  admin      manage MinIO servers
  update     update mc to latest release

GLOBAL FLAGS:
  --autocompletion              install auto-completion for your shell
  --config-dir value, -C value  path to configuration folder (default: "/root/.mc")
  --quiet, -q                   disable progress bar display
  --no-color                    disable color theme
  --json                        enable JSON lines formatted output
  --debug                       enable debug output
  --insecure                    disable SSL certificate verification
  --help, -h                    show help
  --version, -v                 print the version

TIP:
  Use 'mc --autocompletion' to enable shell autocompletion

VERSION:
  RELEASE.2020-10-03T02-54-56Z
[[email protected] ~]#

Versuchen wir, die Datei aufzulisten, die ich über den mc-Befehl hochgeladen habe.

Zuerst müssen wir den Alias für den Speicher festlegen, den wir verwalten möchten:

[[email protected] ~]# ./mc alias set minio https://xx.71.141.xx:9000/ wdzwdz geekpassword
Added `minio` successfully.
[[email protected] ~]#
  • ‚minio‘ ist der Aliasname. Sie können ihn beliebig ändern.
  • Ändern Sie den HTTP-Endpunkt zu Ihrem korrekten Endpunkt.
  • Ändern Sie den Zugriff und den geheimen Schlüssel zu Ihren eigenen.

Um die Dateien aufzulisten, wird der Befehl ‚ls‘ wie folgt verwendet:

[[email protected] ~]# ./mc ls --recursive minio
[2020-10-19 11:09:06 UTC]    11B wdzwdz/MinIO-Test.txt
[[email protected] ~]#

Sehr gut. Es funktioniert!

Über den Client können Sie im Grunde alles tun. Sie können nicht nur MinIO-Cloud-Speicher verwalten, sondern auch GCS, AWS S3, Azure.

Weitere Informationen finden Sie in der Client-Kurzanleitung.

MinIO-SDK

Je nach Ihrem Anwendungs-Stack können Sie programmgesteuert mit dem Objektspeicher interagieren. MinIO unterstützt SDKs für Go, Python, Node.js, .NET, Haskell und Java.

MinIO-Gateway

Mit dem MinIO-Gateway können Sie S3, Azure, NAS und HDFS anbinden und von den Vorteilen des MinIO-Browsers und des Festplatten-Cachings profitieren.

Fazit

Wenn Sie nach einer privaten, hybriden oder Multi-Cloud-Objektspeicherlösung suchen, ist MinIO eine vielversprechende Option. Probieren Sie es aus, und Sie werden es wahrscheinlich schätzen. Für Testzwecke können Sie eine MinIO-VM von Kamatera verwenden oder es selbst auf einem beliebigen Cloud-Server installieren.