Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Como Hacer Un MySQL Cluster en Ubuntu
Como Hacer Un MySQL Cluster en Ubuntu
04 Instituto Tecnolgico De Tapachula Materia: Base de Datos Distribuida Catedrtico (a): Teresa del Carmen Cabrera Gomez Alumno: Rodolfo Ramirez Vazquez +SAT+ Carrera: Lic. Informtica
Introduccin
El presente manual, contiene informacin sobre conceptos bsicos con respecto a un Clster as como sus componentes, esto para tener una idea de lo contenido en este manual.
El presente manual, se elabor gracias a la informacin de algunos sitios de internet, y de ayuda de compaeros quienes brindaron informacin con respecto al tema.
Para dar comienzo al trabajo, hay que mencionar que el clster est elaborado en mquinas virtuales, pero, la forma de instalacin, as como de configuracin, en las PCs (fsicamente) es de igual forma a como se muestra en este manual.
Definicin de Clster
El trmino clster se aplica a los conjuntos de computadoras construidos mediante la utilizacin de componentes de hardware comunes y que se comportan como si fuesen una nica computadora. Simplemente, un Clster es un grupo de mltiples ordenadores unidos mediante una red de alta velocidad, de tal forma que el conjunto es visto como un nico ordenador, ms potente que los comunes de escritorio. Los clsteres son usualmente empleados para mejorar el rendimiento y/o la disponibilidad por encima de la que es provista por un solo computador tpicamente siendo ms econmico que computadores individuales de rapidez y disponibilidad comparables.
Caractersticas de un Clster
Las aplicaciones paralelas escalables requieren: buen rendimiento, baja latencia, comunicaciones que dispongan de gran ancho de banda, redes escalables y acceso rpido a archivos. Un cluster puede satisfacer estos requerimientos usando los recursos que tiene asociados a l. Los clusters ofrecen las siguientes caractersticas a un costo relativamente bajo:
La tecnologa cluster permite a las organizaciones incrementar su capacidad de procesamiento usando tecnologa estndar, tanto en componentes de hardware como de software que pueden adquirirse a un costo relativamente bajo.
En su implementacin ms sencilla, un clster MySQL integra un servidor MySQL estndar y un motor de almacenamiento en memoria llamado NDB clster, funcionando en un conjunto de una o ms computadoras. Cada una de estas computadoras ejecutando uno o ms procesos, que pueden consistir en procesos de MySQL server, nodos de almacenamiento de datos, servidor administrador del clster, 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 clster es a travs de cualquiera de los nodos MySQL. Los nodos de datos funcionan utilizando un esquema de espejado, permitiendo soportar sin impacto la cada de nodos individuales de datos dentro de clster. La nica consecuencia que tendra un suceso como la cada de un nodo de datos, es que un pequeo conjunto de transacciones relacionadas al nodo cado sern 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 nmero de opciones para manejar el balanceo de cargas y la tolerancia a fallas.
Nodo de administracin (Nodo MGM) Este tipo de nodo cumple con la funcin de manejar, controlar y coordinar los otros nodos dentro del clster. Implementa funciones de configuracin de datos, Iniciar o detener otros nodos dentro del clster, 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 clster 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 necesitaran 8 nodos de datos. No es necesario manejar ms de una rplica. Este tipo de nodo se levanta utilizando el comando ndbd. Nodo SQL (MySQL server) A travs de este tipo de nodos se accede a los datos clusterizados. Bsicamente, consiste en un servidor MySQL Server que utiliza el motor de almacenamiento NDB. Se inicia utilizando el comando ndbcluster, especificando el archivo de configuracin necesario para este servidor . Clientes MySQL Para conectarse a un clster MySQL remotamente, se debe utilizar el mismo cliente utilizado para conectarse a un servidor MySQL no clusterizado. El clster es transparente para los clientes. Clientes administrativos Existen otro tipo de clientes que se comunican con el servidor de administracin y proveen las mismas funcionalidades que un nodo de este tipo. A diferencia de los nodos administrativos, los clientes permiten ejecutar las tareas de administracin remotamente. Algunas tareas que pueden realizarse con estos clientes incluyen iniciar o detener nodos, administrar el seguimiento de mensajes de depuracin, mostrar el estado de otros nodos y sus respectivas versiones, realizar respaldos, etc.
Iniciando La Elaboracin
En este ejemplo, se han instalado 3 mquinas virtuales las cuales corresponden: 1era. Nodo Administrador & clster 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.
En este paso, nos pedir la contrasea de nuestro usuario, as que la escribimos y continuamos, despus nos preguntar si deseamos continuar, decimos que si [S/N], y empezara la descarga e instalacin de los paquetes.
2.- Durante este proceso, nos aparecer una nueva ventana en la cual nos pide que asignemos una contrasea para lo que viene siendo el root del MySQL, as que escribimos la contrasea deseada y tecleamos un ENTER en este ejemplo, la contrasea ser administrador
3.- Nos pedir que repitamos la contrasea, esto con la finalidad de comprobar que la contrasea escrita primeramente, sea la correcta. As que la escribimos y tecleamos un ENTER.
Una vez que se realiza esta operacin, se empezar a marcar automticamente los dems complementos de MySQL, esto para que todo funcione correctamente. As que solo esperamos a que termine el proceso.
Esto con el fin de que las mquinas virtuales tengan comunicacin unas con otras por medio de las IP que a continuacin se pondrn.
2.- Seleccionamos la red eth0 y seleccionamos la opcin de Editar. En este paso nos pedir la autentificacin para poder modificar, as que solo basta con poner la contrasea de nuestro usuario para poder continuar.
3.- Despus de habernos autentificado, se nos mostrar una ventana como la siguiente, en la cual tendremos que posicionarnos en la pestaa de Ajustes de IPv4 y damos clic en la parte que dice Mtodo 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 configuracin, pasamos a dar clic en la pestaa que dice aadir, y agregamos lo siguiente: Direccin: 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 conexin con lo que es el internet. Quedando agregado como se muestra en la siguiente imagen:
Nota: para hacer el Clster, basta con solo dejar la direccin IP y la mscara 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 estn usando, tanto alambrica como inalmbrica.
NOTA: Esto mismo se hace para los nodos clientes, por obviedad la direccin IP cambiar una se le asignar la IP 192.168.1.2 y la otra 192.168.1.3, lo dems se pone de igual forma que en el nodo administrador.
[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 instruccin, 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 configuracin correspondiente al MySQL del nodo administrador, esto para comentar una lnea que contiene una direccin. 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 lnea: bin-address = 127.0.0.1 Una vez localizada, se comenta, para ello se le antepone el smbolo de Gato o Numero # tal como se muestra en la imagen.
5.- Una vez comentada la lnea guardamos los cambios realizados y cerramos el archivo de configuracin.
2.- Una vez que est abierto el archivo de configuracin, se pasa a buscar la siguiente lnea: *mysqld+ Una vez que esta lcalizada pasaremos a escribir debajo lo siguiente: ndbcluster ndb-connectstring=192.168.1.1
#La direccin anterior corresponde a la IP del nodo administrador Quedando como se muestra en la siguiente imagen:
3.- Ahora pasamos a buscar la siguiente lnea bin-address = 127.0.0.1dentro de este mismo archivo de configuracin. Y la pasamos a comentar, anteponiendo el smbolo de gato o numero #.
4.- Despus buscamos otra lnea de instruccin *MYSQL_CLUSTER+, una vez localizada pasamos a des comentarla y de igual forma descomentamos ndb-connectstring=127.0.0.1y en la direccin 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 instruccin: sudo mkdir /var/lib/mysql-cluster/backup
6.- Despus 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
Reinicio de demonios
Ahora pasamos a reiniciar los servicios que se han instalado. Para ello se reinicia el servicio en el administrador.
Demostrar la conectividad:
Para demostrar la conexin de los nodos clientes con el nodo administrador, basta con escribir en consola la siguiente instruccin. Nodo administrador: ndb_mgm
Si no existiera conexin en alguno de los nodos, por ejemplo el nodo dos, aparecera algo como esto:
Y si en ningn nodo Hubiera conexin con el Administrador ser algo como esto:
NOTA: Esto difcilmente les suceda hicieron bien los pasos, obviamente, yo desconecte los nodos, para poder mostrar las imgenes que pudieran aparecer, encaso de que no existiera conexin alguna. Si les marcara error, chequen los archivos de configuracin, y si las mquinas estn conectadas en red, porque puede pasar que se desconecten y eso hace que no se encuentren en conexin con el administrador, y si hacen un cambio, reinicien los demonios, empezando siempre con el administrador, luego cliente1 y por ultimo cliente2.
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 instruccin; 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.
Verificacin de replicas.
Una vez que se cre la base de datos en todos los nodos, pasaremos a reiniciar nuevamente los demonios. Despus 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.- Despus 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 instruccin: 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 rplica se ha hecho con xito, para ello, verificamos la tabla y checamos los registros si estn agregados.
8.- Para hacer una prueba del cliente 2 al cliente 1, agregaremos un nuevo registro en el cliente 2.
Agradecimientos
Agradezco a estas personas, que tal vez, algunos desconocen que me apoyaron, pero gracias a ellos encontr informacin y en otros casos me brindaron informacin 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 Arvalo Robles Charlie Germn Morales Martnez