Planificacion Anual 2do Grado Educacion Primaria 2024 Ccesa007.pdf
BORJA_ESCOLAR_COLADO_TFC_2022.pptx
1. • NGINX COMO BALANCEADOR DE CARGA Y
SERVIDOR WEB, DynDNS, UNA PÁGINA WEB CON SSL
Y PHP A TRAVÉS DE UN CLÚSTER MYSQL DE ALTA
DISPONIBILIDAD CREADO CON MYSQL-SHELL.
PRESENTACIÓN
2. EXPLICACIÓN
¿Qué es Nginx?
Nginx es un servicio web y proxy inverso open source.
Nginx como servicio web se usará en los todos los nodos. Nginx en su forma de servidor web funciona de
forma análoga a otras tecnologías web como apache.
Pero en este proyecto también vamos a usar Nginx como balanceador de carga
como veremos en la siguiente diapositiva
Nginx
3. EXPLICACIÓN
¿Qué es un Balanceador de carga?
Clúster
Balanceador
de carga
Servidor web w101
Servidor web w201
Un balanceador de carga es un
dispositivo ya sea hardware o
software, como es este caso, que
cuando recibe una petición, la
balancea o redirige a otros
equipos que se encargan de
procesar esas peticiones.
Petición web
Nginx
4. EXPLICACIÓN DynDNS
¿Qué es DynDNS?
Es un servicio que permite la asignación
de un nombre de dominio de Internet a
un sistema que no dispone de una
dirección ip estática.
En este proyecto se utilizará DynDNS
para asignar el nombre de dominio
pry2022jun.ddns.net de la página
https://www.noip.com/es-MX.
www
pry2022jun.ddns.net
Noip
25.27.128.126
25.27.128.125
Se actualiza cada 30 minutos
5. EXPLICACIÓN Let’s Encrypt
¿Qué es Let’s Encrypt
Let’s Encrypt es un tipo de certificado SSL
para asignar seguridad a las transacciones
que realizamos con una página web.
La ventaja de Let’s Encrypt es que es un
certificado que podemos adquirir de forma
gratuita.
En este proyecto lo usaremos para activar el
protocolo 443 y cifrar la información de
nuestra web.
6. PARTE TEÓRICA
• ¿Qué es un clúster?
Un clúster es un grupo de servidores que
trabajan como uno sólo. Los Clúster de
servidores pueden ser de hardware, en el
que cada nodo realizar los cálculos que se le
asignan, o de base de datos, en la que los
nodos comparten la información de una o
unas BBDD entre todos los nodos.
MySQL
clúster
Clúster
7. PARTE TEÓRICA
MySQL
clúster
Al completo
master01 worker101
worker201
LB
El usuario abre el navegador de su equipo y
realiza una petición al nodo ‘master01’ de
forma transparente al clúster. Las peticiones
se balancean a los nodos ‘worker101’ o a
‘worker201’. Independientemente del nodo
en el que se realice el cambio en la BBDD,
todos los nodos del clúster guardarán la
misma información. Es decir la BBDD estará
replicada.
El clúster será tolerante a fallos al estar en
modo multiprimario.
Funcionamiento del proyecto
Petición al puerto 443
8. PARTE TEÓRICA
INSTALACIÓN Y CONFIGURACIÓN DE MYSQL EN LOS EQUIPOS.
MySQL - Server
• Instalación de MySQL – SERVER.
• Asignación de contraseña a root.
• Creación del usuario admincluster con
permisos totales.
9. PARTE TEÓRICA Mysql_secure_
installation
• Comando para establecer una serie de
parámetros de seguridad básicos.
• Podemos configurar también una contraseña
para el usuario root.
• Imprescindible para llevar a cabo la
implementación del clúster con MySQL-Shell
10. PARTE TEÓRICA Acceso a todas las
direcciones ip a MySQL.
Paso básico en la configuración de MySQL para que sea accesible posteriormente desde la página web a
cualquier usuario.
• Cambiamos en el fichero
/etc/mysql/mysql.conf.d/mysqld.cnf la directiva
bind-address = 127.0.0.1 por 0.0.0.0
• Reiniciamos el servicio y lo activamos al inicio.
11. PARTE TEÓRICA
Herramienta para la clusterización de MySQL por medio de una API.
Instalación de MySQL -
Shell
• Tomar la dirección de la página web. • Descargarlo desde la terminal de Linux.
• Instalarlo con dpkg.
12. PARTE TEÓRICA
Configuración del clúster
con MySQL-Shell
1. Inicio de la herramienta:
2. Conexión:
3. Configurar instancia:
Se realiza con las 3 instancias
4. Creación del nombre del clúster:
5. Añadir instancias al clúster:
Se realiza con las 3 instancias
13. PARTE TEÓRICA Estado del clúster
Comandos para ver el estado del clúster
• Cambio del estado de los nodos a multiprimario
• Comandos para comprobar el estado del clúster:
14. PARTE TEÓRICA Estado del clúster
Nodo master01 Nodo worker101 Nodo worker201
Multiprimario Tolerancia a fallos
15. PARTE TEÓRICA BBDD de prueba
Fase necesaria para la parte teórica.
• Creación de la BBDD
Se puede realizar desde cualquier nodo.
• Comprobación desde los nodos
• Comprobación desde los nodos
16. PARTE TEÓRICA BBDD de prueba
Fase necesaria para la parte teórica.
• Creación de la tabla
Se puede realizar desde cualquier nodo.
• Ver la tabla desde otros nodos
• Insertar registros
• Ver los registros desde otro nodos
17. PARTE TEÓRICA Nginx servidor web
• Carpeta por defecto:
Instalación y configuración de LEMP (Linux, Enginex, MySQL y PHP)
• Configuración del fichero pry2022jun.ddns.net. Lo
copiamos del fichero ‘default’ .
Editamos el nuevo fichero creado cambiando estas directivas.
• Instalación de Nginx en los nodos worker.
• Server name
Se realiza en los dos nodos worker
• Cambiamos los permisos al directorio de la web
18. PARTE TEÓRICA PHP en Nginx
Instalación y configuración de LEMP (Linux, Enginex, MySQL y PHP)
• Instalación de PHP-FPM en los nodos worker.
Se realiza en los dos nodos worker
• Fichero /etc/nginx/sites-avaible/pry2022jun.ddns.net.
• Descomentamos estas directivas.
19. PARTE TEÓRICA PHP en Nginx
Instalación y configuración de LEMP (Linux, Enginex, MySQL y PHP)
Se realiza en los dos nodos worker
Otras configuraciones:
Otra configuración necesarias para que funcione php en los nodos worker es:
• En el mismo fichero en que trabajábamos antes
descomentamos estas líneas.
• Salimos y reiniciamos el servicio
20. PARTE TEÓRICA
PHP en Nginx y
tabla NAT
Activación de los nodos en el servidor web.
• Nos dirigimos al directorio /etc/nginx/sites-enabled
y creamos el enlace simbólico.
• Vamos a directorio /var/www/ y creamos un
directorio con este nombre;
Se realiza en los dos nodos worker
• Mapeamos el puerto 80 en el router para que
nuestra web funcione:
21. PARTE TEÓRICA
Nginx como
balanceador de carga
• Nos dirigimos al fichero /etc/nginx/nginx.conf y realizamos estos cambios dentro de la zona ‘http’:
• Acto seguido en el fichero /etc/nginx/sites-avaiable añadimos estas directivas dentro de la zona
server:
22. PARTE TEÓRICA DynDNS
• Vamos a la página y creamos un registro con estos datos:
• Realizamos una consulta al DNS:
• Configuramos DNS en nuestro router:
censurado
censurado
23. PARTE TEÓRICA SSH
• Instalamos SSH en los 3 nodos del clúster:
• Mapeamos los puertos en nuestro router:
24. PARTE TEÓRICA BBDD Definitiva
• Borrado de la tabla anterior
• Creamos la tabla
• Insertamos los registros de la nueva tabla
25. PARTE TEÓRICA BBDD Definitiva
• Vamos a los nodos y comprobamos que se
ven correctamente los cambios:
26. PARTE TEÓRICA SSL de Let’s Encrypt
El certificado SSL de Let’s Encrypt se instala de forma automática con Certbot. Estos son los pasos:
• Instalamos Cerbot. • Instalamos el certificado de Let’s Encrypt.
27. PARTE TEÓRICA
Cambios en Nginx
para SSL
El certificado SSL de Let’s Encrypt se instala de forma automática con Certbot. Estos son los pasos:
Estos pasos se realizarán en el nodo ‘master01’
• Editamos estas directivas en el archivo
/etc/nginx/sites-avaiable/default.
• Creamos el directorio para albergar la
web en el nodo ‘master01’.
• Cambiamos los permisos del
directorio para que todo el mundo
pueda conectar
28. PARTE PRÁCTICA
Funcionamiento de la
web y el clúster
• Todas las páginas que conforman la aplicación web tienen como nombre en la pestaña su función
en la aplicación web y el nombre de host para comprobar el balanceo.
29. PARTE PRÁCTICA
Funcionamiento de la
web y el clúster
• La web pry2022jun.ddns.net consta de páginas para añadir, modificar y eliminar registros.
• Vamos a los servidores y comprobamos que lo que muestra la web está guardado en ellos.
• Realizados alguno de estos cambios en la web, volvemos a los servidores y comprobamos si las
modificaciones de las páginas se han replicado en los nodos.
30. CONCLUSIONES FINALES
Ha sido un buen proyecto; y en realidad a pesar de los problemas encontrados que no han sido pocos y los ‘dolores
de cabeza’ que han producido estos errores, en realidad ha sido una buena experiencia de la que nos podemos llevar
nuevos conocimientos que se podrán aportar a futuros trabajos.
Algo por lo que no me ha gustado tener que realizar este proyecto es porque sólo se entiende la informática y mucho
más en sistemas, como un trabajo en equipo y el tener que verse solo buscando documentación, realizando las
pruebas, encontrándose y superando errores.
No obstante, y en líneas generales me quedo con un resultado positivo de esta experiencia.