Cómo configurar el servidor de almacenamiento de objetos MinIO en modo independiente en Ubuntu 20.04

El autor seleccionó el Fondo de Código Libre y Abierto para recibir una donación como parte del programa Write for DOnations .

Introducción

La capacidad de almacenar blobs no estructurados de datos de objetos y hacerlos accesibles a través de API HTTP, conocida como almacenamiento de objetos , es parte integral del panorama tecnológico moderno, especialmente con soluciones de respaldo basadas en la nube y redes de distribución de contenido (CDN) de alta disponibilidad .

MinIO es un servidor de almacenamiento de objetos de código abierto compatible con el servicio de almacenamiento en la nube Amazon S3. Las aplicaciones configuradas para interactuar con Amazon S3 también se pueden configurar para interactuar con MinIO, lo que significa que puede utilizar MinIO como una alternativa viable a S3 para tener más control sobre su servidor de almacenamiento de objetos. El servicio almacena datos no estructurados, como fotos, videos, archivos de registro, copias de seguridad e imágenes de contenedores/máquinas virtuales, y puede proporcionar un único servidor de almacenamiento de objetos que agrupa varias unidades distribuidas en muchos servidores.

MinIO está escrito en Go y viene con un cliente de línea de comandos y una interfaz gráfica (la consola MinIO), a la vez que admite un servicio de cola simple para los objetivos Advanced Message Queuing Protocol (AMQP) , Elasticsearch , Redis , NATS y PostgreSQL . Configurar un servidor de almacenamiento de objetos MinIO puede agregar una amplia gama de flexibilidad y utilidad a su proyecto por todas estas razones.

MinIO se puede instalar en modo independiente en un solo servidor o en modo distribuido en dos o más servidores compuestos por un total de al menos cuatro unidades o volúmenes de almacenamiento. Una implementación independiente de MinIO carece de algunas funciones avanzadas que son predeterminadas en una implementación distribuida, como control de versiones, escalabilidad, redundancia y disponibilidad. Una implementación independiente se puede utilizar para fines de evaluación y desarrollo a pequeña escala, mientras que una implementación distribuida es muy recomendable para producción o necesidades de desarrollo importantes.

En este tutorial, configurará una implementación independiente de MinIO mediante lo siguiente:

  • Instalación del servidor MinIO en un servidor que ejecuta Ubuntu 20.04.
  • Instalar el cliente MinIO en su computadora personal y configurarlo para comunicarse con el servidor MinIO.
  • Configuración de un certificado digital para proteger la comunicación entre el servidor y el cliente, incluso a través de la consola MinIO.

Prerrequisitos

Para completar este tutorial, necesitarás:

  • Un servidor Ubuntu 20.04, que incluye un usuario sudo no root y un firewall. Puedes configurarlo siguiendo esta configuración inicial del servidor Ubuntu 20.04 .

Opcionalmente, para acceder a la Consola MinIO a través de un nombre de dominio en lugar de o además de acceder a ella a través de la dirección IP de su servidor, necesitará:

  • Un nombre de dominio registrado. Este tutorial lo utiliza example.comen todo momento. Puede comprar un nombre de dominio en Namecheap , obtener uno gratis en Freenom o utilizar el registrador de dominios que prefiera.
  • Ambos registros DNS siguientes para su servidor. Siga la guía de inicio rápido de DNS para obtener detalles sobre cómo agregarlos.
    • Un registro A que example.comapunta a la dirección IP pública de su servidor.
    • Un registro A que www.example.comtambién apunta a la dirección IP pública de su servidor.

Paso 1: Descarga e instalación del servidor MinIO

El servidor MinIO se puede instalar desde un archivo binario o un .debpaquete. En este paso, lo instalará utilizando el .debpaquete.

Para comenzar, inicie sesión en su servidor:

  1. ssh sammy@your-server-ip

Actualizar la base de datos del paquete:

  1. sudo apt update

Luego, actualice el sistema:

  1. sudo apt upgrade

Confirme la instalación con y.

Durante el proceso de actualización, es posible que aparezca una pantalla en su terminal (vea la imagen a continuación) que le solicite información sobre el archivo de configuración del servidor OpenSSH. Dado que no es conveniente que se sobrescriban los cambios que realizó en el archivo de configuración, presione Enterpara aceptar la opción predeterminada resaltada en rojo (“mantener la versión local instalada actualmente”).

A continuación, descargue el último .debpaquete del servidor MinIO desde la página de descargas de MinIO :

  1. wget https://dl.min.io/server/minio/release/linux-amd64/minio_20220523184511.0.0_amd64.deb

Se descargará un archivo llamado en su directorio de trabajo. El comando se utiliza para administrar paquetes, por lo que debe instalar el archivo descargado con el siguiente comando:minio_20220523184511.0.0_amd64.debdpkg.deb

  1. sudo dpkg -i minio_20220523184511.0.0_amd64.deb

La -iopción instalará el paquete.

Ese comando configura un miniocomando y un systemdscript de inicio, y ambos pueden usarse para iniciar el servidor MinIO.

Aquí, actualizó los paquetes e instaló el servicio MinIO. En el siguiente paso, creará los objetos del sistema de archivos necesarios para que se ejecute el servidor MinIO.

Paso 2: Creación del usuario, grupo, directorio de datos y archivo de entorno de MinIO

En este paso, deberá configurar los requisitos para el servidor MinIO. El servidor MinIO no se iniciará si no se completan las tareas de este paso.

Primero, cree un grupo de sistemas que el servidor MinIO ejecutará con el siguiente comando:

  1. sudo groupadd -r minio-user

La -rbandera instruye al comando para convertir el grupo en un grupo de sistema.

Luego, crea el usuario con el que se ejecutará el servidor MinIO:

  1. sudo useradd -M -r -g minio-user minio-user

La -Mbandera indica al comando que no cree un directorio de inicio para el usuario. La -rbandera crea un usuario del sistema. La -gbandera asigna al usuario a su grupo principal; en este caso, el grupo es el minio-usergrupo creado anteriormente.

A continuación, crea el directorio de datos donde MinIO almacenará todos sus archivos con el siguiente comando:

  1. sudo mkdir /mnt/data

Luego, otorga la propiedad del directorio de datos al usuario y grupo MinIO:

  1. sudo chown minio-user:minio-user /mnt/data

Por último, utilice el siguiente comando para crear y abrir el archivo de entorno de MinIO:

  1. sudo nano /etc/default/minio

Este archivo contendrá las variables requeridas por el servidor y la consola.

Agregue el siguiente código al archivo, actualizandoSammycon el usuario no root de su servidor:

/etc/predeterminado/minio

MINIO_VOLUMES="/mnt/data"MINIO_OPTS="--certs-dir /home/sammy/.minio/certs --console-address :9001"MINIO_ROOT_USER=minioadminMINIO_ROOT_PASSWORD=minioadmin

La MINIO_VOLUMESvariable define el directorio de datos de MinIO, mientras que la MINIO_OPTSvariable define el directorio para los certificados digitales, la dirección de escucha de la consola MinIO y el número de puerto (todas las interfaces de red y el puerto 9001). El directorio aún no existe, pero lo creará en el paso 4./home/sammy/.minio/certs

Puede definir el usuario y la contraseña de inicio de sesión para la consola MinIO con las variables MINIO_ROOT_USERy MINIO_ROOT_PASSWORD. Ambos están configurados actualmente como , minioadminpero debe actualizar el usuario y la contraseña con credenciales de inicio de sesión seguras.

Guarde y cierre el archivo.

En este paso, configura el usuario de MinIO y otros requisitos. A continuación, configurará el firewall para permitir el tráfico de MinIO.

Paso 3: Configurar el firewall para permitir el tráfico de MinIO

En este paso, configurará el firewall para permitir el tráfico en los puertos que acceden al servidor MinIO y a la consola MinIO. Los siguientes puntos son pertinentes para MinIO:

  • 9000es el puerto predeterminado en el que escucha el servidor MinIO.

  • 9001es el puerto recomendado para acceder a la consola MinIO.

Permita el tráfico a ambos puertos a través del firewall con el siguiente comando:

  1. sudo ufw allow 9000:9001/tcp

Verá el siguiente resultado:

OutputRule addedRule added (v6)

Ahora que los puertos están listos, puedes generar un certificado autofirmado para habilitar el acceso seguro al servidor MinIO.

Paso 4: Cómo proteger el acceso al servidor MinIO con un certificado autofirmado

En este paso, utilizará certgen, una aplicación Go de los desarrolladores de MinIO, para generar un certificado autofirmado. La última versión en el momento de redactar este artículo es la 1.2.0 .

Descargue la última versión con el siguiente comando:

  1. wget https://github.com/minio/certgen/releases/download/v1.2.0/certgen_1.2.0_linux_amd64.deb

Este comando colocará un archivo llamado en su directorio de trabajo. Instálelo con el siguiente comando:certgen_1.2.0_linux_amd64.deb

  1. sudo dpkg -i certgen_1.2.0_linux_amd64.deb

El certgencomando ahora estará disponible en el sistema y certgen -hmostrará su información de uso.

Si desea apuntar un nombre de dominio al servidor y desea hacer referencia al servidor MinIO mediante ese nombre de dominio y la dirección IP, genere un certificado para el servidor MinIO utilizando el siguiente comando:

  1. sudo certgen -host example.com,your-server-ip

Si desea acceder al servidor MinIO únicamente a través de la dirección IP de su servidor, genere un certificado para él utilizando el siguiente comando:

  1. sudo certgen -host your-server-ip

Si se genera correctamente, la salida debería verse así:

OutputCreated a new certificate 'public.crt', 'private.key' valid for the following names - "example.com" - "your-server-ip"

Si no está utilizando un dominio, su salida solo mostrará la IP del servidor.

Los archivos public.crty private.keydeben estar en su directorio de trabajo. Esos archivos deben ser movidos al directorio. Dado que ese directorio aún no existe, créelo con el siguiente comando, reemplazando/home/sammy/.minio/certsSammycon el usuario no root de su servidor:

  1. sudo mkdir -p /home/sammy/.minio/certs

La -popción crea directorios principales que no existen.

Mueva los archivos con este comando (reemplazandoSammysegún sea necesario):

  1. sudo mv private.key public.crt /home/sammy/.minio/certs

Por último, otorga la propiedad de ambos archivos al usuario y grupo MinIO (reemplazandoSammysegún sea necesario):

  1. sudo chown minio-user:minio-user /home/sammy/.minio/certs/private.key
  2. sudo chown minio-user:minio-user /home/sammy/.minio/certs/public.crt

En este paso, generó un certificado autofirmado para su servidor o dominio. A continuación, iniciará el servidor MinIO.

Paso 5: Iniciar el servidor MinIO

En este paso, iniciará el servidor MinIO con su systemdservicio.

El servidor MinIO se puede iniciar con el miniocomando o llamando a su systemdsecuencia de comandos de inicio. Sin embargo, cuando el servidor MinIO se inicia con el miniocomando, no sobrevivirá a un reinicio. Además, iniciar el servidor MinIO con el miniocomando creará automáticamente .miniouna carpeta en /root, lo que no funcionará con systemd. Por lo tanto, se recomienda iniciar el servidor MinIO a través de systemd.

Inicie el servidor MinIO con el siguiente comando:

  1. sudo systemctl start minio

Comprobar el estado:

  1. sudo systemctl status minio

El resultado debería verse así:

Outputminio.service - MinIO     Loaded: loaded (/etc/systemd/system/minio.service; disabled; vendor preset: enabled)     Active: active (running) since Mon 2022-05-23 02:55:03 UTC; 2s ago       Docs: https://docs.min.io    Process: 21978 ExecStartPre=/bin/bash -c if [ -z "${MINIO_VOLUMES}" ]; then echo "Variable MINIO_VOLUMES not set in /etc/default   Main PID: 21989 (minio)      Tasks: 7     Memory: 49.5M     CGroup: /system.slice/minio.service             └─21989 /usr/local/bin/minio server --certs-dir /home/finid/.minio/certs --console-address :9001 /mnt/dataMay 23 02:55:03 minio-buntu systemd[1]: Starting MinIO...May 23 02:55:03 minio-buntu systemd[1]: Started MinIO.May 23 02:55:03 minio-buntu minio[21989]: WARNING: Detected default credentials 'minioadmin:minioadmin', we recommend that you changMay 23 02:55:03 minio-buntu minio[21989]: API: https://161.35.115.223:9000  https://10.10.0.6:9000  https://10.116.0.3:9000  https:/May 23 02:55:03 minio-buntu minio[21989]: Console: https://161.35.115.223:9001 https://10.10.0.6:9001 https://10.116.0.3:9001 https:May 23 02:55:03 minio-buntu minio[21989]: Documentation: https://docs.min.ioMay 23 02:55:03 minio-buntu minio[21989]: Finished loading IAM sub-system (took 0.0s of 0.0s to load data).

Si la API y la consola en la referencia de salida anterior https, todo funcionó como se esperaba.

Sin embargo, si la API y la referencia de la consola http, algo salió mal, incluso si MinIO se inició correctamente. Es posible que deba generar un nuevo certificado mediante el Paso 4 para dirigirse a https; luego reinicie el servicio MinIO. Otra fuente de error puede ocurrir si los archivos de certificado no están en el directorio correcto o si el usuario MinIO no los posee. MinIO no siempre registra en el systemddiario, por lo que si sudo journalctl -u miniono muestra una actividad actualizada al solucionar problemas de MinIO, use el sudo grep minio /var/log/syslogcomando en su lugar.

En este paso, iniciaste el servidor MinIO. A continuación, te conectarás a él.

Paso 6: Conexión segura al servidor MinIO a través de la consola MinIO

La consola MinIO es la interfaz gráfica para realizar tareas de administración como la supervisión del registro de acceso y la configuración del servidor. En este paso, se conectará al servidor MinIO a través de esta consola.

Apunte su navegador a https://your-server-ip:9001.

Nota: Debido a que no hay ningún servidor web involucrado, http://your-server-ip:9001no se redireccionará a https://your-server-ip:9001. Utilice siempre https://your-server-ip:9001para acceder a su consola MinIO.

Dado que el certificado está autofirmado, su navegador mostrará un mensaje similar al que se muestra en esta imagen:

Si utiliza Firefox, haga clic en Opciones avanzadas… y luego en Aceptar el riesgo y continuar . Para otros navegadores, el proceso será similar.

Ahora se cargará la pantalla de inicio de sesión de la consola MinIO:

Inicie sesión con las credenciales configuradas en el archivo de entorno de MinIO creado en el Paso 2.

Tras un inicio de sesión exitoso, la interfaz principal se cargará de la siguiente manera:

Puede realizar tareas administrativas desde la interfaz de la consola, como ver registros, crear y administrar depósitos, usuarios y grupos, y otras tareas de configuración del servidor.

Ya se ha conectado al servidor MinIO a través de su interfaz gráfica. En el siguiente paso, instalará y utilizará el cliente MinIO en su computadora personal y lo utilizará para conectarse al servidor MinIO.

Paso 7: Instalación y uso del cliente MinIO en su computadora local

El cliente MinIO es el componente de MinIO que se instala en el equipo local y se utiliza para administrar el servidor MinIO. Todos los comandos de este paso se completarán en la línea de comandos del equipo local. Al igual que con el servidor MinIO, el cliente se puede instalar desde un archivo binario o un .debpaquete. En este paso, lo instalará utilizando el .debpaquete.

En una nueva sesión de terminal en su máquina local, descargue el último .debpaquete de cliente MinIO desde la página de descargas de MinIO :

  1. wget https://dl.min.io/client/mc/release/linux-amd64/mcli_20220509040826.0.0_amd64.deb

wgetColoca un archivo llamado mcli_20220509040826.0.0_amd64.deben tu directorio de trabajo. Instálalo usando:

  1. sudo dpkg -i mcli_20220509040826.0.0_amd64.deb

Este comando hace que el cliente MinIO esté disponible en su computadora personal, a la que luego puede llamar con el mclicomando. Para inicializar el cliente y habilitar el autocompletado para su shell, lo que facilitaría la escritura de comandos del cliente, emita el siguiente comando:

  1. mcli --autocompletion

Obtendrás un resultado como este:

Outputmcli: Configuration written to `/home/sammy/.mcli/config.json`. Please update your access credentials.mcli: Successfully created `/home/sammy/.mcli/share`.mcli: Initialized share uploads `/home/sammy/.mcli/share/uploads.json` file.mcli: Initialized share downloads `/home/sammy/.mcli/share/downloads.json` file.mcli: Your shell is set to 'bash', by env var 'SHELL'.mcli: enabled autocompletion in your 'bash' rc file. Please restart your shell.

Esta salida le indica la ubicación de la carpeta de configuración oculta y otras carpetas y archivos de configuración debajo de ella.

Para habilitar el autocompletado en su shell actual sin tener que apagarlo y reiniciarlo, emita el siguiente comando:

  1. source .profile

El archivo de configuración contiene las credenciales de acceso de los servidores MinIO que puede administrar con el cliente MinIO. Puede editar el archivo en un editor de terminal o agregar una entrada con mcli.

Para agregar una entrada para su servidor MinIO en el archivo de configuración con mcli, use el siguiente comando con las credenciales que configuró para el servidor en el Paso 2:

  1. mcli --insecure alias set myminio/ https://your-server-ip:9000 minioadmin minioadmin

El nombre que aparece después del alias setcomando puede tener cualquier valor. En este caso, se establece como myminio/.

La --insecurebandera es necesaria porque estás usando un certificado autofirmado. Sin ella, el comando fallará porque el cliente intentará verificar que el certificado proviene de una autoridad de certificación confiable.

Consejo: cuando utilice el cliente MinIO para conectarse al servidor MinIO, siempre llame al mclicomando con el --insecureindicador . Esto no significa que la conexión no sea segura. Solo significa que el cliente no intentará verificar la autenticidad del certificado. El comando fallará sin ese indicador, pero utilícelo solo cuando utilice un certificado autofirmado.

Utilice el siguiente comando para mirar dentro del ~/.mcli/config.jsonarchivo:

  1. sudo nano ~/.mcli/config.json

Verás el myminiohost que acabas de agregar:

~/.mcli/config.json

{  "version": "10",  "aliases": {    "gcs": {      "url": "https://storage.googleapis.com",      "accessKey": "YOUR-ACCESS-KEY-HERE",      "secretKey": "YOUR-SECRET-KEY-HERE",      "api": "S3v2",      "path": "dns"    },    "local": {      "url": "http://localhost:9000",      "accessKey": "",      "secretKey": "",      "api": "S3v4",      "path": "auto"    },    "myminio": {      "url": "https://your_server_ip:9000",      "accessKey": "minioadmin",      "secretKey": "minioadmin",      "api": "S3v4",      "path": "auto"    },    "play": {      "url": "https://play.min.io",      "accessKey": "ACCESS-KEY",      "secretKey": "SECRET-KEY",      "api": "S3v4",      "path": "auto"    },    "s3": {      "url": "https://s3.amazonaws.com",      "accessKey": "YOUR-ACCESS-KEY-HERE",      "secretKey": "YOUR-SECRET-KEY-HERE",      "api": "S3v4",      "path": "dns"    }  }

Ahora está listo para explorar los comandos que vienen con el cliente. Ejecútelo con -hflag para imprimir la página de ayuda:

  1. mcli -h

La salida debe incluir lo siguiente:

OutputCOMMANDS:  alias      manage server credentials in configuration file  ls         list buckets and objects  mb         make a bucket  rb         remove a bucket  cp         copy objects  mv         move objects  rm         remove object(s)  mirror     synchronize object(s) to a remote site  cat        display object contents  head       display first 'n' lines of an object......GLOBAL FLAGS:  --autocompletion              install auto-completion for your shell  --config-dir value, -C value  path to configuration folder (default: "/home/finid/.mcli")  --quiet, -q                   disable progress bar display  --no-color                    disable color theme  --json                        enable JSON lines formatted output  --debug                       enable debug output  --insecure                    disable SSL certificate verification  --help, -h                    show help  --version, -v                 print the version...

Para obtener sugerencias sobre cómo utilizar cualquier comando, invóquelo con la -hopción. Por ejemplo:

  1. mcli alias -h

Para obtener información sobre el servidor MinIO, escriba:

  1. mcli --insecure admin info myminio

La salida será similar a esto:

Output●  your-server-ip:9000   Uptime: 8 hours    Version: 2022-05-19T18:20:59Z

Con el servidor MinIO en ejecución, puedes reiniciarlo usando:

  1. mcli --insecure admin service restart myminio

No es posible iniciar un servidor MinIO detenido desde el cliente. Si el servidor MinIO está detenido, debe iniciar sesión en el servidor e iniciarlo con el systemctlcomando del paso 5. Puede detener el servidor mediante:

  1. mcli --insecure admin service stop myminio

En este paso, usted se conectó a su servidor MinIO desde su computadora local usando el mclicomando con la --insecurebandera.

Conclusión

En este tutorial, configuró un servidor de almacenamiento de objetos con MinIO y creó una conexión segura con él mediante un certificado autofirmado. También se conectó al servidor MinIO mediante la consola MinIO y se conectó al servidor MinIO a través del cliente MinIO que instaló en su computadora personal.

Esta configuración es un sistema independiente para proyectos de desarrollo pequeños y propósitos de evaluación. Cuando esté listo para usarlo en producción o en proyectos de desarrollo importantes, debe configurarlo en modo distribuido. Puede obtener más información en el sitio web de documentación de MinIO .

La capacidad de almacenamiento de la configuración independiente está limitada a la capacidad de almacenamiento del servidor. Sin embargo, puede utilizar volúmenes de almacenamiento en bloque para ampliar la capacidad de almacenamiento del servidor hasta 80 TB. Obtenga más información sobre la administración de volúmenes de almacenamiento en bloque en la documentación del producto .

SUSCRÍBETE A NUESTRO BOLETÍN 
No te pierdas de nuestro contenido ni de ninguna de nuestras guías para que puedas avanzar en los juegos que más te gustan.

Deja un comentario

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

Scroll al inicio