Escolar Documentos
Profissional Documentos
Cultura Documentos
04
Para dar comienzo al trabajo, hay que mencionar que el clúster está elaborado
en máquinas virtuales, pero, la forma de instalación, así como de configuración,
en las PC’s (físicamente) es de igual forma a como se muestra en este manual.
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 clústeres 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.
Características de un Clúster
Las aplicaciones paralelas escalables requieren: buen rendimiento, baja latencia, comunicaciones
que dispongan de gran ancho de banda, redes escalables y acceso rápido a archivos. Un cluster
puede satisfacer estos requerimientos usando los recursos que tiene asociados a él.
Alto rendimiento
Alta disponibilidad
Alta eficiencia
Escalabilidad
Como todo sistema de clustering, está diseñado para no tener un sólo punto de falla, cada
componente tiene su propia porción de disco y memoria para trabajar. Bajo este esquema no se
recomienda el uso de mecanismos de almacenamiento compartido como carpetas compartidas por
red, sistemas de archivos de red, etc.
Arquitectura básica de un clúster MySQL
Las tablas de la base de datos se almacenan utilizando el motor NDB en los nodos de
almacenamiento. La manera de acceder a los datos almacenados en el clúster es a través de
cualquiera de los nodos MySQL. Los nodos de datos funcionan utilizando un esquema de espejado,
permitiendo soportar sin impacto la caída de nodos individuales de datos dentro de clúster. La
única consecuencia que tendría un suceso como la caída de un nodo de datos, es que un pequeño
conjunto de transacciones relacionadas al nodo caído serán abortadas. Estas transacciones deben
cumplir con el esquema transaccional, tal y como si estuvieran trabajando directamente con un
servidor no clusterizado de MySQL.
Conceptos principales
Motor de almacenamiento NDB
Este tipo de nodo cumple con la función de manejar, controlar y coordinar los otros nodos dentro
del clúster. Implementa funciones de configuración de datos, Iniciar o detener otros nodos dentro
del clúster, ejecutar respaldos, u otras tareas administrativas. Debido a que controla y configura el
resto de los nodos, debe iniciarse antes que cualquier otro tipo de nodos utilizando el comando
ndb_mgmd.
Nodo de datos
Este tipo de nodo almacena los datos. La cantidad de nodos de este tipo dentro del clúster es igual a
la cantidad de replicas por la cantidad de fragmentos. Es decir, si se manejan 4 replicas de los datos
con 2 fragmentos, se necesitarían 8 nodos de datos. No es necesario manejar más de una réplica.
Este tipo de nodo se levanta utilizando el comando ndbd.
A través de este tipo de nodos se accede a los datos clusterizados. Básicamente, consiste en un
servidor MySQL Server que utiliza el motor de almacenamiento NDB. Se inicia utilizando el
comando ndbcluster, especificando el archivo de configuración necesario para este servidor .
Clientes MySQL
Para conectarse a un clúster MySQL remotamente, se debe utilizar el mismo cliente utilizado para
conectarse a un servidor MySQL no clusterizado. El clúster es transparente para los clientes.
Clientes administrativos
Existen otro tipo de clientes que se comunican con el servidor de administración y proveen las
mismas funcionalidades que un nodo de este tipo. A diferencia de los nodos administrativos, los
clientes permiten ejecutar las tareas de administración remotamente. Algunas tareas que pueden
realizarse con estos clientes incluyen iniciar o detener nodos, administrar el seguimiento de
mensajes de depuración, mostrar el estado de otros nodos y sus respectivas versiones, realizar
respaldos, etc.
Iniciando La Elaboración
En este ejemplo, se han instalado 3 máquinas virtuales las cuales corresponden:
Una vez que se tiene instalado los respectivos nodos se pasa a instalar los paquetes a cada uno de
ellos.
En este paso, nos pedirá la contraseña de nuestro usuario, así que la escribimos y continuamos, después nos
preguntará si deseamos continuar, decimos que si [S/N], y empezara la descarga e instalación de los
paquetes.
2.- Durante este proceso, nos aparecerá una nueva ventana en la cual nos pide que asignemos una
contraseña para lo que viene siendo el root del MySQL, así que escribimos la contraseña deseada y
tecleamos un “ENTER” en este ejemplo, la contraseña será “administrador”
3.- Nos pedirá que repitamos la contraseña, esto con la finalidad de comprobar que la contraseña escrita
primeramente, sea la correcta. Así que la escribimos y tecleamos un “ENTER”.
Una vez que se realiza esta operación, se empezará a marcar automáticamente los demás complementos de
MySQL, esto para que todo funcione correctamente. Así que solo esperamos a que termine el proceso.
NOTA: Esta instalación se realizara de igual forma en los nodos clientes.
Primero que nada se asigna una IP fija para el nodo de administrador, esto para poder identificar con
facilidad y tener comunicación de los nodos clientes con lo que es el nodo administrador. Para asignar esta IP
hacemos lo siguiente:
1.- Nos dirigimos al la barra de tareas de Ubuntu, y localizamos el icono de una PC, ahí daremos clic derecho
y seleccionamos la opción de “Editar las conexiones”.
2.- Seleccionamos la red eth0 y seleccionamos la opción de “Editar”. En este paso nos pedirá la
autentificación para poder modificar, así que solo basta con poner la contraseña de nuestro usuario para
poder continuar.
3.- Después de habernos autentificado, se nos mostrará una ventana como la siguiente, en la cual tendremos
que posicionarnos en la pestaña de “Ajustes de IPv4” y damos clic en la parte que dice Método para
seleccionar la forma en que se ajustara la IP, que en este caso será de manera “Manual”.
4.- Una vez que se accede a esta configuración, pasamos a dar clic en la pestaña que dice añadir, y
agregamos lo siguiente:
Dirección: 192.168.1.1
DNS: 192.168.1.254
Este último, DNS sirve para tener conexión con lo que es el internet.
Nota: para hacer el Clúster, basta con solo dejar la dirección IP y la máscara de red, la puerta de enlace y el
DNS son extras, no forzosamente tienen que ponerlo, al menos que deseen tener acceso a internet.
5.- Cliqueamos donde dice aplicar, para aplicar lo que hemos realizado, una vez hecho esto, podemos
verificar si los cambios se han realizado con rotundo éxito, para ello, basta con abrir una consola o Terminal,
y escribimos “ifconfig” (sin comillas), este comando muestra las IP que se están usando, tanto alambrica
como inalámbrica.
NOTA: Esto mismo se hace para los nodos clientes, por obviedad la dirección IP cambiará una se le asignará
la IP 192.168.1.2 y la otra 192.168.1.3, lo demás se pone de igual forma que en el nodo administrador.
Configuración de archivos para los nodos.
1.- Una vez que se ha terminado el proceso de asignación de IP, se pasará a crear el archivo para la conexión
entre el nodo administrador con los nodos clientes, para esto, escribimos en consola del nodo administrador
lo siguiente:
[NDBD DEFAULT]
NoOfReplicas=2
DataMemory=80M
IndexMemory=18M
#Configuracion correspondiente al cluster
[MYSQLD DEFAULT]
[NDB_MGMD DEFAULT]
[TCP DEFAULT]
[NDB_MGMD]
#Direccion IP del nodo administrador
HostName=192.168.1.1
[NDBD]
#direccion IP del nodo cliente1
HostName=192.168.1.2
DataDir=/var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup
DataMemory=128M
[NDBD]
#direccion IP del nodo cliente2
HostName=192.168.1.3
DataDir=/var/lib/mysql-cluster
BackupDataDir=/var/lib/mysql-cluster/backup
DataMemory=128M
#Las siguientes instrucciones, por cada nodo cliente se pone esa instrucción, en este caso solo
contamos con 2
[MYSQLD]
[MYSQLD]
2.- Una vez copiado lo anterior, pasamos a guardar el documento. Para ello con solo tecleamos.
“Ctrl + O” aparecerá el nombre con el que se quiere guardar y la ruta, se deja tal cual está y se teclea un
“Enter” Ya que se guardo solo presionamos “Ctrl +X” para salir del archivo.
NOTA: Este mismo archivo se creará en todos los nodos (cliente1 y cliente2).
3.- Una vez realizado esto se pasa a editar un archivo de configuración correspondiente al MySQL del nodo
administrador, esto para comentar una línea que contiene una dirección. Esto para que no exista conflicto
con las direcciones que estamos manejando. Para acceder al archivo escribimos lo siguiente:
“sudo nano /etc/mysql/my.cnf” Tecleamos un “ENTER” y nos debe arrojar una ventana como la imagen 2:
Imagen 2
4.- Una vez aquí, pasamos a buscar la siguiente línea:
“bin-address = 127.0.0.1”
Una vez localizada, se comenta, para ello se le antepone el símbolo de Gato o Numero # tal como se muestra
en la imagen.
5.- Una vez comentada la línea guardamos los cambios realizados y cerramos el archivo de configuración.
2.- Una vez que está abierto el archivo de configuración, se pasa a buscar la siguiente línea:
“*mysqld+” Una vez que esta lócalizada pasaremos a escribir debajo lo siguiente:
ndbcluster
ndb-connectstring=192.168.1.1
#La dirección anterior corresponde a la IP del nodo administrador
4.- Después buscamos otra línea de instrucción “*MYSQL_CLUSTER+”, una vez localizada pasamos a des
comentarla y de igual forma descomentamos “ndb-connectstring=127.0.0.1”y en la dirección que tiene se
cambia por la IP correspondiente al nodo administrador. Quedando como se muestra en la siguiente imagen:
5.- Ahora se pasará a crear una carpeta Backup, para ello se escribe la siguiente instrucción:
6.- Después de haber hecho lo anterior, pasamos a darle los permisos para el usuario de la carpeta que se
acaba de crear para ello basta con escribir lo siguiente:
Y si en ningún nodo Hubiera conexión con el Administrador será algo como esto:
NOTA: Esto difícilmente les suceda hicieron bien los pasos, obviamente, yo desconecte los nodos, para poder
mostrar las imágenes que pudieran aparecer, encaso de que no existiera conexión alguna.
Si les marcara error, chequen los archivos de configuración, y si las máquinas están conectadas en red,
porque puede pasar que se desconecten y eso hace que no se encuentren en conexión con el administrador,
y si hacen un cambio, reinicien los demonios, empezando siempre con el administrador, luego cliente1 y por
ultimo cliente2.
Creación de la base de datos
Para comprobar que el clúster a quedado, pasaremos a crear una pequeña base de datos, muy sencilla, para
ello la crearemos en el nodo Administrador.
1.- Primero abrimos una terminal. Y accederemos al MySQL, para ello basta con escribir lo siguiente:
“sudo mysql –u root –p” nos pedirá la contraseña tanto del usuario del administrador, como también la que
se le asigno al MySQL en este nodo, escribimos las contraseñas y tecleamos Enter.
2.- Crearemos una base de datos con el nombre de prueba1, para ello escribimos lo siguiente:
“show databases;”
Una vez que se realizó esto, se pasa a crear la misma base de datos, en cada uno de los nodos clientes que
existan, en este caso solo son 2.
Verificación de replicas.
Una vez que se creó la base de datos en todos los nodos, pasaremos a reiniciar nuevamente los demonios.
Después pasaremos a crear una tabla dentro de la base de datos “prueba1”.
1.- Primero abrimos la base de datos que fue creada, para ello abrimos una terminal y escribimos lo
siguiente:
2.- Después de esto seleccionaremos la base de datos donde ingresaremos la primera tabla, para ello
escribimos:
“use prueba1”
3.- Ahora crearemos la primera tabla, la cual llevara el nombre de “tabla1” la cual contendrá los siguientes
campos: Ncontrol, Nombre, Apellidop, Apeillodom para ello escribimos lo siguiente:
“create table tabla1 (Ncontrol int (13), Nombre varchar (10), Apellidop varchar (10), Apellidom varchar (10))
engine=ndbcluster;”
4.- Para verificar que la tabla ha sido creada, basta con solo escribir la siguiente instrucción:
“show tables;”
5.- Ahora insertaremos un registro dentro de “tabla1”, para ello escribimos lo siguiente: