Você está na página 1de 40

Manual Para Realizar Un Clúster En Ubuntu 9.

04

Instituto Tecnológico De Tapachula

Materia: Base de Datos Distribuida

Catedrático (a): Teresa del Carmen Cabrera Gomez

Alumno: Rodolfo Ramirez Vazquez +SAT+

Carrera: Lic. Informática


Introducción
El presente manual, contiene información sobre conceptos básicos con respecto
a un Clúster así como sus componentes, esto para tener una idea de lo
contenido en este manual.

El presente manual, se elaboró gracias a la información de algunos sitios de


internet, y de ayuda de compañeros quienes brindaron información con respecto
al tema.

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.

Esperando esto sea de utilidad para la comunidad, comenzaré con el tema.


Definición de Clúster
El término clúster se aplica a los conjuntos 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 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.

Los clusters ofrecen las siguientes características a un costo relativamente bajo:

 Alto rendimiento
 Alta disponibilidad
 Alta eficiencia
 Escalabilidad

La tecnología cluster permite a las organizaciones incrementar su capacidad de procesamiento


usando tecnología estándar, tanto en componentes de hardware como de software que pueden
adquirirse a un costo relativamente bajo.

Definición de MySQL Clúster


MySQL clúster es una tecnología que permite el clustering de bases de datos en memoria en un
ambiente de no compartición. La arquitectura de no compartición permite que el sistema gestor de
base de datos (SGBD) funcione utilizando hardware no muy costoso y con requerimientos mínimos
tanto de software como de hardware.

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

En su implementación más sencilla, un clúster MySQL integra un servidor MySQL estándar y un


motor de almacenamiento en memoria llamado NDB clúster, funcionando en un conjunto de una o
más computadoras. Cada una de estas computadoras ejecutando uno o más procesos, que pueden
consistir en procesos de MySQL server, nodos de almacenamiento de datos, servidor administrador
del clúster, o programas especializados para acceder a los datos.

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 es un motor de almacenamiento en memoria que ofrece alta disponibilidad y persistencia de


datos. Es altamente configurable ofreciendo un gran número de opciones para manejar el balanceo
de cargas y la tolerancia a fallas.
Nodo de administración (Nodo MGM)

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.

Nodo SQL (MySQL server)

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:

1era. Nodo Administrador & clúster

2da. Nodo Cliente (cliente1)

3ra. Nodo Cliente (cliente2)

Una vez que se tiene instalado los respectivos nodos se pasa a instalar los paquetes a cada uno de
ellos.

Instalación de paquetes para el nodo


administrador y clientes
Para el nodo administrador, será necesario instalar el MySQL en este caso se utilizo la versión 5.0, para ello
podemos hacerlo de dos formas tanto de consola, como desde la paquetería de synaptic, en este caso lo
realizaremos desde la consola.

1.- Abrimos una consola, y escribimos la siguiente instrucción:

“sudo apt-get install mysql-server-5.0”

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.

Configuración del virtual Box


Terminada la instalación de los paquetes de los nodos, se configura cada máquina virtual de la siguiente
manera. Para ello, es mejor que apaguen las máquinas virtuales, una vez hecho esto, es necesario configurar
los nodos con respecto a la red, para hacer una red interna. Para ello es ir, a la maquina virtual, y seleccionar
Configuración, Red y después dejar las opciones tal cual se muestra en la siguiente imagen:
Esto con el fin de que las máquinas virtuales tengan comunicación unas con otras por medio de las
IP que a continuación se pondrán.
Configuración de las IP’s de los nodos.
Una vez que se configuro las máquinas virtuales, se realiza lo siguiente:

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

Mascara de red: 255.255.255.0

Puerta de enlace: 192.168.1.254

DNS: 192.168.1.254
Este último, DNS sirve para tener conexión con lo que es el internet.

Quedando agregado como se muestra en la siguiente imagen:

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:

“sudo nano /etc/mysql/ndb_mgmd.cnf”

Una vez que aparezca el editor, pasaremos a copiar 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.

Configuración del nodo cliente 1 y 2.


Ahora en esta parte se supone que ya debe de estar instalado el paquete que se instalo en el nodo
administrador de igual forma debe estar creado el archivo ndb_mgmd.cnf, por lo cual, solo pasaremos a
configurar los archivos necesarios.

1.- Se abre una terminal y se escribe lo siguiente:

“sudo nano /etc/mysql/my.cnf”

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

Quedando como se muestra en la siguiente imagen:


3.- Ahora pasamos a buscar la siguiente línea “bin-address = 127.0.0.1”dentro de este mismo archivo de
configuración. Y la pasamos a comentar, anteponiendo el símbolo de gato o numero #.

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:

“sudo mkdir /var/lib/mysql-cluster/backup”

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:

“sudo chown mysql:mysql /var/lib/mysql-cluster”

NOTA: La configuración del cliente 2 es igual a la de este primer cliente.


Reinicio de demonios
Ahora pasamos a reiniciar los servicios que se han instalado. Para ello se reinicia el servicio en el
administrador.

Nodo administrador: sudo /etc/init.d/mysql restart

Nodo administrador: sudo /etc/init.d/mysql-ndb-mgm restart

Nodo cliente1: sudo /etc/init.d/mysql restart

Nodo cliente1: sudo /etc/init.d/mysql-ndb restart


Nodo cliente2: sudo /etc/init.d/mysql restart

Nodo cliente2: sudo /etc/init.d/mysql-ndb restart


Demostrar la conectividad:
Para demostrar la conexión de los nodos clientes con el nodo administrador, basta con escribir en consola la
siguiente instrucción.

Nodo administrador: ndb_mgm

Para visualizar los nodos es con: show;

NOTA: Si aparece como se muestra en la imagen de abajo, es porque la conexión es satisfactoria.


Si no existiera conexión en alguno de los nodos, por ejemplo el nodo dos, aparecería algo como
esto:

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:

“create database prueba1;”


3.- Para comprobar que la base de datos se creó, basta con escribir la siguiente instrucción;

“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:

“sudo mysql –u root –p”

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:

“insert into tabla1 values (‘1234’, ‘jose’, ‘Perez’, ‘Gomez’);”


6.- Para visualizar la tabla que se acaba de crear escribimos lo siguiente:

“select *from tabla1;”


7.- Terminado esto, pasaremos a ver en el cliente 2 si la réplica se ha hecho con éxito, para ello, verificamos
la tabla y checamos los registros si están agregados.
8.- Para hacer una prueba del cliente 2 al cliente 1, agregaremos un nuevo registro en el cliente 2.

9.- Verificamos en el cliente 1 si se realizo la réplica.


Listo el Clúster está terminado y funcionando correctamente.
Agradecimientos
Agradezco a estas personas, que tal vez, algunos desconocen que me apoyaron, pero
gracias a ellos encontré información y en otros casos me brindaron información para
poder realizar esto. Gracias a la banda…. De parte del +SAT+

Juan Pablo Rizo Argueta


Rachel Espinosa Palomeque
Yair Delfin Gomez Conde
Juan de la Cruz Cruz
Roberto Cristian Arévalo Robles
Charlie Germán Morales Martínez

Você também pode gostar