Feb 22, 2009

Cluster para base de datos (II)

En el artículo anterior y continuando con el desarrollo del sistema de alta disponibilidad y balanceo de carga, expuse la teoría conceptual del cluster MySQL. En esta entrada se van a diseñar las configuraciones que nos permitirán establecer dicho sistema de bases de datos replicadas.

En los dos nodos frontales (HA1 y HA2) configuraremos el demonio de administración (ndb_mgmd). Pero al conformar estos dos nodos un sistema de alta disponibilidad activo-pasivo, el demonio estará arrancado únicamente en el nodo activo. En caso de caída de este nodo, el nodo pasivo tomará el rol de activo y levantará dicho demonio.

En los dos nodos traseros (LB1 y LB2) se configurará el demonio de MySQL (mysqld) destinado a atender las queries y el demonio encargado de comunicarse con el sistema de administración del cluster (ndb_mgm).

Lo primero que vamos a hacer es instalar mysql-server en los cuatro nodos (versión 5.0.67). El proceso de instalación nos solicitará una contraseña para el usuario root de MySQL.

~# aptitude install mysql-server

Después configuraremos el ndb_mgmd en los nodos HA1 y HA2 a través del fichero /etc/mysql/ndb_mgmd.cnf. La sección [NDB_MGMD] se utilizará para especificar las propias características del demonio ndb_mgmd. Posteriormente se definirá un bloque [NDBD] por cada uno de los nodos de almacenamiento existentes (en nuestro caso dos, LB1 y LB2).

A continuación se muestra el fichero de configuración del demonio ndb_mgmd para los nodos HA1 y HA2 (el archivo no existe, tendremos que crearlo previamente):

~# cat /etc/mysql/ndb_mgmd.cnf
[NDBD DEFAULT]

# Número de nodos de almacenamiento
# (Número de réplicas para cada tabla almacenada en el cluster)
NoOfReplicas=2

# Memoria reservada para el almacenamiento de datos
DataMemory=80M

# Memoria reservada para el almacenamiento de índices
IndexMemory=18M

[MYSQLD DEFAULT]

[NDB_MGMD DEFAULT]

[TCP DEFAULT]

# Sección dedicada al nodo de administración del cluster
[NDB_MGMD]

# Dirección IP donde permanecerá a la escucha el demonio ndb_mgmd
HostName=10.0.0.20

# Sección dedicada al nodo de almacenamiento LB1
[NDBD]

# Dirección IP del nodo de almacenamiento LB1
HostName=10.0.0.12

# Directorio utilizado por el cluster de MySQL en la máquina local
DataDir=/var/lib/mysql-cluster

# Directorio empleado para el área compartida
BackupDataDir=/var/lib/mysql-cluster/backup

# Memoria RAM empleada para guardar las bases de datos
DataMemory=256M

# Sección dedicada al nodo de almacenamiento LB2
[NDBD]

# Dirección IP del nodo de almacenamiento LB2
HostName=10.0.0.13


# Directorio utilizado por el cluster de MySQL en la máquina local
DataDir=/var/lib/mysql-cluster


# Directorio empleado para el área compartida
BackupDataDir=/var/lib/mysql-cluster/backup


# Memoria RAM empleada para guardar las bases de datos
DataMemory=256M


[MYSQLD]
[MYSQLD]

Para que los cambios surjan efecto, reiniciaremos el demonio ndb_mgmd:

~# /etc/init.d/mysql-ndb-mgm restart

Una vez configurada la parte de administración, le tocará el turno a la de almacenamiento. Los nodos encargados de albergar las bases de datos van a ser LB1 y LB2, por lo tanto tendremos que editar el fichero /etc/mysql/my.cnf con el siguiente contenido:

~# cat /etc/mysql/my.cnf
...
# Sección utilizada por el demonio mysqld
[mysqld]


# Dirección IP del nodo de administración
ndbcluster

ndb-connectstring=10.0.0.20
...
bind-address=0.0.0.0
...

# Sección utilizada por el demonio ndbd
[MYSQL_CLUSTER]


# Dirección IP del nodo de administración
ndb-connectstring=10.0.0.20
...


Por último, crearemos un directorio compartido para los nodos de almacenamiento (/var/lib/mysql-cluster/backup) y le pondremos como propietario al usuario mysql (ejecutaremos un chown recursivo para que se modifique el propietario de todos los elementos contenidos dentro del directorio).

~# mkdir /var/lib/mysql-cluster/backup

~# chown -R mysql:mysql /var/lib/mysql-cluster


Para que los cambios surjan efecto, reiniciaremos los demonios mysqld y ndb_mgm:

~# /etc/init.d/mysql restart

~# /etc/init.d/mysql-ndb-mgm restart

En el siguiente artículo cerraremos el desarrollo del cluster para base de datos, mostrando los parámetros de monitorización del sistema y creando una base de datos con sus correspondientes tablas, con el objetivo de analizar el correcto funcionamiento de los nodos.

No comments:

Post a Comment