Ești în căutarea unei soluții de stocare a obiectelor pe care să o poți găzdui pe serverul tău propriu?
Presupun că răspunsul este afirmativ.
Există o multitudine de servicii de stocare a obiectelor în cloud, cum ar fi AWS S3 și altele, pe care le-am menționat anterior. Totuși, dacă ai nevoie să păstrezi datele pe propriul server, MinIO poate fi soluția ideală pentru centrele tale de date.
MinIO este un software de stocare a obiectelor distribuit, open-source, renumit și compatibil cu S3. Este conceput pentru mediul enterprise și se remarcă prin performanțele sale superioare.
MinIO poate fi utilizat într-o gamă variată de scenarii, de la aplicații web simple, până la sarcini complexe de distribuție a datelor pentru aplicații de analiză și învățare automată. Iată câteva exemple de utilizare:
- Stocare standard pentru fișiere simple
- Distribuirea datelor în medii multi-cloud
- Soluții de recuperare în caz de dezastru
- Analiza datelor
Este un software complex?
Nu, dimensiunea sa este de aproximativ 50 MB și este compatibil cu Kubernetes. Stochează datele și metadatele sub formă de obiecte, eliminând necesitatea unei baze de date separate sau a unui alt software pentru metadate, ceea ce duce la o performanță îmbunătățită.
Arhitectura MinIO, prezentată pe site-ul lor oficial, este simplă și eficientă.
Haide să analizăm câteva dintre caracteristicile sale notabile:
- Performanță înaltă – după cum sugerează și numele, este capabil să atingă viteze de citire/scriere de aproximativ 170 GB/s. Aceasta este o performanță remarcabilă!
- Scalabilitate – permite gruparea și scalarea în funcție de necesități.
- Nativ cloud – este conceput pentru a funcționa optim în medii cloud.
- Protecția datelor – utilizează metoda codului de ștergere pentru siguranța datelor.
- Criptare multiplă – suportă algoritmi de criptare precum AES-CBC, AES-256-GCM, ChaCha20.
- Compatibilitate cu KMS – este compatibil cu sistemele de gestionare a cheilor (KMS) uzuale.
- Autentificare și autorizare – oferă mecanisme de autentificare și identitate pentru utilizatori și aplicații.
- Notificări evenimente – poate genera notificări la anumite evenimente.
- Federație – utilizează etcd și CoreDNS pentru federație.
MinIO reprezintă o alegere excelentă pentru stocarea definită de software. Să explorăm cum se configurează.
Instalarea Serverului MinIO
Poți instala MinIO pe Linux, Windows, macOS și prin Kubernetes. Daca preferi, poti face compilarea din surse, cu conditia sa ai Golang instalat.
Pentru această demonstrație, voi efectua instalarea pe CentOS, găzduit de Kamatera.
- Conectează-te la server.
- Creează un director în sistemul de fișiere dorit, de exemplu, „minio-server”.
- Navighează la directorul creat și rulează comanda wget de mai jos:
wget https://dl.min.io/server/minio/release/linux-amd64/minio
Această comandă va descărca un fișier binar. Acesta ar trebui să arate similar cu:
-rw-r--r-- 1 root root 48271360 Oct 18 21:57 minio
Transformă fișierul în executabil cu comanda chmod:
chmod 755 minio
Acum, pornește serverul MinIO:
./minio server /data &
„/data” reprezintă directorul în care MinIO va stoca obiectele.
Pornirea este rapidă și ar trebui să vezi informații similare cu cele de mai jos:
Endpoint: http://xx.71.141.xx:9000 http://127.0.0.1:9000
AccessKey: minioadmin
SecretKey: minioadmin
Browser Access:
http://xx.71.141.xx:9000 http://127.0.0.1:9000
Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc alias set myminio http://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'
Accesează MinIO prin browser folosind datele implicite de autentificare – minioadmin:minioadmin.
Interfața este intuitivă și ordonată, dar este important să schimbi datele implicite de autentificare, deoarece acestea reprezintă un risc de securitate. Nu există opțiune de a modifica datele de administrator prin intermediul browser-ului, ci prin variabile de mediu.
Pentru a schimba datele de autentificare, vom exporta cheia de acces și cheia secretă și vom porni MinIO:
export MINIO_ACCESS_KEY=tipstrick.ro
export MINIO_SECRET_KEY=geekpassword
./minio server /data &
Acum, nu ar trebui să mai apară avertismentul cu privire la acreditările implicite.
Să testăm încărcarea câtorva fișiere:
- Apasă pictograma „+” din dreapta jos și creează un „bucket”.
- Am încărcat un fișier de test și acesta este vizibil imediat în browser.
În server, vei observa:
[[email protected] geekflare]# ls -ltr
total 4
-rw-r--r-- 1 root root 11 Oct 19 11:09 MinIO-Test.txt
[[email protected] geekflare]#
Dacă dai click pe butonul de partajare a fișierelor, vei primi un link partajabil și opțiunea de a seta data de expirare.
Clientul MinIO
Clientul MinIO este mai mult decât un simplu „aws-cli”, oferind posibilitatea de a gestiona spațiul de stocare. Clientul este disponibil pentru Windows, macOS și Linux.
Pentru a-l instala pe Linux, rulează comenzile:
wget https://dl.min.io/client/mc/release/linux-amd64/mc
chmod 755 mc
Rulează comanda mc pentru a vedea informații despre utilizare:
[[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] ~]#
Să încercăm să listăm fișierul încărcat anterior folosind comanda mc.
Înainte de toate, trebuie să configurăm aliasul pentru spațiul de stocare pe care dorim să-l administrăm.
[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ tipstrick.ro geekpassword
Added `minio` successfully.
[[email protected] ~]#
- „minio” este numele aliasului. Poți să-l modifici după cum dorești.
- Înlocuiește punctul final HTTP cu cel corect.
- Înlocuiește cheia de acces și cheia secretă cu datele tale.
Pentru a lista, vom folosi comanda ls:
[[email protected] ~]# ./mc ls --recursive minio
[2020-10-19 11:09:06 UTC] 11B tipstrick.ro/MinIO-Test.txt
[[email protected] ~]#
Excelent. Funcționează!
Poți realiza aproape orice prin intermediul clientului, nu doar gestionarea stocării MinIO, ci și a GCS, AWS S3, Azure.
Consultă acest ghid de pornire rapidă pentru client pentru mai multe detalii.
SDK MinIO
În funcție de stiva ta de aplicații, poți interacționa cu stocarea de obiecte prin cod, folosind SDK-ul. Acesta este disponibil pentru Go, Python, Node.js, .NET, Haskell și Java.
Gateway MinIO
Adăugând gateway-ul MinIO la S3, Azure, NAS, HDFS, vei beneficia de browser-ul MinIO și de stocarea în cache pe disc.
Concluzie
Dacă ai nevoie de o soluție de stocare a obiectelor privată, hibridă sau multi-cloud, MinIO pare a fi o alegere promițătoare. Încearcă-l și vei vedea că este o soluție excelentă. Pentru a testa, poți obține o mașină virtuală MinIO de la Kamatera sau poți instala MinIO pe orice server cloud.