sql >> Base de Datos >  >> RDS >> Mysql

Alta disponibilidad con un presupuesto reducido:implementación de un clúster MySQL Galera mínimo de dos nodos

Regularmente recibimos preguntas sobre cómo configurar un clúster de Galera con solo 2 nodos.

La documentación establece claramente que debe tener al menos 3 nodos Galera para evitar la partición de la red. Pero hay algunas razones válidas para considerar una implementación de 2 nodos, por ejemplo, si desea lograr una alta disponibilidad de la base de datos pero tiene un presupuesto limitado para gastar en un tercer nodo de base de datos. O tal vez está ejecutando Galera en un entorno de desarrollo/sandbox y prefiere una configuración mínima.

Galera implementa un algoritmo basado en quórum para seleccionar un componente principal a través del cual impone coherencia. El componente principal debe tener una mayoría de votos, por lo que en un sistema de 2 nodos, no habría una mayoría que resulte en un cerebro dividido. Afortunadamente, es posible agregar un garbd (Galera Arbitrator Daemon), que es un demonio liviano sin estado que puede actuar como un nodo impar. La falla del árbitro no afecta las operaciones del clúster y se puede volver a conectar una nueva instancia al clúster en cualquier momento. Puede haber varios árbitros en el clúster.

ClusterControl tiene soporte para implementar garbd en hosts que no son de base de datos.

Normalmente, un clúster de Galera necesita al menos tres hosts para ser completamente funcional; sin embargo, en el momento de la implementación, dos nodos serían suficientes para crear un componente principal. Estos son los pasos:

  1. Implemente un clúster Galera de dos nodos,
  2. Después de que ClusterControl haya implementado el clúster, agregue garbd en el nodo de ClusterControl.

Debería terminar con la siguiente configuración:

Implementar el clúster de Galera

Vaya a la sección Implementación de ClusterControl para implementar el clúster.

Luego de seleccionar la tecnología que queremos implementar, debemos especificar Usuario, Clave o Contraseña y puerto para conectarnos por SSH a nuestros hosts. También necesitamos el nombre de nuestro nuevo clúster y si queremos que ClusterControl instale el software y las configuraciones correspondientes por nosotros.

Después de configurar la información de acceso SSH, debemos seleccionar el proveedor/versión y debemos definir la contraseña de administrador de la base de datos, el directorio de datos y el puerto. También podemos especificar qué repositorio usar.

Aunque ClusterControl le advierte que un clúster de Galera necesita un número impar de nodos, solo agregue dos nodos al clúster.

La implementación de un clúster de Galera activará un trabajo de ClusterControl que se puede monitorear en la página de trabajos.

Instalar Garbd

Una vez completada la implementación, instale garbd en el host de ClusterControl. Tenemos la opción de implementar garbd desde ClusterControl, pero esta opción no funcionará si queremos implementarlo en el mismo servidor de ClusterControl. Esto es para evitar problemas relacionados con las versiones de la base de datos y las dependencias de los paquetes.

Entonces, debemos instalarlo manualmente y luego importar garbd a ClusterControl.

Veamos la instalación manual de Percona Garbd en CentOS 7.

Cree el archivo de repositorio de Percona:

$ vi /etc/yum.repos.d/percona.repo
[percona-release-$basearch]
name = Percona-Release YUM repository - $basearch
baseurl = http://repo.percona.com/release/$releasever/RPMS/$basearch
enabled = 1
gpgcheck = 0
[percona-release-noarch]
name = Percona-Release YUM repository - noarch
baseurl = http://repo.percona.com/release/$releasever/RPMS/noarch
enabled = 1
gpgcheck = 0
[percona-release-source]
name = Percona-Release YUM repository - Source packages
baseurl = http://repo.percona.com/release/$releasever/SRPMS
enabled = 0
gpgcheck = 0

Luego, instale el paquete garbd de Percona XtraDB Cluster:

$ yum install Percona-XtraDB-Cluster-garbd-57

Ahora, necesitamos configurar garbd. Para esto, necesitamos editar el archivo /etc/sysconfig/garb:

$ vi /etc/sysconfig/garb
# Copyright (C) 2012 Codership Oy
# This config file is to be sourced by garb service script.
# A comma-separated list of node addresses (address[:port]) in the cluster
GALERA_NODES="192.168.100.192:4567,192.168.100.193:4567"
# Galera cluster name, should be the same as on the rest of the nodes.
GALERA_GROUP="Galera1"
# Optional Galera internal options string (e.g. SSL settings)
# see http://galeracluster.com/documentation-webpages/galeraparameters.html
# GALERA_OPTIONS=""
# Log file for garbd. Optional, by default logs to syslog
# Deprecated for CentOS7, use journalctl to query the log for garbd
# LOG_FILE=""

Cambie el parámetro GALERA_NODES y GALERA_GROUP según la configuración de los nodos de Galera. También debemos eliminar la línea # QUITAR ESTO DESPUÉS DE LA CONFIGURACIÓN antes de iniciar el servicio.

Y ahora, podemos iniciar el servicio de vestimenta:

$ service garb start
Redirecting to /bin/systemctl start garb.service

Ahora, podemos importar el nuevo garbd a ClusterControl.

Vaya a ClusterControl -> Seleccione Clúster -> Agregar equilibrador de carga.

Luego, seleccione la sección Garbd e Importar Garbd.

Aquí solo necesitamos especificar el nombre de host o la dirección IP y el puerto del nuevo Garbd.

La importación de garbd activará un trabajo de ClusterControl que se puede monitorear en la página de trabajos. Una vez completado, puede verificar que garbd se está ejecutando con un ícono de marca verde en la barra superior:

¡Eso es!

¡Nuestro clúster Galera mínimo de dos nodos ya está listo!