Skip to content

Latest commit

 

History

2 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

MinIO Hardened Stack para Velero (Docker-Compose)

Este repositorio contiene una infraestructura de almacenamiento de objetos de grado profesional basada en MinIO, diseñada específicamente para soportar cargas pesadas de backup (como Velero) de forma estable y resiliente.

🏗️ Arquitectura del Sistema

A diferencia de un despliegue básico, esta solución utiliza una arquitectura de tres capas:

  1. Capa de Optimización (OS Hardening): Ajusta el Kernel de Linux (límites de archivos, stack TCP, I/O buffers) para permitir miles de conexiones simultáneas sin degradación de rendimiento.
  2. Capa de Proxy (Nginx): Actúa como terminador de tráfico y balanceador. Nginx está configurado para manejar subidas de archivos sin límite de tamaño y optimizar el streaming de datos hacia MinIO.
  3. Capa de Almacenamiento (MinIO Distributed Virtual): Configurado en modo Erasure Coding (usando 4 drives virtuales). Esto permite la recuperación automática de datos si se detecta corrupción a nivel de bits (bit-rot protection).

📂 Estructura del Proyecto

  • docker-compose.yml: Define los servicios MinIO y Nginx, sus límites de recursos y redes internas.
  • Makefile: El orquestador principal. Automatiza todo el ciclo de vida del despliegue.
  • scripts/:
    • hardening.sh: Aplica el tuning del sistema operativo (sysctl, limits.conf).
    • setup-disk.sh: Prepara el disco /dev/sdb con XFS o prepara el entorno en el disco principal.
    • setup-buckets.sh: Automatiza la creación de usuarios, buckets, políticas IAM y reglas de ciclo de vida.
    • install-docker.sh: Instalador oficial de Docker Engine y Compose V2.
  • configs/:
    • nginx.conf: Configuración optimizada para S3 y streaming de datos.
    • policy.json: Política IAM de "mínimo privilegio" para el cliente de backups.

🚀 Guía de Despliegue

1. Preparación

Copia la plantilla de entorno y configura tus credenciales:

cp .env.example .env
chmod 600 .env
nano .env

Asegúrate de cambiar las contraseñas predeterminadas.

2. Despliegue Automático

Ejecuta el flujo completo con un solo comando:

make all

Este comando realizará: Install Docker -> Setup Disk -> OS Hardening -> Launch Stack -> Provision Buckets.


🛠️ Comandos del Makefile

Comando Descripción
make harden Aplica ajustes de rendimiento al Kernel (requiere sudo).
make setup-disk Formatea/Monta el disco dedicado o prepara carpetas locales.
make up Levanta los contenedores de MinIO y Nginx.
make configure Crea el bucket, el usuario y la regla de borrado automático (>60 días).
make verify Prueba la conexión HTTP contra el proxy Nginx.
make all Ejecuta toda la secuencia anterior de forma ordenada.

📊 Información de Conexión (para Velero)

Tras completar el despliegue, utiliza estos datos en tu cluster de Kubernetes:

  • Endpoint: http://<IP-DE-TU-VM>:9000 (o localhost si es prueba local).
  • Console (UI): http://<IP-DE-TU-VM>:9001
  • Bucket: velero-backups
  • Access Key: El valor de MINIO_STORAGE_USER en tu .env.
  • Secret Key: El valor de MINIO_STORAGE_PASSWORD en tu .env.
  • Región: minio

🛡️ Mantenimiento y Resiliencia

Monitoreo de Salud

Añade estos scripts a tu crontab -e para asegurar la disponibilidad:

# Autoreparación si el contenedor falla (cada 5 min)
*/5 * * * * /ruta/al/proyecto/scripts/healthcheck-cron.sh >> /var/log/minio-health.log 2>&1

# Alerta de espacio en disco (cada hora)
0 * * * * /ruta/al/proyecto/scripts/disk-alert.sh >> /var/log/minio-disk.log 2>&1

Protección contra Corrupción

Gracias al modo Erasure Coding, MinIO verifica constantemente la integridad de tus backups. Si un bloque de disco falla, MinIO reconstruirá el archivo original usando los bloques de paridad de los otros "drives" virtuales.

About

Stack MinIO dockerizado como almacenamiento S3 compatible para labs

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages