Вступление
От облачных решений резервного копирования до высокодоступных сетей доставки контента (CDN) хранилище объектов стало неотъемлемой частью современного технологического ландшафта. А благодаря небольшому размеру, простому интерфейсу и совместимости с несколькими облачными сервисами хранения сервер хранения объектов Minio предлагает множество возможностей.
Minio - это сервер хранения объектов с открытым исходным кодом, который хранит неструктурированные данные, такие как фотографии, видео, образы виртуальных машин, контейнеры и файлы журналов, как объекты. В распределенном режиме Minio предоставляет один сервер хранения объектов, который объединяет несколько дисков, распределенных по многим серверам.
Minio написан на Go, поставляется с клиентом командной строки и интерфейсом браузера и поддерживает простой сервис очередей для https://www.digitalocean.com/community/tutorials/an-advanced-message-queuing-protocol-amqp-walkthrough [Расширенный протокол очереди сообщений (AMQP)], Elasticsearch, https: / /www.digitalocean.com/community/tutorials/how-to-install-and-use-redis[Redis], https://www.digitalocean.com/community/tutorials/how-to-install-and-configure- nats-on-ubuntu-16-04 [NATS] и Postgres цели.
В этом уроке вы будете:
-
Установите сервер Minio на свой сервер DigitalOcean и настройте его в качестве службы systemd.
-
Настройте сертификат SSL / TLS, используя Let Encrypt, для защиты связи между сервером и клиентом.
-
Получите доступ к интерфейсу браузера Minio через HTTPS, чтобы использовать и администрировать сервер.
Предпосылки
Для завершения этого урока вам понадобится:
-
Один сервер Ubuntu 16.04, настроенный по следующему адресу: https://www.digitalocean.com/community/tutorials/initial-server-setup-with-ubuntu-16-04: это руководство по начальной настройке Ubuntu 16.04], включая sudo пользователь root и брандмауэр.
-
Полностью зарегистрированное доменное имя. Вы можете приобрести один на https://namecheap.com [Namecheap] или получить его бесплатно на Freenom.
-
Следующие записи DNS настроены для вашего сервера Minio. Вы можете следовать thutorial этого имени хоста для получения подробной информации о том, как их добавить.
-
Запись A с вашим именем сервера (например,
++
) указывает на IPv4-адрес вашего объектного сервера. -
Запись AAAA с именем вашего сервера, указывающим на IPv6-адрес вашего объектного сервера, если вы хотите, чтобы ваш сервер был доступен через IPv6.
-
Go установлен на сервере https://www.digitalocean.com/community/tutorials/how-to-install-go-1-6-on-ubuntu-16-04, используя это руководство для установки Go на Ubuntu 16.04].
Шаг 1 - Установка и настройка сервера Minio
Вы можете установить сервер Minio, скомпилировав исходный код или через двоичный файл. На этом этапе мы установим сервер самым простым способом - через двоичный файл - и затем все настроим позже.
Сначала войдите на свой сервер:
ssh sammy@
Если вы недавно не обновляли базу данных пакетов, обновите ее сейчас:
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 +
, где сценарий запуска systemd Minio ожидает его найти:
sudo mv minio /usr/local/bin
Из соображений безопасности мы не хотим запускать сервер Minio с правами * root *. И так как сценарий systemd, который мы будем использовать на шаге 2, ищет учетную запись пользователя и группу с именем * minio-user *, давайте создадим их сейчас.
sudo useradd -r minio-user -s /sbin/nologin
Изменить владельца бинарного файла на * minio-user *:
sudo chown minio-user:minio-user /usr/local/bin/minio
Далее нам нужно создать каталог, в котором Minio будет хранить файлы. Это будет место для хранения buckets, которое вы создадите на шаге 5.
sudo mkdir /usr/local/share/
Передайте права собственности на этот каталог * minio-user *:
sudo chown minio-user:minio-user /usr/local/share/
Каталог + / etc +
является наиболее распространенным местом для файлов конфигурации сервера, поэтому мы создадим место для Minio там.
sudo mkdir /etc/
Отнесите права собственности на этот каталог также * minio-user *:
sudo chown minio-user:minio-user /etc/minio
Используйте nano или ваш любимый текстовый редактор, чтобы создать файл среды, необходимый для изменения конфигурации по умолчанию:
sudo nano /etc/default/
И добавьте следующие переменные:
/ И т.д. / по умолчанию / Minio
MINIO_VOLUMES=""
MINIO_OPTS="-C --address :"
-
* MINIO_VOLUMES *: указывает на каталог хранения, который вы создали ранее.
-
* MINIO_OPTS *: Изменяет поведение сервера. Флаг * -C * указывает Minio на каталог конфигурации, который он должен использовать, в то время как флаг * –address * сообщает Minio IP-адрес и порт для привязки. Если IP-адрес не указан, Minio будет связываться с каждым адресом, настроенным на сервере, включая localhost и любые IP-адреса, связанные с Docker, поэтому лучше явно указывать IP-адрес в этом файле. Порт по умолчанию * 9000 *, но вы можете выбрать другой.
Наконец, сохраните и закройте файл среды, когда вы закончите вносить изменения.
Теперь Minio установлен, поэтому в следующий раз мы настроим сервер для работы в качестве системной службы.
Шаг 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 требует, чтобы файлы модулей были сохранены в каталоге конфигурации systemd, поэтому переместите + minio.service +
туда:
sudo mv minio.service /etc/systemd/system
Затем выполните следующую команду, чтобы перезагрузить все модули systemd:
sudo systemctl daemon-reload
Наконец, включите Minio для запуска при загрузке:
sudo systemctl enable minio
Теперь, когда скрипт systemd установлен и настроен, давайте запустим сервер.
Шаг 3 - Запуск сервера Minio
На этом этапе вы запустите сервер и измените брандмауэр, чтобы разрешить доступ через интерфейс браузера.
Сначала запустите сервер Minio:
sudo systemctl start minio
Вы можете проверить состояние Minio, IP-адрес, к которому он привязан, использование памяти и многое другое с помощью команды:
sudo systemctl status minio
Вы должны получить вывод, как показано ниже:
Outputminio.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 :
Apr 07 00:26:11 minio[25073]: Browser Access:
Apr 07 00:26:11 minio[25073]: http://:
Далее вам необходимо разрешить доступ через брандмауэр к серверу Minio через настроенный порт. В этом уроке это порт ++
.
Итак, сначала добавьте правило:
sudo ufw allow
Затем перезапустите брандмауэр:
sudo systemctl restart ufw
Теперь Minio готов принимать трафик, но перед подключением к серверу давайте обеспечим безопасную связь, установив сертификат SSL / TLS.
Шаг 4. Защита доступа к серверу Minio с помощью SSL-TLS-сертификата Let’s Encrypt
На этом шаге мы будем использовать консольный клиент генерации сертификатов Concert, чтобы создать сертификат SSL / TLS с использованием открытого источника https: // letsencrypt. org / [Let’s Encrypt] центр сертификации. Хотя существуют и другие способы создания сертификатов Let’s Encrypt, Concert написан как разработчиками Minio, так и является частью официального https://docs.minio.io/docs/generate-let-s-encypt-certificate-using-concert-for -minio [инструкция по установке].
Сначала скачайте Concert с помощью команды:
go get -u github.com/minio/concert
После завершения файл с именем + концерт +
должен быть в каталоге + bin +
вашего GOPATH.
Далее мы сгенерируем сертификат.
Выполните следующую команду, используя флаг + - dirs +
, чтобы сообщить Концерту выходной каталог, адрес электронной почты и имя домена, которое вы хотите использовать:
sudo /bin/concert gen --dir
Вывод будет выглядеть так:
Output2017/04/09 01:21:08 Generated certificates for under will expire in 89 days.
Кроме того, Concert сгенерирует файлы + private.key
и` + public.cert`, которые вы можете проверить, запустив + ls +
в указанном вами каталоге.
Затем мы скопируем эти два файла в каталог + certs +
в папке конфигурации сервера Minio, которая является + / etc / minio +
для этого урока.
sudo cp /private.key /certs/
sudo cp /public.crt /certs/
Теперь измените владельца файлов на * minio-user *:
sudo chown minio-user:minio-user /certs/private.key
sudo chown minio-user:minio-user /certs/public.crt
Перезапустите сервер Minio, чтобы он узнал о сертификате и начал использовать HTTPS:
sudo systemctl restart minio
Поскольку сгенерированный сертификат Let Encrypt действителен всего 90 дней, а многократное его продление вручную будет неэффективным, запустите Concert в режиме сервера, чтобы настроить систему на автоматическое обновление сертификата:
sudo concert server --dir @
Благодаря этому соединение Minio теперь защищено, и сертификат SSL / TLS будет автоматически обновлен для вас. На следующем шаге вы подключитесь к Minio через браузер, чтобы использовать и администрировать сервер.
Шаг 5 - Безопасное подключение к веб-интерфейсу Minio с использованием HTTPS
На этом шаге вы будете безопасно подключаться к веб-интерфейсу Minio через HTTPS, а затем создадите сегменты и загрузите в них объекты.
Войдите в веб-интерфейс, указав в браузере + https: //: +
.
Далее вам нужно будет найти свои учетные данные для входа. Minio записал свой файл конфигурации в каталог + / etc / minio +
, когда вы запустили сервер на шаге 3. Этот файл конфигурации + config.json +
содержит значения * accessKey * и * secretKey *, которые вам понадобятся для доступа к серверу сейчас. Обязательно скопируйте и храните оба ключа в легкодоступном и безопасном месте на будущее.
/etc/minio/config.json
{
"version": "19",
"credential": {
"accessKey": "",
"secretKey": ""
},
"region": "us-east-1",
...
}
Теперь войдите в основной интерфейс, введя свои учетные данные и нажав круглую кнопку со стрелкой прямо под полями ввода.
Оттуда нажмите светло-красную кнопку * + * в правом нижнем углу основного интерфейса, чтобы вызвать две дополнительные желтые кнопки.
изображение: http: //assets.digitalocean.com/articles/how-to-set-up-an-object-storage-server-using-minio/61120-ssb.png [основной интерфейс Minio]
Нажмите среднюю желтую кнопку и введите в подсказку имя нового сегмента, нажав клавишу «+ ENTER +», чтобы сохранить свой ответ. Ваше новое ведро теперь готово для хранения!
Если вы хотите добавить объекты в корзину, нажмите ту же самую светло-красную кнопку, что и раньше, а затем нажмите желтую кнопку top, чтобы открыть запрос на загрузку файла.
На этом этапе вы проработали весь основной веб-интерфейс, но помимо создания корзин и загрузки объектов, вы также можете создавать новые учетные данные для входа в систему, устанавливать даты истечения срока действия для общих ссылок объектов и вообще удалять объекты.
Заключение
Теперь у вас есть собственный сервер хранения объектов, использующий Minio, к которому вы можете безопасно подключаться через веб-интерфейс, используя сертификат Let Encrypt SSL / TLS. При желании вы можете посмотреть на Minio настольные клиенты для FreeBSD, Linux, Mac и Windows в качестве альтернативного способа использования и администрирования хранилища объектов. сервер.
Кроме того, если вы хотите увеличить объем хранилища вашей установки Minio сверх размера диска вашего сервера, вы можете использовать https://www.digitalocean.com/community/tutorials/how-to-use-block-storage-on-digitalocean [Служба блочного хранилища DigitalOcean] для подключения тома к вашему серверу, что увеличивает емкость хранилища на целых 80 ТБ за долю от стоимости раскрутки капли одинакового размера.
Дополнительную информацию о Minio можно найти на веб-сайте документации project.