MinIO: Rask, skalerbar & selvhostet objektlagring – S3-kompatibel!

Utforsk MinIO: Din egen S3-kompatible objektlagring

Ser du etter en løsning for å lagre objekter direkte på din egen server? Da er du kanskje på rett spor.

Javisst, det finnes mange skybaserte alternativer som AWS S3 og andre. Men om du foretrekker å ha full kontroll over dine data og lagre dem lokalt på egne servere, kan MinIO være akkurat det du trenger.

MinIO er et populært, åpent kildekode-prosjekt som tilbyr distribuert objektlagring med S3-kompatibilitet. Denne løsningen er designet for bedrifter og er kjent for sin høye ytelse.

MinIO er fleksibel og kan brukes i mange sammenhenger, fra enkle webapplikasjoner til komplekse dataanalyse- og maskinlæringsarbeidsflyter.

  • Grunnleggende filsystemlagring
  • Datadistribusjon på tvers av flere skyer
  • Katastrofegjenoppretting
  • Avansert dataanalyse

Er dette en ressurskrevende programvare?

Absolutt ikke. Installasjonsfilen er omtrent 50 MB, og løsningen er laget for å fungere godt med Kubernetes. MinIO lagrer både data og metadata som objekter, noe som eliminerer behovet for en separat database for metadata og øker ytelsen.

Arkitekturen, som vist på deres offisielle nettside, demonstrerer denne effektive tilnærmingen:

La oss se nærmere på noen av de viktigste funksjonene:

  • Ekstremt høy ytelse: MinIO kan lese og skrive data med hastigheter opp mot 170 GB/s, noe som er imponerende.
  • Skalerbarhet: Løsningen tillater gruppering og enkel skalering etter behov.
  • Skykompatibilitet: Utviklet med tanke på moderne skyinfrastruktur.
  • Databeskyttelse: Bruker slettekoding for å sikre dataintegritet.
  • Fleksibel kryptering: Støtter flere krypteringsmetoder som AES-CBC, AES-256-GCM og ChaCha20.
  • Kompatibel med KMS: Fungerer med de vanligste nøkkelhåndteringssystemene.
  • Bruker- og applikasjonsidentitet: Sikker tilgangsstyring.
  • Hendelsesvarsling: Sender varsler om viktige hendelser.
  • Føderasjon: Bruker etcd og CoreDNS for enkel administrasjon.

MinIO er et utmerket valg for programvaredifinert lagring. La oss se hvordan vi kan sette opp denne løsningen.

Installere MinIO Server

MinIO kan installeres på Linux, Windows, macOS og gjennom Kubernetes. Du kan også bygge den fra kilden dersom du har Golang installert.

I denne demonstrasjonen vil jeg installere MinIO på en CentOS-server hos Kamatera.

  • Logg deg inn på serveren din.
  • Lag en ny mappe for installasjonen, for eksempel «minio-server».
  • Naviger til den nye mappen og kjør følgende kommando:
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Dette laster ned en binær fil. Etter nedlasting vil du se noe lignende dette:

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

Gjør filen kjørbar med chmod-kommandoen:

chmod 755 minio

Nå kan vi starte MinIO-serveren:

./minio server /data &

Her er «/data» filsystemet der MinIO vil lagre objektene dine.

Oppstarten er rask, og du bør se en lignende melding som denne:

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'

La oss nå logge inn i MinIO via nettleseren med standard påloggingsinformasjon: minioadmin:minioadmin

Grensesnittet er enkelt og oversiktlig, men det første vi bør gjøre er å endre standard påloggingsinformasjon, siden det utgjør en sikkerhetsrisiko. Det er ingen mulighet for å endre dette direkte i nettleseren, men vi kan bruke miljøvariabler.

For å endre standard legitimasjon, eksporterer vi tilgangs- og hemmelig nøkkel som vist nedenfor, og starter MinIO på nytt.

export MINIO_ACCESS_KEY=tipsbilk.net
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

Nå vil du ikke lenger se advarselen om standard legitimasjon.

La oss prøve å laste opp noen filer.

  • Klikk på +-ikonet nederst til høyre og opprett en bøtte.
  • Jeg lastet opp en testfil, og den vises umiddelbart i nettleseren.

Og her er filen på serveren:

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

Hvis du klikker på fildelingsknappen i nettleseren, får du en delbar lenke og muligheten til å sette en utløpsdato.

MinIO-klienten

MinIO-klienten er et kraftig verktøy, som mer enn bare et AWS CLI-alternativ. Den lar deg administrere lagringen din fra kommandolinjen. Klienten er tilgjengelig for Windows, macOS og Linux.

For å installere klienten på Linux, kjør følgende kommandoer:

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

Kjør «mc» for å se kommandohjelpen.

[[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] ~]#

La oss prøve å liste filen vi lastet opp via mc-kommandoen.

Først må vi sette aliaset til den lagringstjenesten vi ønsker å administrere.

[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ tipsbilk.net geekpassword
Added `minio` successfully.
[[email protected] ~]#
  • «minio» er aliasnavnet, du kan endre det til hva du vil.
  • Endre HTTP-endepunktet til din virkelige adresse.
  • Endre tilgangs- og hemmelig nøkkel med din.

For å liste filer bruker du kommandoen «ls»:

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

Perfekt! Det fungerer som det skal.

Du kan gjøre alt via klienten. Ikke bare kan du administrere MinIO, men også GCS, AWS S3 og Azure.

Sjekk ut hurtigstartguiden for klienten for mer informasjon.

MinIO SDK

Avhengig av din applikasjonsplattform, kan du samhandle med objektlagring via programmering ved hjelp av SDK-er. MinIO tilbyr SDK-er for Go, Python, Node.js, .NET, Haskell og Java.

MinIO Gateway

Med MinIO Gateway kan du legge til MinIO-funksjonalitet til S3, Azure, NAS eller HDFS og dra nytte av MinIO-nettleseren og diskbuffring.

Konklusjon

Dersom du leter etter en privat, hybrid eller multi-sky objektlagring, er MinIO et svært lovende alternativ. Det er verdt å prøve, og det er stor sjanse for at du blir fornøyd. Du kan teste MinIO med Kamateras MinIO VM eller installere den på hvilken som helst skybasert server.