Git Product home page Git Product logo

sd-exam2's Introduction

Segundo parcial Sistemas Distribuidos

Integrantes

John Sebastian Urbano Lenis -----> A00292788

Jeferson Lerma Giron -----> A00301456

Jessica Alejandra Sánchez -----> A00030124

Examen 2

Universidad ICESI

Curso: Sistemas Distribuidos

Docente: Joan Sebastián Garcìa Delgado Tema: Automatización de infraestructura (Docker) Correo: joan.garcia1 at correo.icesi.edu.co

Objetivos

Realizar de forma autónoma el aprovisionamiento automático de infraestructura Diagnosticar y ejecutar de forma autónoma las acciones necesarias para lograr infraestructuras estables Integrar servicios ejecutándose en nodos distintos

Resumen general

El parcial consistía en utilizar las herramientas vistas en clase, algunas de ellas eran: Aprovisionamiento con Ansible Vagrant Docker Docker-compose Docker swamr La idea es desplegar aplicaciones compuestas de un backend y frontend para tener la oportunidad de escalarlas.

Procedimiento

En primer lugar, tenemos el vagrantfile, que despliega las 4 máquinas virtuales de la siguiente manera:

  • CentOS7 Master
  • CentOS7 Worker1
  • CentOS7 Worker2
  • CentOS7 Worker3 Adicionalmente, este vagrantfile hace uso de ansible para el aprovisionamiento de las máquinas virtuales; en este caso en particular instala algunas herramientas como docker y docker compose para efectos académicos:

Evidencia https://raw.githubusercontent.com/SebastianUrbano/sd-exam2/images/images/VagrantFile.png

Cómo se aprecia anteriormente, se configuró en el vagrantfile el contenedor Master, se aprovisionó el mismo, se definieron los workers y también se asoció el aprovisionamiento con Ansible.

Evidencia https://raw.githubusercontent.com/SebastianUrbano/sd-exam2/images/images/confAnsible.png

Una vez hecho esto se procedió a hacer uso de docker swarm. Esta parte se hizo manualmente de la siguiente manera: Se inicia sesión mediante ssh en el nodo maestro. Se corren los siguientes comandos:

ip=$(hostname -I | awk '{print $2}')
docker swarm init --advertise-addr $ip

Esto con el fin de generar un token para conectar los workers con el master:

Evidencia https://raw.githubusercontent.com/SebastianUrbano/sd-exam2/images/images/Token.png

Token que posteriormente se ingresa a los workers para que queden conectados al swarm. Se crean los volúmenes dentro de las máquinas, necesarios para la persistencia de la base de datos: Esto se logra mediante el comando:

sudo docker volume create --name <name of volume> --opt type=tmpfs  --opt device=tmpfs  --opt 0=size=<size in mb>m

Esto se hace en cada una de las máquinas. Y con el comando:

docker inspect <name of volume>

Podemos saber la ubicación de ese volumen.

Ahora, se crea un docker-compose, con el fin de desplegar los contenedores necesarios para el despliegue de la aplicación:

Una vez, se tiene el docker-compose.yml listo. Se puede empezar a correr a modo de servicio mediante la herramienta docker stack.

Con esta herramienta podemos escalar el servicio mediante el parámetro réplicas.

Para correr el archivo docker-compose.yml a modo de servicio usamos el comando:

docker stack deploy --compose -file docker-compose.yml <name>

Y se pueden visualizar los servicios con:

docker stack services stackdemo

Dificultades

  • No se logró conectar la base de datos con el servidor web. Aunque ambas se conocen entre sí, no hay un código que logre la conexión entre estos.
  • Dificultad para la conexión automatica entre master y workers. Intentamos por medio de Ansible automatizar el proceso utiizando variables de ambientes para pasar el token a los workers y lograr una conexión.

Branching

Estrategia: Branch per feature La idea inicial fue utilizar las ramas que consideramos necesarias para la realización del parcial. Se requirió tres ramas IaC, compose y lerma, la rama que se definió como integradora es lerma.

  • En la rama IaC, se planteó el Vagrantfile y el aprovisionamiento.
  • En la rama compose, la parte de docker-compose con las replicas en los dos contenedores de back y db.
  • En la rama lerma, se integró y añadió lo faltante como por ejemplo el docker swarm.

Por último se realizó un pull request para pasar a la rama main todo lo realizado y ubicado hasta el momento en lerma.

Web-biografía

sd-exam2's People

Contributors

alejajessi avatar sebastianurbano avatar icesi-ops avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.