MinIo para los más pequeños

MinIO es una excelente solución cuando necesitas organizar un almacenamiento de objetos de manera sencilla y rápida. Su configuración elemental, la compatibilidad con múltiples plataformas y un buen rendimiento han contribuido a su popularidad. Por lo tanto, no tuvimos otra opción que declarar hace un mes la compatibilidad. Veeam Backup & Replication y MinIO. Incluyendo funciones importantes como la Inmutabilidad. De hecho, MinIO ofrece un sección en la documentación dedicada a nuestra integración.

Así que hoy hablaremos sobre cómo:

  • Configurar MinIO de forma muy rápida.
  • Configurar MinIO algo menos rápido, pero de una manera significativamente mejor.
  • Utilizarlo como Archive Tier para un repositorio escalable de Veeam SOBR.

MinIo para los más pequeños

¿Qué eres?

Una breve introducción para aquellos que no están familiarizados con MinIO. Es un almacenamiento de objetos de código abierto compatible con la API de Amazon S3. Se lanza bajo la licencia Apache v2 y sigue la filosofía del minimalismo espartano.

Es decir, no tiene una GUI extensa con paneles, gráficos y numerosos menús. MinIO simplemente inicia su servidor con un solo comando, donde puedes almacenar datos utilizando toda la potencia de la API de S3. Pero hay que señalar que esta simplicidad puede ser engañosa cuando se trata de los recursos utilizados. La RAM y el CPU se consumen muy bien, pero las razones se explicarán más adelante. Y, de hecho, soluciones como FreeNAS y TrueNAS utilizan precisamente MinIO en su núcleo.

Con esto, podemos finalizar la introducción.

La configuración de MinIO es muy rápida.

Su configuración es tan rápida que la analizaremos para Windows y Linux. Hay opciones también para Docker, Kubernetes e incluso para macOS, pero el sentido en todos los casos será el mismo.

Entonces, en el caso de Windows, vamos al sitio oficial https://min.io/download#/windows y descargamos la última versión. Allí también encontramos instrucciones para el lanzamiento:

 minio.exe server F:Data

Y allí también un enlace a un Quick start guide. No tiene sentido no seguir las instrucciones, así que iniciamos y obtenemos aproximadamente esta respuesta.

MinIo para los más pequeños
¡Eso es todo! El almacenamiento funciona y puedes empezar a trabajar con él. No bromeaba cuando decía que MinIO es minimalismo y simplemente funciona. Si sigues el enlace proporcionado al iniciarlo, la máxima funcionalidad disponible allí es crear un bucket. Y puedes empezar a escribir datos.

Para los amantes de Linux, todo sigue siendo igual de simple. Instrucciones sencillas:


wget https://dl.min.io/server/minio/release/linux-amd64/minio
chmod +x minio
./minio server /data

El resultado será indistinguible de lo visto anteriormente. 

La configuración de MinIO es un poco más lógica

Como entendemos, el párrafo anterior es solo una broma para fines de prueba. Y, seamos sinceros, utilizamos MinIO de manera bastante amplia para pruebas, lo que no nos da vergüenza admitir. Por supuesto, funciona, pero es vergonzoso usarlo fuera de un entorno de prueba. Así que tomamos el esmeril y comenzamos a perfeccionarlo.

HTTPS

El primer paso obligatorio hacia la producción es la encriptación. Ya hay millones de manuales en la red sobre cómo agregar certificados a MinIO, pero su plan general es el siguiente:

  • Creando un certificado
  • En caso de Windows, lo colocamos en C:Users%User%.miniocerts
  • En caso de Linux en ${HOME}/.minio/certs 
  • Reiniciamos el servidor

El trivial Let’s Encrypt es aburrido y está descrito en todas partes, así que nuestro camino es el camino del samurái, por lo que en caso de Windows descargamos Cygwin, y en caso de Linux solo comprobamos que tenemos openssl instalado. Y hacemos un poco de magia en la consola:

  • Creamos claves: openssl ecparam -genkey -name prime256v1 | openssl ec -out private.key
  • Creamos el certificado con la clave: openssl req -new -x509 -days 3650 -key private.key -out public.crt
  • Copiamos private.key y public.crt en la carpeta mencionada anteriormente
  • Reiniciamos MinIO

Si todo ha salido bien, aparecerán líneas como estas en el estado.

MinIo para los más pequeños

Activamos la codificación de borrado de MinIO

Primero, algunas palabras sobre el tema. En pocas palabras: esto es una protección de software de los datos contra daños y pérdidas. Como RAID, solo que mucho más confiable. Si un RAID 6 clásico puede permitirse perder dos discos, MinIO puede soportar la pérdida de la mitad. La tecnología se describe con más detalle en la guía oficial. Pero si tomamos la esencia, es una implementación de los códigos de Reed-Solomon: toda la información se almacena en bloques de datos, a los que se añaden bloques de paridad. Y parece que esto ya se había hecho muchas veces, solo que hay un importante 'pero': podemos especificar claramente la proporción de bloques de paridad a bloques de datos para los objetos almacenados.
¿Quieres 1:1? ¡Por supuesto!
¿Quieres 5:2? ¡Sin problema!

Una función muy importante si utiliza varias nodos a la vez y desea encontrar su propio equilibrio entre la máxima seguridad de los datos y los recursos utilizados. Por defecto, MinIO utiliza la fórmula N/2 (donde N es el número total de discos), es decir, divide sus datos entre N/2 discos de datos y N/2 discos de paridad. Traduciendo al lenguaje humano: se pueden perder la mitad de los discos y recuperar los datos. Esta relación se establece a través de Clase de Almacenamiento, lo que le permite elegir lo que es más importante: la fiabilidad o la capacidad.

En la guía se presenta un ejemplo: supongamos que tiene una instalación con 16 discos y necesita almacenar un archivo de 100 MB. Si se utilizan las configuraciones predeterminadas (8 discos para datos, 8 para bloques de paridad), el archivo ocupará prácticamente el doble, es decir, 200 MB. Si la relación de discos es 10/6, necesitará 160 MB. 14/2 — 114 MB.

Otra importante diferencia con los RAID: en caso de fallo de discos, MinIO funcionará a nivel de objetos, recuperándolos uno por uno, sin detener el funcionamiento de todo el sistema. Mientras que un RAID convencional tendrá que restaurar todo el volumen, lo que tomará un tiempo impredecible. En la memoria del autor, una estantería de discos que perdió dos discos tuvo que recalcular durante una semana y media. Fue bastante desagradable.

Y, un punto importante: MinIO divide todos los discos para Erasure Coding en conjuntos de entre 4 y 16 discos, utilizando el tamaño máximo posible del conjunto. Y en adelante, un elemento de información se almacenará solo dentro de un conjunto.

Todo esto suena muy bien, pero ¿cuán complicado será la configuración? Vamos a verlo. Tomamos el comando para iniciar y simplemente enumeramos los discos en los que se debe crear el almacenamiento. Si todo se hizo correctamente, en el informe veremos la cantidad de discos utilizados. Y el consejo es que no es prudente agregar la mitad de los discos en un solo host, porque esto puede llevar a la pérdida de datos.

c:minio>minio.exe server F: G: H: I: J: K:

MinIo para los más pequeños
A continuación, para gestionar y configurar el servidor MinIO, necesitaremos un agente, que se puede descargar todo ahí mismo desde el sitio oficial.

Para no estar tecleando la dirección y las claves de acceso cada vez (y tampoco es seguro), es conveniente, al primer inicio, crear un alias con la fórmula mc alias set [YOUR-ACCESS-KEY] [YOUR-SECRET-KEY]

mc alias set veeamS3 https://172.17.32.52:9000 YOURS3ACCESSKEY YOURSECERTKE

O también puedes agregar tu host de inmediato:

mc config host add minio-veeam https://minio.jorgedelacruz.es YOURS3ACCESSKEY YOURSECERTKEY

Y luego crearemos un bucket inmutable con un hermoso comando

mc mb --debug -l veeamS3/immutable

mc:  PUT /immutable/ HTTP/1.1
Host: 172.17.32.52:9000
User-Agent: MinIO (windows; amd64) minio-go/v7.0.5 mc/2020-08-08T02:33:58Z
Content-Length: 0
Authorization: AWS4-HMAC-SHA256 Credential=minioadmin/20200819/us-east-1/s3/aws4_request, SignedHeaders=host;x-amz-bucket-object-lock-enabled;x-amz-content-sha256;x-amz-date, Signature=**REDACTED**
X-Amz-Bucket-Object-Lock-Enabled: true
X-Amz-Content-Sha256: UNSIGNED-PAYLOAD
X-Amz-Date: 20200819T092241Z
Accept-Encoding: gzip
mc:  HTTP/1.1 200 OK
Content-Length: 0
Accept-Ranges: bytes
Content-Security-Policy: block-all-mixed-content
Date: Wed, 19 Aug 2020 09:22:42 GMT
Location: /immutable
Server: MinIO/RELEASE.2020-08-16T18-39-38Z
Vary: Origin
X-Amz-Request-Id: 162CA0F9A3A3AEA0
X-Xss-Protection: 1; mode=block
mc:  Response Time:  253.0017ms

--debug permite ver no solo el mensaje final, sino información más detallada. 

-l significa —with-lock, lo que significa inmutable

Si ahora regresamos a la interfaz web, allí aparecerá nuestro nuevo bucket.

MinIo para los más pequeños
Por el momento, eso es todo. Hemos creado un almacenamiento seguro y estamos listos para pasar a la integración con Veeam.

También podemos asegurarnos de que todo funcione perfectamente:

c:minio>mc admin info veeamS3

● 172.17.32.52:9000
   Uptime: 32 minutos
   Versión: 2020-08-16T18:39:38Z
   Red: 1/1 OK
   Discos: 6/6 OK
0 B Usados, 1 Bucket, 0 Objetos
6 discos en línea, 0 discos fuera de línea

MinIO y Veeam

¡Atención! Si por alguna razón increíble deseas trabajar a través de HTTP, entonces en HKEY_LOCAL_MACHINESOFTWAREVeeamVeeam Backup and Replication crea una clave DWORD SOBRArchiveS3DisableTLS. Establece su valor en 1 y recuerda que no aprobamos este comportamiento ni lo recomendamos a nadie.

¡Atención una vez más! Si por algún malentendido sigues utilizando Windows 2008 R2, al intentar conectar MinIO a Veeam es probable que obtengas un error similar: Fallo en establecer conexión con el punto de acceso de Amazon S3. Esto se soluciona con un parche oficial de Microsoft.

Bien, los preparativos han terminado, abramos la interfaz de VBR y vayamos a la pestaña Infraestructura de Copia de Seguridad, donde invocaremos el asistente para agregar un nuevo repositorio.

MinIo para los más pequeños
Por supuesto, nos interesa el almacenamiento de objetos, específicamente S3 Compatible. En el asistente que se abre, ingresamos el nombre, seguimos los pasos indicando la dirección y la cuenta. Si es necesario, no olvidamos indicar la puerta de enlace a través de la cual se proxiarán las solicitudes al almacenamiento.

MinIo para los más pequeños
Después de lo cual seleccionamos el bucket, la carpeta y marcamos la casilla Hacer que las copias de seguridad recientes sean inmutables. O no lo hacemos. Pero dado que hemos creado un almacenamiento con soporte para esta función, sería un pecado no aprovecharlo.

MinIo para los más pequeños
Siguiente > Finalizar y disfrutar del resultado.

Ahora hay que añadirlo al repositorio SOBR como Capacity Tier. Para ello, creamos uno nuevo o editamos el existente. Nos interesa el paso de Capacity Tier.

MinIo para los más pequeños
Aquí tenemos que elegir qué escenario vamos a utilizar. Todas las opciones están bien descritas en otro el artículo, así que no repetiré.

Y al finalizar el trabajo del asistente, se lanzarán automáticamente tareas para la copia o transferencia de las copias de seguridad. Pero si no tienes planes de cargar inmediatamente todos los sistemas, asegúrate de establecer los intervalos permitidos para la operación mediante el botón Window.

MinIo para los más pequeños
Y, por supuesto, se pueden crear tareas de Backup Copy por separado. Algunos consideran que esto es más conveniente, ya que son un poco más transparentes y predecibles para el usuario que no quiere profundizar en los detalles del funcionamiento del capacity tier. Y hay suficientes detalles, así que recomiendo una vez más el artículo correspondiente en el enlace anterior.

Y para concluir, la respuesta a la maliciosa pregunta: ¿qué pasará si intentas eliminar una copia de seguridad del almacenamiento inmutable?

Aquí está la respuesta:

MinIo para los más pequeños
Eso es todo por hoy. Como de costumbre, aquí tienes una lista de temas útiles sobre el tema:

Fuente: habr.com

Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS 🔥 Compra un hosting fiable para sitios web con protección contra DDoS, servidores VPS VDS | ProHoster