45797276 como hacer un mysql cluster en ubuntu

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

Upload: norman-cubilla

Post on 02-Jan-2016

25 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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

Page 2: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 3: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 4: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 5: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 6: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 7: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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”

Page 8: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 9: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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:

Page 10: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 11: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 12: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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”.

Page 13: 45797276 Como Hacer Un MySQL Cluster en Ubuntu
Page 14: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 15: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 16: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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]

Page 17: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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

Page 18: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 19: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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

Page 20: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

#La dirección anterior corresponde a la IP del nodo administrador Quedando como se muestra en la siguiente imagen:

Page 21: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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:

Page 22: 45797276 Como Hacer Un MySQL Cluster en Ubuntu
Page 23: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 24: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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

Page 25: 45797276 Como Hacer Un MySQL Cluster en Ubuntu
Page 26: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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

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

Page 27: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 28: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 29: 45797276 Como Hacer Un MySQL Cluster en Ubuntu
Page 30: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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;”

Page 31: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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

Page 32: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 33: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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;”

Page 34: 45797276 Como Hacer Un MySQL Cluster en Ubuntu
Page 35: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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’);”

Page 36: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

6.- Para visualizar la tabla que se acaba de crear escribimos lo siguiente: “select *from tabla1;”

Page 37: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 38: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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.

Page 39: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

Listo el Clúster está terminado y funcionando correctamente.

Page 40: 45797276 Como Hacer Un MySQL Cluster en Ubuntu

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