Cluster

Embed Size (px)

DESCRIPTION

cluster

Citation preview

Cluster >> Msql

Cluster >> MsqlCluster 1

Primeros pasos con MySQL Cluster: instalacin, configuracin y arrancada

Como hemos comentado en el post anterior, vamos a explicar paso a paso la instalacin, la configuracin y el arranque de un cluster de prueba de MySQL Cluster sobre la versin 8.10 de Ubuntu.InstalacinPrimero, y fundamental, es tener instalados los paquetes de mysql en el sistema. Para saber si los tenemos o no, podemos ir al Gestor de Paquetes Synaptic de Ubuntu (System>Administration>Synaptic Package Manager) y se nos abrir una pantalla como esta despus de haber introducido la contrasea deroot.Introduciremos la palabra mysql en el buscador para que nos muestre todos los paquetes relacionados.

Aquellos paquetes que se acompaen con un recuadro verde son los que estn instalados en el sistema. Dicho paquetemysqlcontiene, al menos en sus versiones para Ubuntu 8.10, soporte para MySQL Cluster por lo que no hemos de descargar ningn otro archivo para poder utilizarlo.

Creacin y modificacin de archivos de configuracinHemos de tener en cuenta que Ubuntu utiliza unos directorios concretos cuando se le delega la instalacin de dichos paquetes, por defecto. Consultando la documentacin oficial deMySQL Clusternos hemos dado cuenta de que la localizacin de los archivos de configuracin que se expresa son diferentes a la de nuestro sistema. La siguientes lnias determinarn nuestro propio proceso de configuracin y arranque del sistema de cluster y no el que se indica en dicha documentacin (un tanto diferente).Dicho todo esto, vamos a por el primer paso. La instalacin de MySQL en Ubuntu repercute en una serie de carpetas del sistema: /etc/donde el sistema aade un directoriomysqlque, podramos decir, guarda la informacin relacionada con su motor y arranque. Aqu es donde encontraremos el archivo que necesitaremos ms adelante,my.cnf. /var/lib/donde el sistema aade tantas carpetas como sean necesarias para describir su contenido. Aqu encontraremos un directorio llamado mysql-cluster que es donde crearemos su archivo de configuracin,config.ini.Pero, vayamos por partes.1. Archivo de configuracin config.inipara la configuracin de MySQL-Cluster.Abrimos la consola (Applications>Accessories>Terminal), e insertamos la siguiente lnia:

cd /var/lib/mysql-clusterUna vez en el directorio tendremos que crear el archivo de configuracin. Como root escribiremos la siguiente lnia:

sudo gedit config.iniE introduciremos la contrasea de root que tengamos. Nos abrir elgedites un programa de edicin de texto muy sencillo. Al detectar que dicho archivo no existe en el directorio escogido, lo crea automticamente. Una vez abierto, copiaremos las siguientes lnias :

# file "config.ini" - showing minimal setup consisting of 1 data node,# 1 management server, and 3 MySQL servers.# The empty default sections are not required, and are shown only for# the sake of completeness.# Data nodes must provide a hostname but MySQL Servers are not required# to do so.# If you don't know the hostname for your machine, use localhost.# The DataDir parameter also has a default value, but it is recommended to# set it explicitly.# Note: DB, API, and MGM are aliases for NDBD, MYSQLD, and NDB_MGMD# respectively. DB and API are deprecated and should not be used in new# installations.[NDBD DEFAULT]NoOfReplicas= 1[MYSQLD DEFAULT][NDB_MGMD DEFAULT][TCP DEFAULT][NDB_MGMD]HostName= localhost[NDBD]HostName= localhostDataDir= /var/lib/mysql-cluster[MYSQLD][MYSQLD][MYSQLD]

Nota: HostName de NDB_MGM (nodo administracin) y NDBD (nodo datos) y DataDir dependern de cada proyecto, pero el ejemplo que se muestra funciona para la prueba rpida en un mismo ordenador. No olvidemos, que en un sistema corriendo de forma real tendramos diferentes mquinas para los diferentes procesos de administracin y almacenamiento de datos, y por tanto sus HostsName sern unos en concreto para cada mquina.2. Activar motor de almacenamiento ndbcluster.Accedemos, mediante consola, al siguiente directorio:

cd /etc/mysql/

Y abriremos el archivomy.cnfpara poder activar el motor de almacenamiento. sto no es ms que aadir la siguiente lnea al cdigo:

[mysqld]ndbcluster

Y ms o menos, tendremos una parte del documento que ser de la siguiente manera;

...[mysqld]## * Basic Settings#ndbcluster## * IMPORTANT# If you make changes to these settings and your system uses apparmor, you may# also need to also adjust /etc/apparmor.d/usr.sbin.mysqld.#...

Una vez hecho esto podremos crear los nuevos nodos.3. Arrancamos el nodo de administracin y el nodo de datosVolvemos a colocarnos en el directorio /var/lib/mysql-cluster :

cd /var/lib/mysql-cluster

Con privilegios de root, arrancamos el nodo administrador:

sudo ndb_mgmd

Y a continuacin, arrancamos un nodo de datos:

sudo ndbd --initial4. Reiniciar el servidor MySQL y comprovar que funciona el NDBCLUSTERUna vez llegado este punto, es hora de reiniciar el servidor mysql que tengamos. Para ello es necesario que lo hagamos con permisos de root:

sudo /etc/init.d/mysql stopsudo /etc/init.d/mysql start

o

sudo /etc/init.d/mysql restart

Si no ha aparecido ningn error, ya estamos preparados para arrancar el cluster.5. Arrancar mysql con el clusterInicializaremos mysql desde la consola:

mysql -u root -p

Y nos pedir la contrasea que hayamos definido para el sistema mysql. La introducimos y nos aparecer algo parecido a sto:

Welcome to the MySQL monitor. Commands end with ; or g.Your MySQL connection id is 64Server version: 5.0.67-0ubuntu6 (Ubuntu)Type 'help;' or 'h' for help. Type 'c' to clear the buffer.mysql>

Introducimos una sentencia que nos permita ver de qu se compone nuestro sistema mysql

mysql> show engines;

y nos debera aparecer una tabla que contenga varas filas. Entre ellas, debera aparecer una como esta:

| ndbcluster | YES | Clustered, fault-tolerant, memory-based tables

A veces es posible que aparezca DEFAULT en vez de YES. Si no aparece ninguna de estas dos es que algo no ha salido bien. Intenta revisar todos los pasos anteriores aqu descritos.Ahora jugaremos con alguna base de datos que tengamos en el sistema. Si no tienes ninguna, puedes crearla facilmente con Navicat o cualquier otra aplicacin gestora de mysql. Pensemos en que la tenemos.

mysql> use db_usuaris;

y una vez en la base de datos que hemos escogido, vamos a crear una table que utilice el engine del cluster:

mysql> create table ctest (i INT) engine=ndbcluster;

Una vez la hemos creado, vamos a ver sus propiedades

mysql> show create table ctest G;

y debera salir algo, tal que as:

*************************** 1. row ***************************Table: ctestCreate Table: CREATE TABLE `ctest` (`i` int(11) default NULL) ENGINE=ndbcluster DEFAULT CHARSET=latin11 row in set (0.00 sec)

Finalizamos sesin en mysql escribiendo:

mysql> exit;6. Para finalizar, ver si los nodos se han inicializado correctamentePara ello vamos a arrancar el nodo administracin de la siguiente manera:

sudo ndb_mgm

Ya simplemente nos queda mirar un reporte de los nodos que se han creado, y ya habremos terminado con este proceso:

ndb>show;

y si todo ha ido bien, aparecer algo tal que as:Cluster Configuration---------------------[ndbd(NDB)] 1 node(s)id=2 @127.0.0.1 (Version: 3.5.3, Nodegroup: 0, Master)[ndb_mgmd(MGM)] 1 node(s)id=1 @127.0.0.1 (Version: 3.5.3)[mysqld(API)] 3 node(s)id=3 @127.0.0.1 (Version: 3.5.3)id=4 (not connected, accepting connect from any host)id=5 (not connected, accepting connect from any host)Llegados a este punto, ya podemos dar por finalizada la tarea de este post. Hemos conseguido inicializar correctamente un cluster MySQL y ya podemos guardar informacin en las tablas creadas con esta tecnologa.

Cluster 2

Configuracin de un Cluster conMySQL

Antes que nada debemos de tener ciertas cosas para que nuestro cluster funcionecorrectamente, para ello voy a enumerar las cosas que debemos de tener en nuestro sistemaoperativo.

Debemos tener instaldo una distribucin Linux, en mi caso tengo Ubuntu 8.10Debemos tener una conexin de red entre las computadoras que usaremos pararealizar el clusterEstablecer una IP fija a cada equipo.Instalar el paquete de mysql-server, este lo podemos agregar al sistema desdesynaptic.Instalar el paquete de mysql-client, este lo podemos agregar al sistema desdesynaptic.

Instalar el paquete de mysql-admin, este lo podemos agregar al sistema desdesynaptic.Despus de que tengamos todo esto listo, podemos empezar a configurar nuestroadministrador y nuestros nodos.En mi caso tengo 3 equipos los cuales van a ser:

AdministradorIP 192.168.1.100 Nodo 1IP 192.168.1.101 Nodo 2IP 192.168.1.102

Configuracin del Administrador

Paso 1. Vamos a crear un archivo que se llamendb_mgmd.cnf

en la direccin/etc/mysql$sudo gedit /etc/mysql/ndb_mgmd.cnf

Paso 2. Vamos a llenar dicho archivo con el siguiente contenido:

[NDBD DEFAULT]NoOfReplicas=2DataMemory=80M # cantidad de memoria que le vamos a asignarIndexMemory=18M # cantidad de memoria que le vamos a asignar#Configuracion del Cluster[MYSQLDDEFAULT][NDB_MGMD DEFAULT][TCP DEFAULT]

#En esta seccin vamos a configurar el nodoadministrativo del cluster[NDB_MGMD]#IP del nodo administrativo (este sistema)HostName=192.168.1.100[NDBD]#Seccin de los nodos dealmacenamiento#IP del primer nodoHostName=192.168.1.101DataDir=/var/lib/mysql-clusterBackupDataDir=/var/lib/mysql-cluster/backupDataMemory=128M[NDBD]#Seccin de los nodos dealmacenamiento#IP del primer nodoHostName=192.168.1.101DataDir=/var/lib/mysql-clusterBackupDataDir=/var/lib/mysql-cluster/backupDataMemory=128M#Por cada nodo debemos de incluir un [MYSQLD][MYSQLD][MYSQLD]

Paso 3. En el archivomy.cnfque esta ubicado en/etc/mysqldebemos de comentar la lnea

#bind-address = 127.0.0.1

Paso 4. Debemos de reiniciar el servicio de mysql-ndb.mgm$sudo /etc/init.d/mysql-ndb-mgm restart

Paso 5. Ingresamos al ndb_mgm

$ ndb_mgm

Paso 6. Una vez estando adentro de esa aplicacin ejecutamos unshow;

CLUSTER C MYSQLCon estos pasos ya tenemos configurado nuestro nodo Administrador.

Configuracin Nodo dealmacenamiento

Paso 1. Vamos a configurar nuestro nodo para ello nos vamos al archivomy.cnfque estaubicado en/etc/mysql

$ sudogedit /etc/mysql/my.cnf

Paso 2. Una vez abierto el archivo vamos a buscar la etiqueta[mysqld]y agregamos lassiguientes lneas

ndbclusterndb-connectstring=192.168.1.100 #IP del nodo administrador

~ 5 ~Paso 3. Buscamos dentro del mismo archive la etiqueta[MYSQL_CLUSTER]Y ladescomentamos.

[MYSQL_CLUSTER]ndb-connectstring=192.168.1.100 #IP del nodo administrador.

Paso 4. Buscamos elbind-addressy lo comentamos

#bind-address = 127.0.0.1

Paso 5. Vamos a crear una carpeta en donde vamos a tener toda la informacin del cluster

$sudo mkdir /var/lib/mysql-cluster/backup

Paso 6. Ahora vamos a cambiar el propietario de esta carpeta, para ello vamos a realizareste comando.

$ sudo chown mysql:mysql /var/lib/mysql-clusterPaso 7. Vamos a reiniciar el servicio de mysql.

$ sudo /etc/init.d/mysql restart

Paso 8. Ahora el servicio de ndd.

$ sudo /etc/init.d/mysql-ndb restart

Con estos pasos ya tenemos configurado nuestro nodo, estos son los pasos que debemosseguir para configurar los dems nodos.Ahora solo nos queda comprobar que los nodos estn conectados.Para eso en el nodo administrador vamos a ejecutar el comandondb_mgmuna vez estandoall le damosshow;si todo esta bien nos tiene que aparecer lo siguiente.

CLUSTER CON MYSQL EN UBUNTU~ 6 ~NOTA.Si en dado caso no miramos que se conectan los nodos al nodo administrador, debemos dereinciar los servicios:En el nodo administrador

$sudo /etc/init.d/mysql-ndb-mgm restart

En el nodo de almacenamiento

$ sudo /etc/init.d/mysql-ndb restart

Y otra vez reiniciamos el nodo administrador

$sudo /etc/init.d/mysql-ndb-mgm restart

Cluster 3Crear un cluster de mysql en Ubuntu Server 11.04Es de sobra conocido que mysql es una base de datos muy poderosa y con muchas posibilidades, en esta ocasin comentaremos de una de ellas, la creacin de un cluster con balanceo de carga de mysql utilizando como base Ubuntu 11.04Primeros pasosLo primero que debemos tener son varias mquinas, para este ejemplo supongamos que tenemos 4, una que har las veces de nodo de administracin, dos que sern los nodos de datos y por ltimo una que servir de balanceador de carga, cada mquina debe tener como mnimo 1GB de RAM y 16 GB de espacio en disco.Instalando los paquetesLos paquetes aqui presentados deben ser instalados en las mquinas que van a servir de nodo de administracin y los dos nodos de datos en el estricto orden aqui presentado.sudo apt-get install mysql-serverLuego instalaremos el el paquete del clustersudo apt-get install mysql-cluster-serverSe instalarn tambin todas las dependencias que se necesiten para la instalacin de este paquete.Configuracin el nodo de administracinAbr con un editor de texto el archivo/etc/mysql/ndb_mgmd.cnfy escriba lo siguiente:[NDBD DEFAULT]NoOfReplicas=2 (En este caso de ejemplo, cambie segun el numero de nodo de datosDataMemory=256MIndexMemory=18M [MYSQLD DEFAULT][NDB_MGMD DEFAULT][TCP DEFAULT]# Seccin para la configuracin del nodo de administracin[NDB_MGMD]# IP del nodo de administracionHostName=192.168.1.1 #Cambiar por la ip que deseeY la configuracin de referencia de los nodos de datos:

[NDBD] # IP del primer nodo de datos HostName=192.168.1.2 #Cambiar por la ip que desee DataDir=/var/lib/mysql-cluster BackupDataDir=/var/lib/mysql-cluster/backup DataMemory=512M [NDBD] # IP del segundo nodo de datos HostName=192.168.1.3 #Cambiar por la ip que desee DataDir=/var/lib/mysql-cluster BackupDataDir=/var/lib/mysql-cluster/backup DataMemory=512M

#Por cada nodo debe cerrar con [MYSQLD] [MYSQLD] [MYSQLD]Configurando los nodos de datosEn los nodos de datos debemos abrir (adems de configurar sus direcciones ip correspondientes)/etc/mysql/my.cnf

Aadir a la configuracin existente [mysqld] ndbcluster ndb-connectstring=192.168.1.1 #Ip de la consola de administracion

Aadir al final del archivo [mysql_cluster] ndb-connectstring=192.168.1.1Por utimo debemos crear los directorios de backup que definimos en/etc/mysql/ndb_mgmd.cnfde la siguiente manera:sudo mkdir /var/lib/mysql-cluster/backupsudo chmod mysql:mysql -R /var/lib/mysql-clusterArmando todoEn estricto orden ejecutaremos los siguientes comandos en sus respectivas mquinas:En la consola de administracion:sudo /etc/init.d/mysql-ndb-mgm restartEn cada uno de los nodos de datos:sudo /etc/init.d/mysql-ndb restartY luego de nuevo en los nodos de datos:sudo /etc/init.d/mysql restartAhora prueba el clusterEn el nodo de administracion corra el siguiente comando:sudo ndb_mgmY en la shell de mgm> corra el comando:mgm> showDeberia ver todos los nodos que acaba de crear, para salir escribamgm> shutdownCree las bases de datosEn el primer nodo de datos corra el siguiente comando:mysql -u root -p Y en la shell de mysql cree una base de datos de prueba:mysql> create databases test_db;

mysql> use test_db;

mysql> create table test_table (ival int(1));

mysql> insert into test_table values(1);

mysql> select * from test_table;Debera ver el valor 1 en la tabla creada, ahora vaya al segundo nodo de datos e ingrese los datos de acceso:mysql -u root -p Y desde la shell de mysql corra el siguiente comando:mysql> show databases;Deberia ver la tabla creada en el primer nodo con el valor 1 con los siguientes comandos:mysql> use test_db;

mysql> select * from test_table;Si es as, ya esta listo su Cluster, ahora pasaremos al balanceador de cargaY por ltimo el balanceador de cargaInstalamos mysql-proxy:sudo apt-get install mysql-proxyAhora iniciaremos el proxy y conectaremos con nuestros dos nodos de datosscreen -S proxy

mysql-proxy proxy-backend-addresses=192.168.1.2:3306 proxy-backend-addresses=192.168.1.3:3306Lo probamos:mysql -u root -p -h 127.0.0.1 -P 4040

mysql> use test_db;mysql> select * from test_table;Si ve la tabla con el valor 1 antes probado ya tenemos nuestro cluster montado con su balanceador de carga perfectamente configurado.