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.