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