Попробуйте MinIO — высокопроизводительное объектное хранилище с собственным хостингом, совместимое с S3

Вы ищете программное обеспечение для хранения объектов для размещения на своем сервере?

Я думаю да?

Существует множество облачных хранилищ объектов, таких как AWS S3 и другие, о которых я упоминал здесь. Однако, если вам необходимо разместить данные на своем сервере, MinIO может помочь в ваших центрах обработки данных.

МиниIO — это популярное программное обеспечение для хранения распределенных объектов с открытым исходным кодом, совместимое с S3. Он готов к корпоративному использованию и известен своей высокой производительностью.

Вы можете использовать MinIO от простого веб-приложения до больших рабочих нагрузок по распределению данных для приложений аналитики и машинного обучения. Это может помочь во многих случаях использования.

  • Стандартное хранилище плоских файлов
  • Распределение данных в нескольких облаках
  • Аварийное восстановление
  • Аналитика данных

Это громоздкое программное обеспечение?

Нет, всего около 50 МБ, и он удобен для Kubernetes. Он записывает данные и метаданные как объект. Это устраняет зависимость от наличия дополнительной базы данных или программного обеспечения для хранения метаданных и повышения производительности.

Приведенная ниже архитектура с их официального сайта.

Давайте рассмотрим некоторые особенности, на которые стоит обратить внимание.

  • Высокая производительность – говорится в названии. Он способен читать/записывать со скоростью ~170 ГБ/с. Это много!
  • Масштабируемость — используйте кластеризацию и масштабируйте по мере необходимости
  • Облако
  • Защита данных методом Erasure code
  • Поддерживается множественное шифрование, включая AES-CBC, AES-256-GCM, ChaCha20
  • Совместимость с обычным KMS
  • Приложение и личность пользователя
  • Уведомление о событии
  • Федерация с помощью etcd и CoreDNS

MinIO — хороший выбор для программно-определяемого хранилища. Давайте рассмотрим, как настроить вещи.

Установка сервера MinIO

Вы можете установить в Linux, Windows, macOS и через Kubernetes. Предпочитаете сборку через исходный код? Конечно, вы можете это сделать, если у вас установлен Golang.

Для этой демонстрации я установлю CentOS, который размещен на Каматера.

  • Вход на сервер
  • Создайте папку в нужной файловой системе. Возможно мини-сервер
  • Перейдите во вновь созданную папку и выполните приведенную ниже команду wget.
wget https://dl.min.io/server/minio/release/linux-amd64/minio

Он загрузит двоичный файл и должен выглядеть так.

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

Сделайте файл исполняемым с помощью команды chmod

chmod 755 minio

Запустим MinIO в качестве сервера.

./minio server /data &

Упомянутая выше /data — это файловая система, в которой MinIO будет хранить объекты.

Запуск выполняется быстро, и вы должны увидеть информацию о запуске, как показано ниже.

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'

Давайте получим доступ к MinIO в браузере с учетными данными по умолчанию — minioadmin: minioadmin

Интерфейс очень аккуратный и чистый, но прежде всего давайте изменим учетные данные по умолчанию, так как это подвергает риску. Нет возможности изменить учетные данные администратора через браузер, кроме переменных среды.

Чтобы изменить учетные данные MinIO по умолчанию, мы экспортируем доступ и секретный ключ, как показано ниже, и запустим MinIO.

export MINIO_ACCESS_KEY=toadmin.ru
export MINIO_SECRET_KEY=geekpassword
./minio server /data &

Теперь он не должен жаловаться на предупреждение об обнаружении учетных данных по умолчанию.

Попробуем загрузить несколько файлов.

  • Нажмите значок + в правом нижнем углу и создайте корзину.
  • Я загрузил тестовый файл и сразу увидел его в браузере

а на сервере

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

Если вы нажмете кнопку общего доступа к файлам в браузере, вы получите общую ссылку и возможность установить срок действия.

Клиент MinIO

Клиент MinIO — это больше, чем aws-cli, который позволяет вам управлять хранилищем. Клиент доступен для Windows, macOS и Linux.

Чтобы установить в Linux, выполните следующее.

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

Запустите команду mc, чтобы просмотреть справку по команде.

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

Давайте попробуем перечислить файл, который я загрузил через команду mc.

Во-первых, нам нужно установить псевдоним для хранилища, которым мы хотим управлять.

[[email protected] ~]# ./mc alias set minio http://xx.71.141.xx:9000/ toadmin.ru geekpassword
Added `minio` successfully.
[[email protected] ~]#
  • minio — псевдоним. Вы можете изменить это на все, что захотите.
  • Измените конечную точку HTTP на вашу настоящую
  • Изменить доступ и секретный ключ на свой

и, чтобы перечислить, будет использовать команду ls, как показано ниже.

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

Большой. оно работает!

Через клиент можно делать буквально все. Вы можете управлять не только облачным хранилищем MinIO, но и GCS, AWS S3, Azure.

Проверьте это краткое руководство по работе с клиентом Больше подробностей.

МинИО SDK

В зависимости от вашего стека приложений вы можете программно взаимодействовать с хранилищем объектов с помощью SDK. Он поддерживает Go, Python, Node.js, .NET, Haskell и Java.

Шлюз MinIO

Добавьте шлюз MiniIO в S3, Azure, NAS, HDFS, чтобы воспользоваться преимуществами браузера MinIO и дискового кэширования.

Вывод

Если вы ищете частное, гибридное или многооблачное объектное хранилище, то MinIO выглядит многообещающе. Попробуйте, и вы влюбитесь в него. Чтобы протестировать вещи, вы можете получить Виртуальная машина Kamatera MinIO или установить себя на любой облачный сервер.