Установка сервера хранения объектов Minio в Ubuntu 16.04

Хранение объектов стало неотъемлемой частью современных технологических решений. Благодаря простому интерфейсу и совместимости с несколькими облачными службами хранения, сервер хранения объектов Minio имеет множество возможностей.

Minio – это открытый сервер хранения объектов, который может хранить неструктурированные данные – фотографии, видеоролики, образы виртуальной машины, контейнеры и файлы логов – в качестве объектов. В распределенном режиме Minio предоставляет единый сервер хранения объектов, который объединяет несколько дисков, распределенных между несколькими серверами.

Сервер Minio написан на Go, поставляется с клиентом командной строки и интерфейсом браузера и поддерживает простую службу очередей для AMQP, Elasticsearch, Redis, NATS и Postgres.

Читайте также:

Данный мануал поможет вам:

  1. Установить сервер Minio и настроить его как сервис systemd.
  2. Получить сертификат SSL/TLS от Let’s Encrypt, чтобы защитить взаимодействие между сервером и клиентом.

Требования

  • Сервер Ubuntu 16.04, настроенный согласно этому руководству.
  • Записи DNS для Minio: запись А с именем сервера (minio-server.example.com, например), указывающая на адрес IPv4 сервера; запись AAAA указывающая на адрес IPv6, если вы хотите включить поддержку IPv6.
  • Go (инструкции по установке можно найти здесь).

1: Установка и настройка Minio

Чтобы установить Minio, нужно скомпилировать исходный код сервера или использовать бинарные файлы. В этом мануале используется второй вариант.

Войдите на сервер:

ssh 8host@your_server_ip

Обновите индекс пакетов:

sudo apt-get update

Загрузите бинарный файл Minio:

curl -O https://dl.minio.io/server/minio/release/linux-amd64/minio

В рабочий каталог будет загружен файл minio. Сделайте его исполняемым:

sudo chmod +x minio

Переместите файл в /usr/local/bin, где его будет искать скрипт запуска.

sudo mv minio /usr/local/bin

По соображениям безопасности не следует запускать сервер Minio как root. Скрипт systemd (который используется в следующем разделе) ищет учетную запись пользователя и группу по имени minio-user, давайте создадим их сейчас.

sudo useradd -r minio-user -s /sbin/nologin

Передайте этому пользователю права на файл:

sudo chown minio-user:minio-user /usr/local/bin/minio

Затем нужно создать каталог, в котором Minio будет хранить файлы.

sudo mkdir /usr/local/share/minio

Передайте права на каталог пользователю minio-user:

sudo chown minio-user:minio-user /usr/local/share/minio

Обычно конфигурационные файлы Minio хранятся в каталоге /etc. Создайте в нем отдельный подкаталог.

sudo mkdir /etc/minio

Передайте права на каталог пользователю minio-user:

sudo chown minio-user:minio-user /etc/minio

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

sudo nano /etc/default/minio

Добавьте в файл следующие переменные:

MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="-C /etc/minio --address your-server-ip:9000"

  • MINIO_VOLUMES: указывает на каталог для хранения объектов.
  • MINIO_OPTS: изменяет поведение сервера. Флаг –C указывает, какой конфигурационный файл должен использовать сервер Minio. Флаг —address привязывает Minio к определенному IP-адресу и порту. Если IP-адрес не указан, Minio привяжется ко всем адресам, настроенным на сервере, включая localhost и IP-адреса, связанные с Docker. Потому лучше указать один IP-адрес. По умолчанию используется порт 9000, но вы можете выбрать любой другой порт.

Сохраните и закройте файл.

2: Настройка Minio как сервиса systemd

Теперь нужно добавить Minio в систему инициализации systemd. Для начала загрузите дескриптор Minio:

curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service

После завершения загрузки в рабочем каталоге появится файл minio.service.

Откройте minio.service в текстовом редакторе, чтобы просмотреть его содержимое:

nano minio.service

После этого можно закрыть текстовый редактор.

Systemd хранит все unit-файлы в каталоге конфигураций systemd. Откройте этот каталог:

sudo mv minio.service /etc/systemd/system

Запустите следующую команду, чтобы перезапустить сервисы systemd:

sudo systemctl daemon-reload

Добавьте Minio в автозагрузку:

sudo systemctl enable minio

3: Запуск сервера Minio

На этом этапе можно запустить сервер и изменить настройки брандмауэра.

Запустите сервер:

sudo systemctl start minio

Проверить состояние Minio, связанный с ним IP-адрес, его использование памяти и многое другое с помощью команды:

sudo systemctl status minio
minio.service - Minio
Loaded: loaded (/etc/systemd/system/minio.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2017-04-07 00:26:10 UTC; 11min ago
Docs: https://docs.minio.io
Process: 25069 ExecStartPre=/bin/bash -c [ -n "${MINIO_VOLUMES}" ] || echo "Variable MINIO_VOLUMES not set in /etc/default/minio" (code=exit
Main PID: 25073 (minio)
Tasks: 6
Memory: 20.7M
CPU: 544ms
CGroup: /system.slice/minio.service
└─25073 /usr/local/bin/minio server -C /etc/minio --address :9000 /usr/local/share/minio/
Apr 07 00:26:11 ashtonandgray minio[25073]: Browser Access:
Apr 07 00:26:11 ashtonandgray minio[25073]:    http://174.138.67.91:9000

Теперь нужно разблокировать порт Minio в брандмауэре. По умолчанию это порт 9000.

Добавьте правило:

sudo ufw allow 9000

Перезапустите брандмауэр:

sudo systemctl restart ufw

Теперь сервер Minio может принимать трафик. Защитите взаимодействие между сервером и клиентом с помощью сертификата SSL/TLS.

4: Создание SSL/TLS-сертификата Let’s Encrypt для сервера Minio

На данном этапе нужно использовать клиент для создания сертификатов на основе консоли, Concert, чтобы получить сертификат от сервиса Let’s Encrypt. Хотя есть и другие способы генерирования сертификатов Let’s Encrypt, клиент Concert написан разработчиками Minio и входит в официальную документацию по установке.

Загрузите Concert:

go get -u github.com/minio/concert

После этого в каталоге bin вашего GOPATH появится файл concert.

Сгенерируйте сертификат.

Примечание: Чтобы создать сертификат, concert требует, чтобы брандмауэр поддерживал трафик по порту 443.

Выполните следующую команду с флагом —dirs, чтобы задать Concert выходной каталог, адрес электронной почты и домен:

sudo GOPATH/bin/concert gen --dir minio-certs 8host@example.com example.com

Команда вернет:

2017/04/09 01:21:08 Generated certificates for example.com under minio-certs will expire in 89 days.
Concert сгенерирует файл private.key и public.crt.

Скопируйте эти два файла в каталог certs в каталоге конфигураций сервера Minio (в данном случае это /etc/minio).

sudo cp minio-certs/private.key /etc/minio/certs/
sudo cp minio-certs/public.crt /etc/minio/certs/

Передайте права на файлы пользователю minio-user:

sudo chown minio-user:minio-user /etc/minio/certs/private.key
sudo chown minio-user:minio-user /etc/minio/certs/public.crt

Перезапустите Minio, чтобы сервер нашел сертификаты и начал использовать HTTPS.

sudo systemctl restart minio

Поскольку сгенерированный сертификат Let’s Encrypt действителен всего 90 дней, и обновлять его вручную будет неэффективно, запустите Concert в режиме server, чтобы настроить систему для автоматического обновления сертификата:

sudo concert server --dir minio-certs 8host@example.com example.com

Теперь сертификат шифрует соединения сервера Minio. Сертификат будет обновляться автоматически.

5: Подключение к Minio

Попробуйте подключиться к Minio по HTTPS, создать bucket и добавить объекты.

Откройте в браузере:

https://example.com:9000

Затем нужно найти свои учетные данные. Сразу после запуска сервер Minio записал конфигурации в файл в каталоге /etc/minio. Этот файл, config.json, содержит значения accessKey и secretKey, которые нужны вам, чтобы получить доступ к серверу. Обязательно скопируйте и сохраните оба ключа в удобном и надежном месте на будущее.

{
"version": "19",
"credential": {
"accessKey": "8ngv6i97QZV959Y87Y007FP",
"secretKey": "C6hK8ytyBe3Q952bght65434JiZN08itG49jG5RX"
},
"region": "us-east-1",
...
}

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

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

Кликните по средней желтой кнопке и введите название для bucket. Нажмите ENTER, чтобы продолжить. Новый bucket готов.

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

Примечание: Сервер Minio может хранить объекты размером до 5 ТБ.

Также этот интерфейс позволяет генерировать новые учетные данные для входа, устанавливать даты истечения срока действия для общих ссылок на объекты и удалять объекты.

Заключение

Теперь у вас есть сервер хранения объектов Minio, соединения с которым шифруются с помощью сертификата SSL/TLS. Возможно, вам пригодятся настольные клиенты Minion для FreeBSD, Linux, Mac и Windows, которые можно использовать в качестве альтернативы для управления сервером хранения объектов.

Больше информации о Minio можно найти в официальной документации.

Tags: , ,