Minio - Установка распределенного файлового хранилища

Администрирование linux
Ответить
ustim
Администратор
Сообщения: 130
Зарегистрирован: 03 июн 2021, 09:01
Откуда: Краснодар
Контактная информация:

Minio - Установка распределенного файлового хранилища

Сообщение ustim »

1. Если вы не обновляли базу данных пакетов за последнее время, обновите ее:

Код: Выделить всё

sudo apt update
2. Затем загрузите бинарный файл сервера Minio с официального веб-сайта:

Код: Выделить всё

wget https://dl.min.io/server/minio/release/linux-amd64/minio
3. После завершения загрузки файл с именем minio будет находиться в вашей рабочей директории. Используйте следующую команду, чтобы получить исполняемый файл:

Код: Выделить всё

sudo chmod +x minio
4. Теперь переместите файл в каталог /usr/local/bin, где скрипт запуска Minio systemd ожидает его найти:

Код: Выделить всё

sudo mv minio /usr/local/bin
Это позволит нам записать юнит-файл службы на следующих шагах данного обучающего модуля, чтобы обеспечить автоматический запуск Minio при загрузке системы.

5. По соображениям безопасности рекомендуется избегать запуска сервера Minio с правами root. Это позволит ограничить ущерб, который может быть нанесен системе при нарушении безопасности. Поскольку скрипт systemd, который вы будете использовать в шаге 2, ищет учетную запись и группу с именем minio-user, создайте нового пользователя с этим именем:

Код: Выделить всё

sudo useradd -r minio-user -s /sbin/nologin
В этой команде вы использовали флаг -s для настройки /sbin/nologin в качестве оболочки для minio-user. Это оболочка, которая не позволяет пользователю выполнять вход, в чем нет необходимости для minio-user.

6. Далее передайте право владения для двоичного файла Minio пользователю minio-user​​​:

Код: Выделить всё

sudo chown minio-user:minio-user /usr/local/bin/minio
7. Затем вам необходимо создать директорию, в которой Minio будет хранить файлы. Это место будет местом хранения бакетов, которые вы будете использовать позднее для организации объектов, которые вы храните на вашем сервере Minio. В этом обучающем модуле будет использоваться имя каталога minio:

Код: Выделить всё

sudo mkdir /usr/local/share/minio
8. Передайте пользователю minio-user право владения этим каталогом:

Код: Выделить всё

sudo chown minio-user:minio-user /usr/local/share/minio
9. Большинство файлов конфигурации сервера хранятся в каталоге /etc, поэтому именно здесь необходимо создать ваш файл конфигурации:

Код: Выделить всё

sudo mkdir /etc/minio
10. Передайте пользователю minio-user право владения этим каталогом:

Код: Выделить всё

sudo chown minio-user:minio-user /etc/minio
11. Используйте Nano или ваш любимый текстовый редактор для создания файла среды, необходимого для изменения конфигурации по умолчанию:

Код: Выделить всё

sudo nano /etc/default/minio
12. После открытия файла добавьте следующие строки, чтобы задать несколько важных переменных среды в файле среды:
MINIO_ACCESS_KEY="minio"
MINIO_VOLUMES="/usr/local/share/minio/"
MINIO_OPTS="-C /etc/minio --console-address :34283 --address :9000"
MINIO_SECRET_KEY="miniostorage"
Так же дополнительно можете добавить строки
MINIO_REGION = "ru-test-01"
MINIO_DOMAIN= "your_domain.com"

Давайте рассмотрим эти переменные и значения, которые вы задали:
MINIO_ACCESS_KEY: данная переменная задает ключ доступа, который вы будете использовать для доступа к пользовательскому интерфейсу браузера Minio.
MINIO_SECRET_KEY: данная переменная задает закрытый ключ, который вы будете использовать для передачи учетных данных для входа в интерфейс Minio. В этом обучающем модуле мы будем использовать значение miniostorage, но мы рекомендуем выбрать другой, более сложный пароль для обеспечения безопасности вашего сервера.
MINIO_VOLUMES: данная переменная определяет директорию хранения, которую вы создали для ваших бакетов.
MINIO_OPTS: эта переменная определяет, где и как сервер обслуживает данные. Флаг -C указывает Minio каталог конфигурации, который следует использовать, а флаг --address указывает IP-адрес и порт для привязки. Если IP-адрес не указан, Minio будет привязываться к любому адресу, заданному на сервере, включая localhost и любые связанные с Docker IP-адреса, поэтому мы рекомендуем напрямую указать IP-адрес здесь. Если хотите, вы можете изменить используемый по умолчанию порт 9000.
Сохраните и закройте файл среды после внесения изменений.

Вы установили Minio и задали значения для ряда важных переменные среды. Далее вам нужно настроить запуск сервера в качестве системной услуги.

Установка скрипта запуска Systemd Minio

На этом шаге вы настроите сервер Minio для управления им в качестве службы systemd.

1. Во-первых, загрузите официальный файл дескриптора службы Minio с помощью следующей команды:

Код: Выделить всё

curl -O https://raw.githubusercontent.com/minio/minio-service/master/linux-systemd/minio.service
Вот содержимое скрипта на всякий случай

Код: Выделить всё

[Unit]
Description=MinIO
Documentation=https://docs.min.io
Wants=network-online.target
After=network-online.target
AssertFileIsExecutable=/usr/local/bin/minio

[Service]
WorkingDirectory=/usr/local/

User=minio-user
Group=minio-user
ProtectProc=invisible

EnvironmentFile=/etc/default/minio
ExecStartPre=/bin/bash -c "if [ -z \"${MINIO_VOLUMES}\" ]; then echo \"Variable MINIO_VOLUMES not s>
ExecStart=/usr/local/bin/minio server $MINIO_OPTS $MINIO_VOLUMES

# Let systemd restart this service always
Restart=always

# Specifies the maximum file descriptor number that can be opened by this process
LimitNOFILE=1048576

# Specifies the maximum number of threads this process can create
TasksMax=infinity

# Disable timeout logic and wait until process is stopped
TimeoutStopSec=infinity
SendSIGKILL=no

[Install]
WantedBy=multi-user.target

# Built for ${project.name}-${project.version} (${project.name})
2. После завершения загрузки файл с именем minio.service будет находиться в вашей рабочей директории.

Чтобы проверить содержимое файла minio.service перед применением, откройте его в текстовом редакторе:
nano minio.service

Этот юнит-файл службы запускает сервер Minio с помощью пользователя minio-user, которого вы создали ранее. Также он имплементирует переменные среды, которые вы задали на последнем шаге, и настраивает автоматический запуск сервера. Дополнительную информацию о юнит-файлах systemd можно найти в нашем руководстве Знакомство с юнитами Systemd и юнит-файлами.

После изучения содержания скрипта закройте текстовый редактор.
3. Systemd требует, чтобы юнит-файлы хранились в каталоге конфигурации systemd, поэтому нужно переместить файл minio.service в этот каталог:

Код: Выделить всё

sudo mv minio.service /etc/systemd/system
4. Затем запустите следующую команду, чтобы перезагрузить все юниты systemd:

Код: Выделить всё

sudo systemctl daemon-reload
5. Затем активируйте запуск Minio при загрузке:

Код: Выделить всё

sudo systemctl enable minio
Теперь, когда скрипт systemd установлен и настроен, пришло время для запуска сервера.

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

На этом шаге вы запустите сервер и измените настройки брандмауэра, чтобы разрешить доступ через интерфейс браузера.
1. Запустите сервер Minio:

Код: Выделить всё

sudo systemctl start minio
2. Затем проверьте статус Minio, IP-адрес, к которому он привязан, использование памяти и многое другое, воспользовавшись следующей командой:

Код: Выделить всё

sudo systemctl status minio
Затем активируйте доступ через брандмауэр для сервера Minio на указанном порту. В этом обучающем модуле мы используем порт 9000.
3. Добавьте правило:

Код: Выделить всё

sudo ufw allow 9000
4. Затем активируйте брандмауэр:

Код: Выделить всё

sudo ufw enable
Результат будет выглядеть следующим образом:
Output
Command may disrupt existing ssh connections. Proceed with operation (y|n)?
Нажмите y и ENTER для подтверждения. Вы получите следующий результат:
Output
Firewall is active and enabled on system startup
Теперь Minio готов принимать трафик!
ustim
Администратор
Сообщения: 130
Зарегистрирован: 03 июн 2021, 09:01
Откуда: Краснодар
Контактная информация:

Re: MinIO - Установка распределенного файлового хранилища

Сообщение ustim »

Была изменена конфигурация

1. Изменен конфиг MinIO, Разделил API и Консоль, а так же добавил необходимые URL адреса, теперь конфигурация выглядит так:

Код: Выделить всё

MINIO_VOLUMES="/data/minio/"
MINIO_OPTS="--address :9000 --console-address :9001"
MINIO_ROOT_USER=minioUser
MINIO_ROOT_PASSWORD=minioPassword

MINIO_SERVER_URL=https://s3.domain.ru
MINIO_BROWSER_REDIRECT_URL=https://console-s3.domain.ru
2. Так же изменен конфиг NGINX на проксирующем сервере, сделал 2 секции server с разными проксирующими адресами. К тому же пришлось установить дополнительный сертификат для консоли. Теперь выглядит так:

Код: Выделить всё

server {
server_name s3.domain.ru;
listen 443;
listen [::]:443;
access_log /var/log/nginx/s3.domain.ru-access.log;
error_log /var/log/nginx/s3.domain.ru-error.log;

ssl_certificate /etc/letsencrypt/live/s3.domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/s3.domain.ru/privkey.pem;

location ^~ '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/certbot;
}

# To allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# To disable buffering
proxy_buffering off;
proxy_request_buffering off;

location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;

proxy_connect_timeout 300;
# Default is HTTP/1, keepalive is only enabled in HTTP/1.1
proxy_http_version 1.1;
proxy_set_header Connection "";
chunked_transfer_encoding off;

proxy_pass 192.168.1.15:9000;
}
}

server {
server_name console-s3.domain.ru;
listen 443;
listen [::]:443;
access_log /var/log/nginx/console-s3.domain.ru-access.log;
error_log /var/log/nginx/console-s3.domain.ru-error.log;

ssl_certificate /etc/letsencrypt/live/console-s3.domain.ru/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/console-s3.domain.ru/privkey.pem;

location ^~ '/.well-known/acme-challenge' {
default_type "text/plain";
root /var/www/certbot;
}

# To allow special characters in headers
ignore_invalid_headers off;
# Allow any size file to be uploaded.
# Set to a value such as 1000m; to restrict file size to a specific value
client_max_body_size 0;
# To disable buffering
proxy_buffering off;
proxy_request_buffering off;

location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-NginX-Proxy true;

# This is necessary to pass the correct IP to be hashed
real_ip_header X-Real-IP;

proxy_connect_timeout 300;

# To support websocket
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";

chunked_transfer_encoding off;

proxy_pass 192.168.1.15:9001;
}
}
Ответить