Configuración del servidor MinIO para el uso de la arquitectura de almacenamiento

Almacenamiento de objetos MinIO

En este tutorial, explicar√© c√≥mo configurar un servidor MinIO para el uso de la arquitectura de almacenamiento. Como cualquiera que a√ļn no sepa qu√© es MinIO: es un sistema de almacenamiento de objetos distribuidos de alto rendimiento. Est√° definido por software, se ejecuta en hardware est√°ndar de la industria y es 100 % de c√≥digo abierto. Est√° dise√Īado a prop√≥sito para servir a los objetos como una arquitectura de una sola capa para lograr toda la funcionalidad necesaria sin compromiso. El resultado se ve como un servidor de objetos nativo de la nube que es al mismo tiempo escalable y liviano.

A medida que el mundo de la ingeniería en la nube ha ido emergiendo cada vez más maduro, se me ocurre por qué necesitamos MinIO en primer lugar.

Tenga en cuenta que si cuando sirve su soluci√≥n en la nube, puede terminar usando almacenamiento de soluci√≥n como AWS S3, Azure Blob Storage y Alibaba OSS. Lo mismo ocurre con el concepto si su soluci√≥n a√ļn permanece en las instalaciones, ya que Minio sirve como una alternativa a la arquitectura de almacenamiento al igual que el servicio de almacenamiento en la nube proporcionado.

Almacenamiento de objetos MinIO

1. ¬ŅC√≥mo funciona?

En un concepto simple, Minio viene en 2 partes: la parte del cliente y la parte del servidor. Este concepto también incluye un tablero a través de una interfaz de usuario web o un navegador de archivos. Tanto el lado del cliente como el del servidor son relativamente fáciles de configurar y, si está familiarizado con la CLI (interfaz de línea de comandos), le resultará fácil de entender.

Sin embargo, cuando lo dise√Īamos en un nivel de producci√≥n, todo debe distribuirse, lo que significa que la soluci√≥n proporcionada debe garantizar un buen desempe√Īo a gran escala, crecimiento autoexpandible y disponibilidad alta. Teniendo esto en cuenta, minio tiene su propio concepto llamado C√≥digo de borrado distribuido.

Esquema de servidor MinIO

Este concepto es un enfoque confiable para fragmentar datos en varias unidades y recuperarlos, incluso cuando algunas de las unidades no est√°n disponibles. Al usar este concepto, puede perder la mitad de las unidades y a√ļn as√≠ tener la garant√≠a de sus datos.

Para este tutorial, le mostraré cómo instalar y configurar el servidor MinIO como un código de borrado distribuido. Después de eso, echaremos un vistazo rápido al lado del cliente sobre cómo utilizar el servicio MinIO como usuario final.

2. Fase de instalación

Para la fase de instalación configuraré 2 servidores como minio cluster para preparar la configuración del código de borrado distribuido.

Ahora enumeraremos 4 unidades de disco que usaremos para particionarlo como dispositivo de bloque para el uso de minio. Como nuestra arquitectura decidi√≥ configurar varios servidores, la unidad m√≠nima que debe haber para un servidor es 2; sin embargo, si est√° utilizando un solo servidor, el requisito m√≠nimo de las unidades es 1. Se pueden ver los requisitos detallados necesarios para el dise√Īo del c√≥digo de borrado aqu√≠ .

A continuación se muestran los pasos:

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


Como puede ver arriba, en nuestro extremo hay 4 unidades montadas en nuestro servidor con 8 gb de tama√Īo cada una.

A continuación, crearemos una partición de cada unidad, luego crearemos un directorio dedicado que se montará en cada partición que se creará. A continuación se muestran los pasos.

 
[[email protected] ~]# fdisk /dev/sdb 
Welcome to fdisk (util-linux 2.23.2).

Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.

Device does not contain a recognized partition table
Building a new DOS disklabel with disk identifier 0x4217c4d9.

Command (m for help): p

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 label type: dos
Disk identifier: 0x4217c4d9

Device Boot Start End Blocks Id System

Command (m for help): n
Partition type:
p primary (0 primary, 0 extended, 4 free)
e extended
Select (default p): p
Partition number (1-4, default 1):
First sector (2048-16777215, default 2048):
Using default value 2048
Last sector, +sectors or +size{K,M,G} (2048-16777215, default 16777215):
Using default value 16777215
Partition 1 of type Linux and of size 8 GiB is set

Command (m for help): p

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 label type: dos
Disk identifier: 0x4217c4d9

Device Boot Start End Blocks Id System
/dev/sdb1 2048 16777215 8387584 83 Linux

Command (m for help): w
The partition table has been altered!

Calling ioctl() to re-read partition table.
Syncing disks.

Command (m for help): q

[[email protected] ~]# ls /dev/sdb*
/dev/sdb /dev/sdb1
[[email protected] ~]# mkfs.xfs -f /dev/sdb1
meta-data=/dev/sdb1 isize=512 agcount=4, agsize=524224 blks
= sectsz=512 attr=2, projid32bit=1
= crc=1 finobt=0, sparse=0
data = bsize=4096 blocks=2096896, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=1
log =internal log bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
[[email protected] ~]#
[[email protected] ~]# mkdir -p /opt/drive1
[[email protected] ~]# mkdir -p /opt/drive2
[[email protected] ~]# mkdir -p /opt/drive3
[[email protected] ~]# mkdir -p /opt/drive4
[[email protected] ~]#
[[email protected] ~]# mount /dev/sdb1 /opt/drive1
[[email protected] ~]# 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
[[email protected] ~]#


Una vez hecho esto, repita el mismo proceso para crear una partici√≥n en las unidades restantes y luego m√≥ntela en cada directorio que hayamos creado. Como resultado final, finalmente deber√≠a obtener la salida como se muestra a continuaci√≥n: –

 [[email protected] ~]# mount /dev/sdb1 /opt/drive1 
[[email protected] ~]# mount /dev/sdc1 /opt/drive2 
[[email protected] ~]# mount /dev/sdd1 /opt/drive3 
[[email protected] ~]# mount /dev/sde1 /opt/drive4 
[[email protected] ~]# 
[[email protected] ~]# 
[[email protected] ~]# 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

Muy bien, como requisito previo en las unidades para el servidor 1, repita la misma configuración en el servidor 2 como se indicó anteriormente.

3. Fase de Configuración

Ahora que ambas configuraciones de servidor están listas, continuemos con la instalación del servicio minio. Primero, descargue el paquete minio como se muestra a continuación:

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


Ahora repita lo mismo que arriba en el servidor 2.

Como todo est√° hecho, comencemos la configuraci√≥n de minio. Definiremos la MINIO_ACCESS_KEY y MINIO_SECRET_KEY como el acceso de autenticaci√≥n. La configuraci√≥n es la siguiente: –

 [[email protected] ~]# export MINIO_ACCESS_KEY=shahril && export MINIO_SECRET_KEY=shahril123 
[[email protected] ~]# ./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


Ahora la configuración se realiza en el servidor 1, repita el mismo paso en el servidor 2 para la configuración.

Una vez hecho todo, podemos proceder a probar el resultado.

4. Fase de prueba

Ya que todo está hecho, empecemos a ver la usabilidad de minio services. Como se muestra en la configuración anterior, podemos acceder al tablero de su interfaz de usuario a través del navegador. Para nuestro ejemplo, iniciemos sesión en http://10.124.12.141:9000 con clave de acceso Shahril y clave secreta shahril123 como configurado.

El resultado se mostrar√° de la siguiente manera: Anuncio

Inicio de sesión en MinIO

Una vez hecho esto, nos redirigirá al panel de control del cubo. Ahora vamos a crear nuestro primer depósito.

Haga clic en la carpeta de iconos con el bot√≥n m√°s y nombre nuestro primer cubo como mi amor. Ejemplo seg√ļn se muestra a continuaci√≥n:

Navegador MinIO - Panel de control del depósito

Balde

Una vez hecho esto, notará que se crea un nuevo depósito y se muestra en el panel izquierdo como se muestra a continuación.

lista de deseos

Una vez hecho esto, notará que se crea un nuevo depósito y se muestra en el panel izquierdo como se muestra a continuación.

A continuación, agreguemos cualquier archivo de su lado local para insertarlo en el cubo

Agregar archivos en el depósito de MinIO

Notará que el nuevo archivo se cargó correctamente en el depósito como se muestra a continuación.

Archivo cargado en MinIO Bucket

Para garantizar que el concepto de distribución esté bien implementado. Hagamos una prueba sencilla accediendo al panel de minio a través de otro servidor. Las otras URL del servidor son http://10.124.12.142:9000

Tablero MinIO

Como era de esperar, el depósito y los archivos que hemos insertado también existen en la URL de otros servidores, como se muestra arriba.

Ahora, hagamos otra prueba. Esta vez usaremos otra estación de trabajo que accederá a nuestro servidor minio usando la consola del cliente llamada mc.

Desde el lado del cliente, crearemos un archivo y luego lo cargaremos en el depósito existente.

Luego, como resultado final, esperamos ver desde el tablero que el nuevo archivo cargado desde el lado del cliente existe autom√°ticamente.

Primero, abra la estación de trabajo del cliente y descargue el paquete del cliente minio. A continuación se muestra un ejemplo:

 [[email protected] ~]# wget https://dl.min.io/client/mc/release/linux-amd64/mc 
--2019-09-30 11:47:38-- https://dl.min.io/client/mc/release/linux-amd64/mc 
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: 16592896 (16M) [application/octet-stream] 
Saving to: ‚Äėmc‚Äô

100%[==============================================================================>] 16,592,896 741KB/s in 1m 59s

2019-09-30 11:49:37 (137 KB/s) – ‚Äėmc‚Äô saved [16592896/16592896]

[[email protected] ~]# chmod +x mc


Luego, realice la configuraci√≥n desde el lado del cliente para acceder al dep√≥sito dedicado usando crear clave de acceso y secreto. Ejemplo seg√ļn lo siguiente:

 [[email protected] ~]# ./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.

Una vez configurado, deber√≠a lograr ver el contenido dentro del cubo existente. Ejemplo seg√ļn lo siguiente:

 [[email protected] ~]# ./mc ls myminio 
[2019-09-30 11:16:25 +08] 0B mylove/

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


Ahora, cree o cargue cualquier archivo existente del lado del cliente en el cubo. Ejemplo seg√ļn lo siguiente: –

 [[email protected] ~]# ./mc cp new_file.txt myminio/mylove 
new_file.txt: 38 B / 38 B ???????????????????????????????????????????????????????????????? 100.00% 1.02 KiB/s 0s 
[[email protected] ~]#

[[email protected] ~]# ./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


Una vez hecho esto, como se esperaba cuando actualice desde el panel de control a través de cualquiera de las URL del servidor, debería ver que el nuevo archivo se muestra allí como se muestra a continuación.

Archivo cargado usando la consola MinIO

Deber√≠a ver el enlace completo de la imagen cuando haga clic en el icono de compartir en su lado derecho como se muestra a continuaci√≥n. Este es el enlace √ļnico de cada objeto dentro del dep√≥sito que puede usar en el lado de la aplicaci√≥n a trav√©s de curl o API.

Compartir objeto

¡Pulgares hacia arriba! ahora hemos instalado y configurado con éxito un servicio de almacenamiento autohospedado en las instalaciones usando Minio. Para obtener más detalles, puede consultar su documentación. aquí

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *