Equipo:
Isis Rosales Elizondo 17430036
Luis Fernando Delgadillo Medellín 17430117
Roberto Carlos Díaz Sánchez
Daniel Hernández Sánchez 17430048
Quinto Semestre de Ingeniería en Sistemas Computacionales
Tema 4. Computación Paralela
Asignatura: Arquitectura de Computadoras
Docente: Aquiles González Ramos
2 de diciembre 2019
Clúster
El término clúster se aplica a los conjuntos o conglomerados de
computadoras construidos mediante la utilización de
componentes de hardware comunes y que se comportan como si
fuesen una única computadora.
Simplemente, un clúster es un grupo de múltiples ordenadores
unidos mediante una red de alta velocidad, de tal forma que el
conjunto es visto como un único ordenador, más potente que los
comunes de escritorio.
Los clusters son usualmente empleados para mejorar el
rendimiento y/o la disponibilidad por encima de la que es
provista por un solo computador típicamente siendo más
económico que computadores individuales de rapidez y
disponibilidad comparables.
MySQL Cluster
• MySQL Cluster es una versión de alta disponibilidad de MySQL
adaptada para el entorno de computación distribuida. Usa el
motor de almacenamiento NDB Cluster para permitir la
ejecución de varios servidores MySQL en un cluster.
• Lo sistemas operativos en que MySQL Cluster está disponible
son Linux, Mac OS X, y Solaris.
Panorámica de MySQL Cluster
• MySQL Cluster es una tecnología que permite clustering de bases de datos en memoria en
un entorno de no compartición. La arquitectura de no compartición permite que el sistema
funcione con hardware barato, y sin ningún requerimiento especial de hardware o
software. Tampoco tienen ningún punto único de fallo porque cada componente tiene su
propia memoria y disco.
• MySQL Cluster integra el servidor MySQL estándar con un motor de almacenamiento
clusterizado en memoria llamado NDB. En nuestra documentación, el término NDB se
refiere a la parte de la inicialización específica al motor de almacenamiento, mientras que
MySQL Cluster se refiere a la combinación de MySQL y el nuevo motor de
almacenamiento.
• Un MySQL Cluster consiste en un conjunto de máquinas, cada una ejecutando un número
de procesos incluyendo servidores MySQL , nodos de datos para NDB Cluster, servidores
de administración, y (posiblemente) programas especializados de acceso a datos.
Conceptos
• Motor de almacenamiento NDB: MySQL incorpora este nuevo motor de
almacenamiento específico para tablas que se encuentran en cluster.
• Nodo de administración (MGM): Es el nodo que se va a encargar de
manejar, controlar y coordinar al resto de nodos del cluster. Debido a esto
tiene que ser el primero en iniciarse.
• Nodo de datos (NDB): Este tipo de nodo almacena los datos del cluster de
forma distribuida. De tal forma que si uno de ellos cae, el resto de nodos
pueden seguir sirviendo la información.
• Nodo SQL (MYSQLD): Este tipo de nodo nos permite acceder a los datos
del cluster.
ESPECIFICACIONES
ARQUITECTURA
• 1 nodo de administración (MGM)
• 2 nodos de datos (NDB) que a su
vez van a ser nodos SQL
(MYSQLD)
• 1 nodo SQL (MYSQLD)
• Gráficamente está sería la
arquitectura:
Configuramos el MGM
• Lo primero que tenemos que hacer es configurar el nodo de
administración. Para ello arrancamos una de las máquinas
virtuales e instalamos MySQL con el soporte de NDBCluster. En
Ubuntu es tan sencillo como ejecutar:
Esto hace que se instale MySQL Cluster y MySQL Server
y Client como dependencias en la versión 5.1.
• Se crea el fichero
/etc/mysql/ndb_
[Link] donde
se describe cual
va a ser la
arquitectura de
clustering y que
rol van a adoptar
los distintos
nodos.
• Para este caso se determina que el cluster se va a componer de dos replicas de
datos que están descritas en las secciones [NDBD], donde indicamos cual es la IP
de la máquina y donde se van a almacenar los datos del cluster en esa máquina.
Luego en las secciones [MYSQLD] determinamos la dirección IP de las máquinas
que van a poder acceder a los datos del cluster. En este caso las máquinas NDB
también adoptaran el rol de nodo SQL y solo una de ellas tendrá exclusivamente
este rol. Como se veía en la figura de la arquitectura propuesta.
• Nota muy importante: El contenido de este fichero queda cacheado por lo que nos
puede pasar que lo modifiquemos, reiniciemos el servicio y los cambios no se vean
reflejados. Para evitar esto antes de reiniciar el servicio debemos eliminar el
fichero cacheado con esta sentencia:
Configuración de los nodos de datos NDB
y SQL
Lo primero sería instalar mysql-cluster-server como se describió en el anterior
apartado.
Hecho esto, pasamos a editar el fichero de configuración /etc/mysql/[Link]
añadiendo en la sección existente [mysqld], las siguientes líneas:
Y creamos una sección [mysql_cluster] con esta información:
Esta configuración nos sirve por un lado para habilitar el soporte del motor de
almacenamiento NDBCluster y por otro para saber como conectar con el MGM.
Ahora reiniciamos primero el nodo MGM con la sentencia:
Y posteriormente el resto de nodos que intervienen en el cluster con las sentencias:
En cada caso tenemos que ver que la salida no muestra ningún tipo de error.
Con esto ya estaría configurado y arrancado nuestro cluster, ahora vamos a
comprobar el estado a través del nodo MGM, ejecutando:
Con lo que el sistema mostrará una pantalla informando de que nodos del cluster
están conectados. Separándolos en los distintos roles: MGM, NDB y MYSQLD
Prueba del cluster
• Una vez que tenemos el cluster perfectamente configurado y arrancados todos los
nodos, vamos a crear una base de datos. Para ello seleccionamos cualquiera de los
nodos que tengan un rol de MYSQLD. Nos logamos como root:
• Y proporcionamos la contraseña que hayamos definido para el
root. Ahora en la consola de MySQL creamos nuestro esquema
«cluster_test» con la sentencia:
• Y ahora creamos nuestra primera tabla sin olvidar utilizar el
motor de almacenamiento NDBCluster. Vamos a crear una
sencillita para este ejemplo:
• E insertamos una serie de registros:
• Ahora nos logamos en la consola MySQL de cualquier otro nodo
con rol MYSQLD en el cluster y realizamos:
• Vemos que sin hacer nada el schema table_test ya existe y ahora
si ejecutamos la sentencia:
• Veremos que el sistema nos devuelve los datos
anteriormente introducidos. Esto es porque los datos del
cluster se almacenan en los nodos con rol NDB, y los
nodos con rol MYSQLD nos permiten acceder y trabajar
sobre ellos.