Instituto Politécnico Nacional
Escuela Superior de Ingeniería Mecánica y Eléctrica
                               Unidad Culhuacán
                               Ingeniería en computación
        Sistemas
       Distribuidos
                               Práctica final
Alumnos del grupo 8CM12
Alumna Ximena Toledo Rivera
Moisés Isaí Arroyo Rodríguez
Sábado, 3 de junio de 2023
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
índice
Objetivo ............................................................................................................................. 2
Resumen ........................................................................................................................... 2
Conclusiones ................................................................................................................... 16
Referencias ..................................................................................................................... 16
                                                                                                                                      1
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
Objetivo
   1. Crear un clúster que permita realizar un balance de cargas utilizando Nginx.
Resumen
Práctica 1
Los pasos para realizar replicación son los siguientes:
   1. Instalar Mysql Server.
   2. Configurar los archivos mysqld.conf con el número de servidor.
   3. Crear un usuario, contraseña y host en cada maquina dentro de Mysql
      Server.
   4. Editar el estado de esclavo con la posición, archivo, host, usuario y
      contraseña en cada maquina
   5. Activar el estado de esclavo y maestro en cada máquina, verificando la
      conexión correctamente.
Existe la opción de realizarlo en XAMPP directamente desde la consola de
phpMyadmin siguiendo los mismos pasos anteriores.
Se aprecia en esta máquina virtual la instalación de MySQL e inicio de sesión de
este. Para esto es necesario tener actualizadas ambas maquinas que contengan el
sistema operativo de Ubuntu.
                                                                                 2
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
En este apartado se muestra el estado del maestro donde ocupamos el archivo y
posición para cambiarlos en el estado de esclavo de la siguiente máquina virtual.
                                                                                    3
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
La siguiente captura muestra el estado del esclavo de la maquina con, usuario,
posición, archivo y host al cual se conecta.
La presente captura muestra el resto del estado del esclavo, donde en “Slave_IO” y
“Slave_SQL” contienen la palabra “YES”, esto implica que es un estado de
multimaestro en ambas maquinas.
                                                                                4
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
En este apartado solo se ingresa la base de datos a configurar o con la cual se
trabajará, replicada en ambas maquinas.
                                                                             5
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
Como parte de la configuración es necesario editar el archivo mysqld.cnf y saber la
dirección ip de la máquina.
Práctica 2
En este apartado de la practica dos, es creación del CRUD, una vez obtenida la
replicación es necesario crear una interfaz para la BD por medio de php. La presente
captura muestra el registro de usuario, con el código correspondiente.
                                                                                  6
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
La siguiente captura muestra el inicio de sesión una vez obtenido un usuario.
                                                                                7
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
La siguiente captura muestra la creación correcta del usuario para poder ingresar al
sistema.
Una vez ingresado las credenciales del usuario creado es posible acceder al
sistema y tener la opción de ver la Base de datos o cerrar la sesión.
                                                                                  8
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
A continuación, se muestra la parte de Agregar, modificar y eliminar producto,
además de la vista de un “Select” que muestra todos los productos existentes.
                                                                                9
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
Una vez terminada esa parte es posible regresar y cerrar la sesión para evitar
problemas a futuro.
Práctica 3
La tercera practica consiste en balancear la carga entre los servidores. El equilibrio
de carga es una técnica o un mecanismo que distribuye las solicitudes entrantes al
grupo de servidores del backend. Se utiliza para aumentar la disponibilidad,
confiabilidad y escalabilidad de las aplicaciones. Puede utilizar la función de proxy
inverso de NGINX para equilibrar la carga del tráfico. Este procedimiento describe
cómo configurar NGINX como un equilibrador de carga HTTP que envía las
peticiones a diferentes servidores, basándose en cuál de ellos tiene el menor
número de conexiones activas. Si ambos servidores no están disponibles, el
procedimiento también define un tercer host por razones de fallback. Permite
agregar muchos servidores cuando aumenta el tráfico. Se muestra primeramente la
dirección ip de la máquina que balanceara la carga. Sin embargo, no tiene la base
de datos y tampoco contiene el paquete de programas XAMPP.
                                                                                   10
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
La siguiente imagen muestra la instalación de nginx, un servidor que nos permitirá
balancear las cargas y usar la misma dirección ip para redirigirnos a los servicios de
nuestra Base de datos.
                                                                                   11
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
Una vez instalado es necesario iniciarlo y habilitarlo. En la siguiente captura se
muestra que está activo y funcionando correctamente, el siguiente paso es
configurar el servidor al cual se conectará y la pagina que extraerá para iniciar.
También se denota la verificación de sintaxis con el comando nginx -t
                                                                                     12
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
El primer archivo es la conexión disponible, donde escuchará por el puerto 80 con
una localización hacia la conexión aplicación. En este caso, no usamos nombre de
servidor para cargar la aplicación.
                                                                              13
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
La siguiente captura muestra la configuración con las direcciones IP de las
maquinas con las cuales hará el balanceo de cargas. A este se le nombro “app”.
ip_hash es para enviar solicitudes de una dirección de cliente al mismo servidor
basándose en un hash calculado a partir de los tres primeros octetos de la dirección
IPv4 o de la dirección IPv6 completa del cliente.
Además, se le asigno un peso de 4, donde cada 4 ingresos, cambia de servidor.
La siguiente captura es desde la maquina Windows donde se aprecia que con la
dirección mostrada en la primera captura de la practica 3 se puede acceder a
nuestro servicio alojado en las direcciones de la captura anterior.
                                                                                 14
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
En la siguiente captura se señala la dirección del balanceador, la dirección de la
maquina Windows y la dirección de la maquinas virtual donde se aloja el servicio, a
la cual denota la diferencia entre las distintas.
                                                                                15
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
Conclusiones
La implementación del sistema tomó lugar en tres fases diferentes, la primera
consistió en la configuración de un modelo de maestro-esclavo utilizando MySQL,
lo que permitió la distribución eficiente de los datos entre diferentes nodos. Esta
configuración proporcionó una base sólida para la siguiente fase del proyecto. En la
segunda fase, se creó una aplicación CRUD utilizando XAMPP, que incluía
funcionalidades de inicio de sesión y registro de usuarios. La combinación de PHP
y MySQL fue una elección acertada, ya que permitió la gestión eficiente de la base
de datos y la creación de una interfaz amigable para los usuarios. Esta etapa fue
crucial para el desarrollo de un sistema robusto y completo. Finalmente, en la última
fase del proyecto, se implementó un balanceo de cargas de los servidores utilizando
Nginx. Esto garantizó una distribución equitativa de las solicitudes de los usuarios
entre los servidores disponibles, mejorando así el rendimiento y la capacidad de
respuesta del sistema. El uso de Nginx como servidor de balanceo de carga fue una
elección acertada debido a su eficiencia y escalabilidad.
La combinación de MySQL, XAMPP, PHP y Nginx proporcionaron una base
confiable y eficiente para la gestión de datos, la implementación de funcionalidades
y el rendimiento del sistema. Este proyecto ofrece una solución integral para la
distribución de cargas y la gestión de datos, sentando las bases para futuras
mejoras y expansiones.
Referencias
   1. 2.5. Configuración de NGINX como equilibrador de carga HTTP Red Hat
      Enterprise Linux 8 | Red Hat Customer Portal. (n.d.). Red Hat Customer
      Portal.                          https://access.redhat.com/documentation/es-
      es/red_hat_enterprise_linux/8/html/deploying_different_types_of_servers/co
      nfiguring-nginx-as-an-http-load-balancer_setting-up-and-configuring-nginx
   2. Cevallos, F. (2022). Balanceador de Carga con NGINX. Fausto Cevallos.
      https://faustocevallos.com/balanceador-de-carga-con-nginx/
                                                                                  16
SISTEMAS DISTRIBUIDOS | PRÁCTICA FINAL |
  3. Cómo configurar un servidor de balanceo de carga Nginx en Ubuntu 20.04.
     (n.d.).   Clouding.io.   https://help.clouding.io/hc/es/articles/360019908839-
     C%C3%B3mo-configurar-un-servidor-de-balanceo-de-carga-Nginx-en-
     Ubuntu-20-04
                                                                                17