Tabla de contenido
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.