Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Smalltalk
Antworten
Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von paedubucher » 22.12.2022 06:50:15

Hinter dem heutigen Türchen verbergen sich Daten; und das gleich kübelweise! Wir erinnern uns an die verschlüsselte Kommunikation zwischen Rohan und Gondor vom 12. Dezember. Nachrichten und Dateien wurden dabei jeweils einzeln übertragen, und man musste sich auf der Gegenseite dafür bereithalten. Diese Lösung skaliert nicht besonders gut.

Also soll etwas zusätzliches her. Von Amazon S3 (Simple Storage Service) hat man gutes gehört. Gerüchten zufolge soll der Service aber in Mordor gehosted sein, und mit denen da hat man nun schon wirklich genug Ärger gehabt. Die Idee hinter S3 ist aber nicht verkehrt: die Daten werden in sogenannten Buckets (also Eimern) als Objekte gesammelt. Weitere Hierarchiestufen gibt es nicht; auch die Berechtigungen lassen sich nur auf Stufe Bucket festlegen.

Als Implementierung soll jedoch das freie MinIO zum Einsatz kommen. Dafür gibt es zwar kein offizielles Debian-Paket; typisch für Go-Anwendungen lässt es sich aber als einzelne Binärdatei herunterladen. So hat sich Gondor bereiterklärt, das Hosting zu übernehmen. Und so wird MinIO installiert und konfiguriert:

Code: Alles auswählen

faramir@gondor:~$ wget https://dl.min.io/server/minio/release/linux-amd64/minio
faramir@gondor:~$ chmod +x minio
faramir@gondor:~$ cat >> ~/.bashrc
export MINIO_ROOT_USER=aragorn
export MINIO_ROOT_PASSWORD=arwen_mein_schaetzle
[Ctrl]-[D]
faramir@gondor:~$ . ~/.bashrc
faramir@gondor:~$ mkdir ~/minio-data
Benutzername und Passwort werden als Umgebungsvariablen gespeichert. Es wird auch ein Datenverzeichnis für MinIO angelegt. Nun kann der Server bereits gestartet werden:

Code: Alles auswählen

faramir@gondor:~$ ./minio server minio-data/
Unter http://localhost:9000 liesse sich nun ein Web-Interface aufrufen, doch darauf verzichten wir an dieser Stelle.

Stattdessen verwenden wir mc: den MinIO-Client für die Kommandozeile. Auch den müssen wir herunterladen und ausführbar machen:

Code: Alles auswählen

faramir@gondor:~$ wget https://dl.min.io/client/mc/release/linux-amd64/mc
faramir@gondor:~$ chmod +x mc
Nun wollen wir für mc ein Alias für die lokale MinIO-Instanz einrichten, welches uns die Zugriffe erleichtern wird:

Code: Alles auswählen

faramir@gondor:~$ ./mc alias set local http://localhost:9000 aragorn arwen_mein_schaetzle
Added `local` successfully.
Unter diesem Alias erfolgt nun der Zugriff auf MinIO ohne weitere Authentifizierung. Als erstes soll nun ein Bucket erstellt werden, der zeitgeistgemäss mit „innovationen“ betitelt wird, wozu der Befehl mc mb (MinIO Client, make bucket) zum Einsatz kommt:

Code: Alles auswählen

faramir@gondor:~$ ./mc mb local/innovationen
Bucket created successfully `local/innovationen`.
Bei der Belagerung Gondors war u.a. eine Vorrichtung im Einsatz, die der lokale Chronist unter dem Titel „Frittierwagen“ als Stich abgelegt hat. Dieses Artefakt soll in dem entsprechenden Kübel abgelegt werden:

Code: Alles auswählen

faramir@gondor:~$ wget https://debianforum.de/forum/gallery/image/3893/source -O frittierwagen.png
faramir@gondor:~$ ./mc cp frittierwagen.png local/innovationen/
faramir@gondor:~$ ./mc ls local/innovationen/
[2022-12-21 21:14:13 CET] 1.9MiB STANDARD frittierwagen.png
Das hat funktioniert. Doch kann man auch vonseiten Rohans auf diese technische Errungenschaft zugreifen? Dazu müsste dort auch mc eingerichtet werden. Oder einfach eine Alternative wie Debians3cmd, womit man auch auf die Amazon-Variante von S3 zugreifen kann, falls man dereinst doch noch mit Mordor Geschäfte machen möchte:

Code: Alles auswählen

eomer@rohan:~$ sudo apt install -y s3cmd
eomer@rohan:~$ cat > ~/.s3cfg
host_base = gondor:9000
host_bucket = gondor:9000
use_https = False
access_key = aragorn
secret_key = arwen_mein_schaetzle
[Ctrl]-[D]
eomer@rohan:~$ s3cmd ls s3://innovationen
2022-12-21 20:14      1965381  s3://innovationen/frittierwagen.png
Der access_key entspricht dem MinIO-Benutzernamen; der secret_key dem MinIO-Passwort. (Bei MinIO ist man von den S3-typischen Bezeichnungen weggekommen.)

Der Zugriff auf den Bucket im entfernten Gondor funktioniert. So schickt man schnell ein paar Feriengrüsse dorthin:

Code: Alles auswählen

eomer@rohan:~$ wget https://debianforum.de/forum/gallery/image/3893/source -O ansichtskarte.png
eomer@rohan:~$ s3cmd put ansichtskarte.png s3://innovationen
In Gondor freut man sich darüber und sichert die Datei gleich lokal zur Betrachtung:

Code: Alles auswählen

faramir@gondor:~$ ./mc ls local/innovationen
[2022-12-21 21:41:27 CET] 1.9MiB STANDARD ansichtskarte.png
[2022-12-21 21:14:13 CET] 1.9MiB STANDARD frittierwagen.png
faramir@gondor:~$ ./mc cp local/innovationen/ansichtskarte.png .
Noch schöner wäre es allerdings, wenn man nicht die mc-Befehle für den Zugriff verwenden müsste, sondern die Standard-Unix-Werkzeuge dafür verwenden könnte. Auch das geht wunderbar mit einem FUSE für S3 ‒ Debians3fs:

Code: Alles auswählen

faramir@gondor:~$ sudo apt install -y s3fs
faramir@gondor:~$ cat > ~/.passwd-s3fs
aragorn:arwen_mein_schaetzle
[Ctrl]-[D]
faramir@gondor:~$ chmod 600 ~/.passwd-s3fs
faramir@gondor:~$ mkdir ~/innovationen
faramir@gondor:~$ s3fs innovationen ~/innovationen -o use_path_request_style,url=http://localhost:9000
faramir@gondor:~$ ls ~/innovationen/
ansichtskarte.png  frittierwagen.png
faramir@gondor:~$ du -h ~/innovationen/*
1.9M    /home/faramir/innovationen/ansichtskarte.png
1.9M    /home/faramir/innovationen/frittierwagen.png
Im Gegensatz zu s3cmd legt s3fs Wert darauf, dass die Konfigurationsdatei eingeschränkte Zugriffsrechte hat. Es wird ein einzelner Bucket in ein lokales Verzeichnis gemounted. Der Mount kann mittels umount wieder entfernt werden:

Code: Alles auswählen

faramir@gondor:~$ umount ~/innovationen
Das wäre eine kurze Tour durch den Simple Storage Service mit der freien Implementierung MinIO und den Hilfsprogrammen s3cmd und s3fs gewesen. Die grafische Benutzeroberfläche von MinIO ist auch sehr komfortabel. Auf Zusatzfunktionen wie Berechtigungen, Tags, Spiegelung usw. möchte ich an dieser Stelle nicht eingehen; ihr braucht ja auch noch etwas zum selber erkundigen.

Habt Ihr für sowas einen Verwendungszweck? Von verschiedenen „heimischen Clouds“ für die Datenablage haben wir im diesjährigen Kalender so einiges lesen können. Passt MinIO/S3 für euch da irgendwo hinein?
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

TuxPeter
Beiträge: 1962
Registriert: 19.11.2008 20:39:02
Lizenz eigener Beiträge: MIT Lizenz

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von TuxPeter » 22.12.2022 11:49:22

Hi,
ich muss sagen, dass mir diese Möglichkeiten, die hier aufgezeigt werden, sehr interessant erscheinen und wohl durchaus für mich passen könnten. Leider ist z.Zt. wenig Zeit, das auch mal aktiv auszuprobieren, obwohl die "Kochrezepte" - und das gilt auch für andere Adventstürchen - ja wirklich sehr nutzerfreundlich vorstrukturiert und auch noch angenehm zu lesen sind.

Vielleicht sollte ich mir aus dem gestrigen Beitrag mal die Zeitkarten nehmen, um aus den ganzen feinen Sachen des Kalenders solch ein "Kanbanboard" zu basteln ...

Auf jeden Fall: Danke für die schönen Beiträge!

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von paedubucher » 22.12.2022 12:53:24

TuxPeter hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 11:49:22
ich muss sagen, dass mir diese Möglichkeiten, die hier aufgezeigt werden, sehr interessant erscheinen und wohl durchaus für mich passen könnten. Leider ist z.Zt. wenig Zeit, das auch mal aktiv auszuprobieren, obwohl die "Kochrezepte" - und das gilt auch für andere Adventstürchen - ja wirklich sehr nutzerfreundlich vorstrukturiert und auch noch angenehm zu lesen sind.
Diese Worte hätte ich unter so manches Türchen schreiben können. Gerade das Kanban von gestern oder den Beitrag zu lex, um nur zwei zu nennen, möchte ich mir zwischen Weihnachten und Neujahr genauer zu Gemüte führen. Aber das Forum ist ja eine beständige Sache, und ruhigere Zeiten sind bei vielen Leuten gleich um die Ecke :THX:
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
spiralnebelverdreher
Beiträge: 1296
Registriert: 23.12.2005 22:29:03
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Frankfurt am Main

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von spiralnebelverdreher » 22.12.2022 18:20:17

paedubucher hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 06:50:15
Habt Ihr für sowas einen Verwendungszweck? Von verschiedenen „heimischen Clouds“ für die Datenablage haben wir im diesjährigen Kalender so einiges lesen können. Passt MinIO/S3 für euch da irgendwo hinein?
Danke für deinen Beitrag, er ist für mich interessant (hab ihn bisher aber nur überflogen) da ich schon seit Jahren mittels S3 Daten speichere. Mittels S3 Buckets stelle ich kostengünstig drei Webseiten (statisches HTML) zur Verfügung. Ich nutze dafür bisher die Weboberfläche von aws und s3cmd. MinIO kann da vielleicht manches erleichtern.

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von paedubucher » 22.12.2022 22:35:47

spiralnebelverdreher hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 18:20:17
paedubucher hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 06:50:15
Habt Ihr für sowas einen Verwendungszweck? Von verschiedenen „heimischen Clouds“ für die Datenablage haben wir im diesjährigen Kalender so einiges lesen können. Passt MinIO/S3 für euch da irgendwo hinein?
Mittels S3 Buckets stelle ich kostengünstig drei Webseiten (statisches HTML) zur Verfügung.
Wie wird das HTML genau zur Verfügung gestellt? Schaltest du da einen Server dazwischen?
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
heisenberg
Beiträge: 3540
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von heisenberg » 22.12.2022 23:15:42

Wenn ich das also so richtig verstehe, ist eine mögliche Nutzung eines Buckets also "Dateisystem"?

Wo sind die Vorteile davon? Im Vergleich zu CIFS? WebDAV?
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von paedubucher » 23.12.2022 08:59:05

heisenberg hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 23:15:42
Wenn ich das also so richtig verstehe, ist eine mögliche Nutzung eines Buckets also "Dateisystem"?
Bei vielen Anwendungen geht es eher darum ohne Dateisystem auszukommen und die Dateien als Objekte in einem S3-Bucket verfügbar zu machen. Das lokale einbinden ist natürlich auch oft hilfreich, beispielsweise zur Fehlersuche. In der Firma verwenden wir VMs von verschiedenen Cloud-Anbietern. Die Backups spiegeln wir dann per S3 auf einen jeweils anderen Anbieter; alles per S3.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
spiralnebelverdreher
Beiträge: 1296
Registriert: 23.12.2005 22:29:03
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Frankfurt am Main

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von spiralnebelverdreher » 23.12.2022 09:01:40

paedubucher hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 22:35:47
spiralnebelverdreher hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 18:20:17
paedubucher hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 06:50:15
Habt Ihr für sowas einen Verwendungszweck? Von verschiedenen „heimischen Clouds“ für die Datenablage haben wir im diesjährigen Kalender so einiges lesen können. Passt MinIO/S3 für euch da irgendwo hinein?
Mittels S3 Buckets stelle ich kostengünstig drei Webseiten (statisches HTML) zur Verfügung.
Wie wird das HTML genau zur Verfügung gestellt? Schaltest du da einen Server dazwischen?
Du legst in deinem Bucket eine index.html an und wählst bei Bucket Eigenschaften "static website" (oder so ähnlich) aus. Das ist bei aws hier beschrieben: https://docs.aws.amazon.com/AmazonS3/la ... sting.html

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von paedubucher » 23.12.2022 11:47:52

spiralnebelverdreher hat geschrieben: ↑ zum Beitrag ↑
23.12.2022 09:01:40
paedubucher hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 22:35:47
spiralnebelverdreher hat geschrieben: ↑ zum Beitrag ↑
22.12.2022 18:20:17

Mittels S3 Buckets stelle ich kostengünstig drei Webseiten (statisches HTML) zur Verfügung.
Wie wird das HTML genau zur Verfügung gestellt? Schaltest du da einen Server dazwischen?
Du legst in deinem Bucket eine index.html an und wählst bei Bucket Eigenschaften "static website" (oder so ähnlich) aus. Das ist bei aws hier beschrieben: https://docs.aws.amazon.com/AmazonS3/la ... sting.html
Sehr interessant! Aber leider wohl auch so etwas, das die anderen S3-Anbieter wohl kaum anbieten. Wobei ich bisher in Minio noch nicht nach der Option gesucht habe...
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Benutzeravatar
heisenberg
Beiträge: 3540
Registriert: 04.06.2015 01:17:27
Lizenz eigener Beiträge: MIT Lizenz

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von heisenberg » 23.12.2022 15:27:31

paedubucher hat geschrieben: ↑ zum Beitrag ↑
Bei vielen Anwendungen geht es eher darum ohne Dateisystem auszukommen und die Dateien als Objekte in einem S3-Bucket verfügbar zu machen. Das lokale einbinden ist natürlich auch oft hilfreich, beispielsweise zur Fehlersuche. In der Firma verwenden wir VMs von verschiedenen Cloud-Anbietern. Die Backups spiegeln wir dann per S3 auf einen jeweils anderen Anbieter; alles per S3.
Ok. Es ist einfach ein Speicher, der angenehm zu bedienen ist für einzelne Dateien. Gibt es sonst noch Vorteile?

Minio ist für mich da eine mögliche Alternative. AWS eher nicht, aus 2 Gründen:
  1. Die Kostenrechnung ist für mich da einfach viel zu kompliziert.
  2. AWS setzt als einziger Cloudanbieter u. a. bei der Stromversorgung seiner Infrastruktur auf fossile Energieträger statt auf 100% erneuerbare. Weiterer Aspekt dieses Argumentes ist, das AWS die fossile Energiebranche durch eigene "KI"-Technologien unterstützt. Zu letzterem weiss ich nichts genaueres.
Jede Rohheit hat ihren Ursprung in einer Schwäche.

Benutzeravatar
paedubucher
Beiträge: 855
Registriert: 22.02.2009 16:19:02
Lizenz eigener Beiträge: GNU Free Documentation License
Wohnort: Schweiz
Kontaktdaten:

Re: Adventskalender 22. Dezember 2022 - Daten kübelweise ablegen

Beitrag von paedubucher » 23.12.2022 20:39:44

heisenberg hat geschrieben: ↑ zum Beitrag ↑
23.12.2022 15:27:31
paedubucher hat geschrieben: ↑ zum Beitrag ↑
Bei vielen Anwendungen geht es eher darum ohne Dateisystem auszukommen und die Dateien als Objekte in einem S3-Bucket verfügbar zu machen. Das lokale einbinden ist natürlich auch oft hilfreich, beispielsweise zur Fehlersuche. In der Firma verwenden wir VMs von verschiedenen Cloud-Anbietern. Die Backups spiegeln wir dann per S3 auf einen jeweils anderen Anbieter; alles per S3.
Ok. Es ist einfach ein Speicher, der angenehm zu bedienen ist für einzelne Dateien. Gibt es sonst noch Vorteile?
Es bietet auch Features wie Tags, Quotas, Mirroring usw. an. Mit MinIO kann man beispielsweise auch Links zum "Teilen" generieren, die dann entsprechende Berechtigungen mitgeben. Dazu kommen die vielen Libraries/Tools für den direkten Zugriff auf Remote-Speicher. Mit (S)FTP kann man sicherlich vieles auch abdecken.
Habe nun, ach! Java
Python und C-Sharp,
Und leider auch Visual Basic!
Durchaus programmiert mit heissem Bemühn.
Da steh' ich nun, ich armer Tor!
Und bin so klug als wie zuvor.

Antworten