Поиск по сайту:

Настройка сервера MinIO для использования архитектуры хранения


На этой странице

  1. 1. Как это работает
  2. 2. Фаза установки
  3. 3. Фаза конфигурации
  4. 4. Этап тестирования

В этом руководстве я объясню, как настроить сервер MinIO для использования архитектуры хранения. Как любой, кто еще не знает, что такое MinIO: это высокопроизводительная распределенная система хранения объектов. Он определяется программным обеспечением, работает на стандартном для отрасли оборудовании и имеет 100% открытый исходный код. Он специально создан для обслуживания объектов в качестве одноуровневой архитектуры для достижения всей необходимой функциональности без компромиссов. В результате получается облачный объектный сервер, который одновременно является масштабируемым и легким.

По мере того, как мир облачной инженерии становится все более и более зрелым, на ум приходят вещи, зачем нам вообще нужен MinIO?

Учтите, что если вы обслуживаете свое решение в облаке, вы можете в конечном итоге использовать хранилище решений, такое как AWS S3, Azure Blob Storage и Alibaba OSS. То же самое относится и к концепции, если ваше решение по-прежнему остается в локальной среде, поскольку Minio служит альтернативой архитектуре хранилища так же, как и предоставляемая служба облачного хранилища.



1. Как это работает

Проще говоря, Minio состоит из двух частей: клиентской и серверной. Эта концепция также включает панель инструментов через веб-интерфейс или файловый браузер. Каждый клиент и сервер относительно просты в настройке, и если вы знакомы с CLI (интерфейсом командной строки), вам будет легко разобраться.

Тем не менее, когда мы разрабатываем его на производственном уровне, все должно быть распределено, а это означает, что предоставленное решение должно обеспечивать хорошую работу в больших масштабах, саморасширяющийся рост и готовность к высокой доступности. Учитывая это, у minio есть собственная концепция, которая называется Distributed Erasure Code.

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

В этом руководстве я покажу вам, как установить и настроить сервер MinIO в качестве распределенного кода стирания. После этого взгляните на клиентскую сторону, чтобы узнать, как использовать службу MinIO в качестве конечного пользователя.

2. Этап установки

На этапе установки я настрою 2 сервера в качестве мини-кластера, чтобы подготовить конфигурацию распределенного кода стирания.

Теперь хорошо перечислите 4 диска, которые можно использовать для его разделения в качестве блочного устройства для использования minio. Поскольку в нашей архитектуре принято решение настроить несколько серверов, минимальное количество дисков, которое должно быть для сервера, равно 2, но если вы используете один сервер, минимальное требование к дискам равно 1. Подробные требования, необходимые для разработки кода стирания, можно увидеть. здесь .

Ниже приведены шаги:

 [ ~]# fdisk -l 

Disk /dev/sda: 107.4 GB, 107374182400 bytes, 209715200 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk label type: dos
Disk identifier: 0x000a4fd8

Device Boot Start End Blocks Id System
/dev/sda1 * 2048 2099199 1048576 83 Linux
/dev/sda2 2099200 209715199 103808000 8e Linux LVM

Disk /dev/sdb: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdc: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sdd: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/sde: 8589 MB, 8589934592 bytes, 16777216 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-root: 104.1 GB, 104144568320 bytes, 203407360 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/mapper/centos-swap: 2147 MB, 2147483648 bytes, 4194304 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes

Как вы можете видеть выше, с нашей стороны на нашем сервере установлено 4 диска размером 8 ГБ каждый.

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

 
[ ~]#

После этого повторите тот же процесс, чтобы создать раздел на оставшихся дисках, а затем смонтируйте его в каждый созданный нами каталог. В качестве окончательного результата вы должны, наконец, вывести результат, как показано ниже: -

 [ ~]# df -h 
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 97G 3.8G 94G 4% /
devtmpfs 1.9G 0 1.9G 0% /dev
tmpfs 1.9G 0 1.9G 0% /dev/shm
tmpfs 1.9G 8.6M 1.9G 1% /run
tmpfs 1.9G 0 1.9G 0% /sys/fs/cgroup
/dev/sda1 1014M 145M 870M 15% /boot
tmpfs 379M 0 379M 0% /run/user/0
/dev/sdb1 8.0G 33M 8.0G 1% /opt/drive1
/dev/sdc1 8.0G 33M 8.0G 1% /opt/drive2
/dev/sdd1 8.0G 33M 8.0G 1% /opt/drive3
/dev/sde1 8.0G 33M 8.0G 1% /opt/drive4

Хорошо, так как предварительные условия на дисках выполнены для сервера 1, повторите ту же настройку на сервере 2, что и выше.

3. Этап настройки

Теперь, когда обе конфигурации серверов выполнены, давайте продолжим установку службы minio. Сначала загрузите пакет minio, как показано ниже:

 [ ~]# wget https://dl.min.io/server/minio/release/linux-amd64/minio && chmod +x minio 
--2019-09-29 22:23:57-- https://dl.min.io/server/minio/release/linux-amd64/minio
Resolving dl.min.io (dl.min.io)... 178.128.69.202
Connecting to dl.min.io (dl.min.io)|178.128.69.202|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 43831296 (42M) [application/octet-stream]
Saving to: ‘minio’

3% [=> ] 1,335,296 106KB/s eta 6m 33s

Теперь повторите то же самое, что и выше, на сервере 2.

Когда все сделано, давайте начнем настройку minio. Мы определим MINIO_ACCESS_KEY и MINIO_SECRET_KEY как доступ для аутентификации. Конфигурация приведена ниже: -

 [ ~]# ./minio server http://10.124.12.{141..142}:9000/opt/drive{1..4} 
Waiting for a minimum of 4 disks to come online (elapsed 0s)

Waiting for a minimum of 4 disks to come online (elapsed 2s)

Waiting for a minimum of 4 disks to come online (elapsed 3s)

Waiting for a minimum of 4 disks to come online (elapsed 3s)

Waiting for all other servers to be online to format the disks.
Status: 8 Online, 0 Offline.
Endpoint: http://10.124.12.141:9000 http://10.124.12.142:9000
AccessKey: shahril
SecretKey: shahril123

Browser Access:
http://10.124.12.141:9000 http://10.124.12.142:9000

Command-line Access: https://docs.min.io/docs/minio-client-quickstart-guide
$ mc config host add myminio http://10.124.12.141:9000 shahril shahril123

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

Теперь настройка выполнена на сервере 1, повторите тот же шаг на сервере 2 для настройки.

Как только все сделано, мы можем приступить к тестированию на результат

4. Этап тестирования

Когда все сделано, давайте начнем рассматривать удобство использования сервисов minio. Как показано в приведенной выше конфигурации, мы можем получить доступ к панели инструментов его пользовательского интерфейса через браузер. В нашем примере давайте войдем в http://10.124.12.141:9000 с ключом доступа shahril и секретным ключом shahril123, как настроено.

Результат будет показан ниже:

После этого он перенаправит нас на панель инструментов ведра. Теперь давайте создадим наше первое ведро.

Щелкните значок папки с помощью кнопки «плюс» и назовите наше первое ведро как mylove. Пример, как показано ниже:

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

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

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

Вы заметите, что новый файл успешно загружен в корзину, как показано ниже.

Чтобы убедиться, что концепция распределения хорошо реализована. Давайте проведем простой тест, получив доступ к панели управления minio через другой сервер. Другой URL-адрес сервера: http://10.124.12.142:9000.

Как и ожидалось, контейнер и файлы, которые мы вставили, также существуют в URL-адресах других серверов, как показано выше.

Теперь давайте проведем еще один тест. На этот раз мы будем использовать другую рабочую станцию, которая будет обращаться к нашему серверу minio с помощью клиентской консоли с именем mc.

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

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

Сначала откройте клиентскую рабочую станцию и загрузите клиентский пакет minio. Пример показан ниже:

 [ ~]# chmod +x mc 

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

 [ ~]# ./mc config host add myminio http://10.124.12.142:9000 shahril shahril123 
mc: Configuration written to `/root/.mc/config.json`. Please update your access credentials.
mc: Successfully created `/root/.mc/share`.
mc: Initialized share uploads `/root/.mc/share/uploads.json` file.
mc: Initialized share downloads `/root/.mc/share/downloads.json` file.
Added `myminio` successfully.

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

 [ ~]# ./mc ls myminio/mylove/ 
[2019-09-30 11:16:25 +08] 55KiB myself.jpg

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

 [ ~]# ./mc ls myminio/mylove/ 
[2019-09-30 11:16:25 +08] 55KiB myself.jpg
[2019-09-30 11:58:16 +08] 38B new_file.txt

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

Вы должны увидеть полную ссылку на изображение, когда щелкнете значок «Поделиться» справа, как показано ниже. Это уникальная ссылка каждого объекта внутри корзины, которую вы можете использовать на стороне приложения через curl или API.

Пальцы вверх! Теперь мы успешно установили и настроили локальное хранилище с собственным хостингом, используя Minio. Для получения более подробной информации вы можете проверить его документацию здесь