sql >> Base de Datos >  >> RDS >> MariaDB

Implementación de MySQL Galera Cluster 4.0 en Amazon AWS EC2

Galera Cluster es una de las soluciones de alta disponibilidad más populares para MySQL. Es un clúster prácticamente síncrono, lo que ayuda a mantener bajo control el retraso de la replicación. Gracias al control de flujo, el clúster de Galera puede acelerarse a sí mismo y permitir que más nodos cargados alcancen al resto del clúster. El lanzamiento reciente de Galera 4 trajo nuevas características y mejoras. Los cubrimos en una publicación de blog sobre MariaDB 10.4 Galera Cluster y una publicación de blog sobre las funciones existentes y futuras de Galera 4.

¿Cómo funciona Galera 4 cuando se usa en Amazon EC2? Como probablemente sepa, Amazon ofrece servicios de bases de datos relacionales, que están diseñados para proporcionar a los usuarios una manera fácil de implementar una base de datos MySQL de alta disponibilidad. Mi colega, Ashraf Sharif, comparó los tiempos de conmutación por error para RDS MySQL y RDS Aurora en su publicación de blog. Los tiempos de conmutación por error para Aurora se ven muy bien, pero hay peros. En primer lugar, está obligado a utilizar RDS. No puede implementar Aurora en las instancias que administra. Si las características y opciones existentes disponibles en Aurora no son suficientes para usted, no tiene otra opción que implementar algo por su cuenta. Aquí entra Galera. Galera, a diferencia de Aurora, no es una caja negra propietaria. Por el contrario, es un software de código abierto, que se puede usar libremente en todos los entornos compatibles. Puede instalar Galera Cluster en AWS Elastic Computing Cloud (EC2) y, a través de eso, crear un entorno de alta disponibilidad donde la conmutación por error sea casi instantánea:tan pronto como pueda detectar la falla del nodo, puede volver a conectarse al otro nodo de Galera. ¿Cómo se implementa Galera 4 en EC2? En esta publicación de blog, lo analizaremos y le proporcionaremos una guía paso a paso que muestra cuál es la forma más sencilla de lograrlo.

Implementación de un clúster Galera 4 en EC2

El primer paso es crear un entorno que usaremos para nuestro clúster de Galera. Iremos con máquinas virtuales Ubuntu 18.04 LTS.

Iremos con el tamaño de instancia t2.medium para el propósito de este blog correo. Debe escalar sus instancias en función de la carga esperada.

Vamos a implementar tres nodos en el clúster. ¿Por qué tres? Tenemos un blog que explica cómo Galera mantiene una alta disponibilidad.

Vamos a configurar el almacenamiento para esas instancias.

También elegiremos el grupo de seguridad adecuado para los nodos. De nuevo, en nuestro caso el grupo de seguridad es bastante abierto. Debe asegurarse de que el acceso sea lo más limitado posible:solo los nodos que tienen que acceder a las bases de datos deben poder conectarse a ellas.

Finalmente, elegimos un par clave existente o creamos uno nuevo. Después de este paso, se lanzarán nuestras tres instancias.

Una vez que están arriba, podemos conectarnos a ellos a través de SSH y comenzar a configurar la base de datos.

Decidimos usar la convención de nomenclatura 'nodo1, nodo2, nodo3', por lo tanto, tuvimos que editar /etc/hosts en todos los nodos y enumerarlos junto con sus respectivas direcciones IP locales. También hicimos el cambio en /etc/hostname para usar el nuevo nombre para los nodos. Cuando haya terminado, podemos comenzar a configurar nuestro clúster de Galera. En el momento de escribir este artículo, el único proveedor que ofrece la versión GA de Galera 4 es MariaDB con su versión 10.4, por lo que usaremos MariaDB 10.4 para nuestro clúster. Vamos a proceder con la instalación utilizando las sugerencias y guías del sitio web de MariaDB.

Implementación de un clúster de MariaDB 10.4 Galera

Comenzaremos con la preparación de repositorios:

wget https://downloads.mariadb.com/MariaDB/mariadb_repo_setup

bash ./mariadb_repo_setup

Descargamos el script que está diseñado para configurar los repositorios y lo ejecutamos para asegurarnos de que todo esté configurado correctamente. Esto configuró los repositorios para usar la última versión de MariaDB, que, en el momento de escribir este artículo, es la 10.4.

[email protected]:~# apt update

Hit:1 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic InRelease

Hit:2 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-updates InRelease

Hit:3 http://eu-central-1.ec2.archive.ubuntu.com/ubuntu bionic-backports InRelease

Hit:4 http://downloads.mariadb.com/MariaDB/mariadb-10.4/repo/ubuntu bionic InRelease

Ign:5 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic InRelease

Hit:6 http://downloads.mariadb.com/Tools/ubuntu bionic InRelease

Hit:7 http://downloads.mariadb.com/MaxScale/2.4/ubuntu bionic Release

Hit:8 http://security.ubuntu.com/ubuntu bionic-security InRelease

Reading package lists... Done

Building dependency tree

Reading state information... Done

4 packages can be upgraded. Run 'apt list --upgradable' to see them.

Como puede ver, se han configurado repositorios para MariaDB 10.4 y MaxScale 2.4. Ahora podemos continuar e instalar MariaDB. Lo haremos paso a paso, nodo a nodo. MariaDB proporciona una guía sobre cómo debe instalar y configurar el clúster.

Necesitamos instalar paquetes:

apt-get install mariadb-server mariadb-client galera-4 mariadb-backup

Este comando instala todos los paquetes necesarios para ejecutar MariaDB 10.4 Galera. MariaDB crea un conjunto de archivos de configuración. Agregaremos uno nuevo, que contendría todas las configuraciones requeridas. De forma predeterminada, se incluirá al final del archivo de configuración, por lo que se sobrescribirán todas las configuraciones anteriores para las variables que establezcamos. Idealmente, después, editaría los archivos de configuración existentes para eliminar las configuraciones que pusimos en galera.cnf para evitar confusiones donde se configura la configuración dada.

[email protected]:~# cat /etc/mysql/conf.d/galera.cnf

[mysqld]

bind-address=10.0.0.103

default_storage_engine=InnoDB

binlog_format=row

innodb_autoinc_lock_mode=2



# Galera cluster configuration

wsrep_on=ON

wsrep_provider=/usr/lib/galera/libgalera_smm.so

wsrep_cluster_address="gcomm://10.0.0.103,10.0.0.130,10.0.0.62"

wsrep_cluster_name="Galera4 cluster"

wsrep_sst_method=mariabackup

wsrep_sst_auth='sstuser:pa55'



# Cluster node configuration

wsrep_node_address="10.0.0.103"

wsrep_node_name="node1"

Cuando la configuración esté lista, podemos comenzar.

[email protected]:~# galera_new_cluster

Esto debería iniciar el nuevo clúster en el primer nodo. A continuación, debemos proceder con pasos similares en los nodos restantes:instalar los paquetes necesarios y configurarlos teniendo en cuenta que la IP local cambia, por lo que debemos cambiar el archivo galera.cnf en consecuencia.

Cuando los archivos de configuración estén listos, debemos crear un usuario que se usará para la transferencia de estado de instantánea (SST):

MariaDB [(none)]> CREATE USER 'sstuser'@'localhost' IDENTIFIED BY 'pa55';

Query OK, 0 rows affected (0.022 sec)

MariaDB [(none)]> GRANT PROCESS, RELOAD, LOCK TABLES, REPLICATION CLIENT ON *.* TO 'sstuser'@'localhost';

Query OK, 0 rows affected (0.022 sec)

Deberíamos hacer eso en el primer nodo. Los nodos restantes se unirán al clúster y recibirán una instantánea de estado completo para que el usuario sea transferido a ellos. Ahora lo único que tenemos que hacer es iniciar los nodos restantes:

[email protected]:~# service mysql start

[email protected]:~# service mysql start

y verifique que efectivamente se haya formado el clúster:

MariaDB [(none)]> show global status like 'wsrep_cluster_size';

+--------------------+-------+

| Variable_name      | Value |

+--------------------+-------+

| wsrep_cluster_size | 3     |

+--------------------+-------+

1 row in set (0.001 sec)

Todo está bien, el clúster está activo y consta de tres nodos de Galera. Logramos implementar MariaDB 10.4 Galera Cluster en Amazon EC2.