Cómo montar tu propio servidor de S3

Con el crecimiento exponencial de la nube, muchos habrán oído hablar de Amazon S3. Pero, ¿y si te dijera que puedes tener algo similar en tu propio rincón del ciberespacio? ¡Sí, puedes! Y no es una tarea titánica. Con herramientas de código abierto como MinIO, es posible. Así que quédate, porque te voy a guiar para que montes tu propio servidor S3.

¿Por qué tener tu propio S3?

Quizás te plantees si realmente vale la pena, con tantas ofertas ya disponibles en el mercado. Pero piensa en la autonomía, en los costes que te ahorras, en la adaptabilidad según tus necesidades. O simplemente, piensa en el reto y en la diversión técnica que ello conlleva.

Conoce a MinIO, el protagonista de nuestra historia

MinIO es más que un simple software. Es una solución de almacenamiento de objetos que destaca por su rendimiento y que, para rematar, es de código abierto. Además, se lleva de maravilla con la API de Amazon S3, así que si ya estás familiarizado con S3, con MinIO te sentirás como en casa.

Montando MinIO en Ubuntu 22.04

El comienzo: Instalación

Vamos a empezar por el principio, ¿vale? Suponiendo que ya tienes tu máquina con Ubuntu 22.04 lista:

Descarga MinIO:

Abre tu terminal y teclea:

wget https://dl.min.io/server/minio/release/linux-amd64/minio

Dale permisos:

Queremos que sea ejecutable:

chmod +x minio

Arrancando motores: Primera ejecución

Una vez que lo tenemos instalado, es hora de ponerlo en marcha.

Ejecuta MinIO:

Supongamos que has decidido guardar tus datos en /data, para ello primero ejecutamos:

mkdir /data

Después podemos levantar el software de la siguiente forma, pero no es una buena practica ya que se puede acceder con el usuario por defecto minioadmin y password miniaoadmin:

./minio server /data

Para evitar lo anterior podéis ejecutarlo definiendo usuario y password con las variables de entorno definidas para ello:

Es decir:

MINIO_ROOT_USER=usuarioMINIO_ROOT_PASSWORD=password ./minio server /data

Por ejemplo:

root@MinIO:~# MINIO_ROOT_USER=AprendeIT MINIO_ROOT_PASSWORD=102371209673jhdef ./minio server /data 
MinIO Object Storage Server
Copyright: 2015-2023 MinIO, Inc.
License: GNU AGPLv3 <https://www.gnu.org/licenses/agpl-3.0.html>
Version: RELEASE.2023-10-16T04-13-43Z (go1.21.3 linux/amd64)

Status: 1 Online, 0 Offline. 
S3-API: http://146.255.69.234:9000 http://127.0.0.1:9000 
RootUser: AprendeIT 
RootPass: 102371209673jhdef

Console: http://146.255.69.234:46267 http://127.0.0.1:46267 
RootUser: AprendeIT 
RootPass: 102371209673jhdef

Command-line: https://min.io/docs/minio/linux/reference/minio-mc.html#quickstart
$ mc alias set 'myminio' 'http://146.255.69.234:9000' 'AprendeIT' '102371209673jhdef'

Documentation: https://min.io/docs/minio/linux/index.html
Warning: The standard parity is set to 0. This can lead to data loss.

Esta forma de levantarlo es más segura pero el software queda ejecutandose en primer plano, puedes dejarlo en backgrounbd de las siguientes formas:

  • Utiliza un softw1are como screen y ejecutalo
  • Puedes utilizar nohup
  • Otra opción es configurar un servicio con systemd

Accede y explora:

Ahora puedes ir a tu navegador y escribe la dirección IP del servidor donde has instalado minIO y el puerto 9000, por ejemplo si lo has instalado en local, puedes escribir http://localhost:9000. Con las credenciales que hayas configurado, podrás empezar a explorar el mundo de MinIO.

Alta Disponibilidad con MinIO

Tener un servidor está bien, pero si queremos que sea confiable, debemos pensar en términos de alta disponibilidad.

MinIO distribuido, el arte de expandirse

Si tienes varios servidores, ¡MinIO te cubre! Puedes hacer que trabajen juntos en un clúster distribuido. Imagina cuatro servidores trabajando en conjunto, creando un robusto sistema de almacenamiento distribuido.

Erasure Coding, o cómo MinIO protege tus datos

Gracias a esta técnica, MinIO divide tus datos en fragmentos distribuidos entre todos los servidores. Si uno falla, no hay problema; los datos se pueden reconstruir a partir de los fragmentos en los otros servidores.

¿Balanceador de carga? Sí, por favor

Con varios servidores aceptando peticiones, es recomendable usar un balanceador de carga, como NGINX o HAProxy. Así te aseguras de que el tráfico se distribuya adecuadamente y de manejar los posibles problemas de alguno de los nodos.

Alternativas a MinIO

Por supuesto, el mundo del almacenamiento de objetos es amplio y MinIO no está solo. Veamos algunas alternativas:

Ceph con su Gateway S3

Ventajas:

  • Muy escalable.
  • Puede gestionar no solo almacenamiento de objetos, sino también de bloques y sistemas de archivos.

Desventajas:

  • Más complejo de configurar que MinIO.
  • Requiere más recursos hardware para empezar.

OpenStack Swift

Ventajas:

  • Integrado en el ecosistema de OpenStack.
  • Diseñado específicamente para escalabilidad y redundancia.

Desventajas:

  • Su curva de aprendizaje puede ser más alta si no estás familiarizado con OpenStack.
  • Configuración inicial más compleja que MinIO.

Deja una respuesta