LINUX

Cómo configurar Mariadb Maxscale Master-Slave con Galera Cluster

En este artículo instalaremos el clúster MariaDB galera con la base de datos proxy MaxScale de MariaDB corporation. MaxScale es una base de datos proxy inteligente que puede enrutar las declaraciones de la base de datos desde el clúster a un servidor. Pero a diferencia de HAproxy, MaxScale usa E / S asincrónica del kernel de Linux, lo que debería ayudar con el rendimiento.

El clúster que vamos a hacer tendrá división de lectura y escritura, lo que significa que todas las escrituras se realizan en maestro por MaxScale, y las replica en todos los nodos donde se pueden leer.

En este artículo usamos node-01 como maestro y node-02 / node-03 como esclavos. Node-04 será nuestra máquina central maxscale.

Clúster maestro esclavo Mariadb Maxscale

Características principales de maxscale

a) Si falla algún servidor de base de datos, la conexión se creará automáticamente a otro nodo
B) Las conexiones se pueden agregar o eliminar dinámicamente de la sesión
C) Maxscale enrutará la solicitud del cliente a la cantidad de servidores de base de datos

Instalación del clúster

Lo primero es configurar su archivo de host con nombres de host e ips privados de todos sus hosts. Esto es necesario para que pueda hacer que sus nodos se comuniquen a través de IP privadas y evitar la necesidad de cifrar el tráfico. Aquí está mi archivo de hosts (/ etc / hosts) en los 4 servidores:

10.132.84.235 node-01 node-01
10.132.86.222 node-02 node-02
10.132.19.195 node-03 node-03
10.132.53.122 node-04 node-04

Los primeros tres serán para el clúster Galera y el cuarto para el proxy MaxScale.

Agreguemos la clave para el repositorio MariaDB en los primeros 3 servidores

apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8

Luego agregaremos repositorio para arquitecturas x86 y POWER little endian, el paquete se instalará de acuerdo con su arco.

add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://nyc2.mirrors.digitalocean.com/mariadb/repo/10.2/ubuntu xenial main'

Actualizar la lista de fuentes

apt update

Y luego instala el mariadb

apt install mariadb-server rsync

Configurar y construir el clúster

A continuación, debemos editar los archivos de configuración y crear el clúster. El nodo-01 será el nodo para el arranque del clúster y otros nodos se unirán a este. Entonces, primero editemos los archivos de configuración en los tres nodos.

nano /etc/mysql/my.cnf

Allí tenemos que encontrar [galera] sección y cambie estas líneas:

[galera]
# Mandatory settings
wsrep_on=ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name="linoxide-cluster"
wsrep_cluster_address="gcomm://node-01,node-02,node-03"

binlog_format=row
default_storage_engine=InnoDB
innodb_autoinc_lock_mode=2
#
# Allow server to accept connections on all interfaces.
#
bind-address=0.0.0.0
#
wsrep_sst_method=rsync

wsrep_node_address="10.132.84.235"
wsrep_node_name="node-01"

Las dos últimas líneas deben tener la dirección y el nombre de host del nodo actual, por lo que este es el archivo del nodo-01. En cada nodo, esas dos líneas deben cambiarse en consecuencia, mientras que otras líneas pueden ser iguales.

Una vez hecho esto, debemos iniciar el clúster. Si el servidor de la base de datos se está ejecutando por casualidad, deténgalo en los tres nodos.

systemctl stop mysql

En la primera ejecución del nodo:

galera_new_cluster

En los otros dos nodos

systemctl start mysql

De vuelta en el primer nodo, necesitamos establecer la contraseña, por lo que ejecutaremos

mysql_secure_installation

Después de ejecutar ese script, puede escribir este comando en cualquier nodo

mysql -u root -p -e "SHOW STATUS LIKE 'wsrep_cluster_size'"

Debería darte una salida similar a esta

Trabajo en clúster

Instalación de MaxScale Proxy y preparación del clúster

Cuando tengamos el clúster en funcionamiento, podemos recurrir al nodo-04 para instalar MaxScale en él. MaxScale solo es compatible con la arquitectura x86_64 por ahora. Vamos a descargar el paquete deb maxscale con wget

wget https://downloads.mariadb.com/MaxScale/2.0.1-oct27/ubuntu/dists/xenial/main/binary-amd64/maxscale-2.0.1-2.ubuntu.xenial.x86_64.deb

A continuación instalaremos la dependencia

apt install libcurl3

Y luego istall MaxScale

dpkg -i maxscale-2.0.1-2.ubuntu.xenial.x86_64.deb

Maxscale ha sido instalado ahora necesitamos ingresar nuevamente el indicador de mysql en nuestro clúster de Galera para hacer que maxscale sea usuario y otorgarle suficientes privilegios para que maxscale funcione.

mysql -u root -p

Y en el indicador de mysql escriba esta línea por línea

CREATE USER 'maxscale'@'%' IDENTIFIED BY 'you-password-here';
Query OK, 0 rows affected (0.00 sec)

GRANT SELECT ON mysql.db TO 'maxscale'@'%';
Query OK, 0 rows affected (0.01 sec)

GRANT SELECT ON mysql.user TO 'maxscale'@'%';
Query OK, 0 rows affected (0.01 sec)

GRANT SHOW DATABASES ON *.* TO 'maxscale'@'%';
Query OK, 0 rows affected (0.01 sec)

Configuración de MaxScale

Vamos a explicar cómo funciona este archivo de configuración. Primera parte debajo [maxscale] establecerá respectivamente el número de subprocesos de la CPU en 4, desactivará el registro en / var / log / syslog, activará el registro en / var / log / maxscale, activará la advertencia de registro, registrará en la memoria y los avisos de registro, y desactivará la información de registro y Opciones de desarrollador de registro para depurar el código.

La siguiente sección importante es [Galera Monitor]. Allí tenemos que concentrarnos en varias líneas. La linea que dice servidores = deben llenarse con los nombres de los servidores. Este no es el nombre de host, así es como MaxScale nombra a los servidores en este archivo de configuración más abajo. En nuestro caso, estableceremos server1 en server3. El usuario es el nombre de usuario que creamos en la sección anterior, maxscale en nuestro caso. La contraseña es lo que establezca como contraseña para el usuario de maxscale. Galera Monotor elegirá un nodo como maestro y otros como esclavo (de nuestros tres nodos). El nodo con WSREP_LOCAL_INDEX más bajo se seleccionará como maestro. Si cambia la configuración del clúster, puede ocurrir la nueva selección y el nodo con un índice más bajo se seleccionará como maestro. Si no desea que el maestro cambie de esta manera, puede usar la opción disable_master_failback y establecerla en 1 como en nuestro archivo de configuración. De esta manera, el maestro no cambiará incluso si un nuevo nodo con un índice más bajo se une al clúster.

Luego pasamos a la siguiente sección importante que es [RW Split Router]. Aquí ingresamos nuevamente los nombres de tres servidores y el mismo usuario y contraseña que el [Galera Monitor] sección.

Por último, necesitamos editar esos tres servidores e ingresar los nombres por los que MaxScale los verá y las direcciones IP que usará para comunicarse con ellos. Los nombres serán [server1][server2] y [server3], y para ip usaremos direcciones IP privadas para evitar tener que encriptar el tráfico.

Ahora en el servidor de maxscale, que es el nodo-04, vamos a configurar e iniciar la base de datos del proxy de maxscale. Primero configuremos el ufw para permitir conexiones en los puertos necesarios.

ufw allow 6603
ufw allow 4442

Luego haga una copia de seguridad del archivo de configuración

mv /etc/maxscale.cnf /etc/maxscale.cnf.bk

Después de que el archivo haya sido respaldado y movido, creemos un nuevo archivo desde cero.

nano /etc/maxscale.cnf

Allí, puede usar esto como esqueleto para la configuración, excepto que, por supuesto, debe cambiar las partes en negrita:

[maxscale]
threads=4
syslog=0
maxlog=1
log_to_shm=1
log_warning=1
log_notice=1
log_info=0
log_debug=0

[Galera Monitor]
type=monitor
module=galeramon
servers=server1,server2,server3
user=maxscale
passwd=you-password-here
monitor_interval=2000
disable_master_failback=1
available_when_donor=1

[qla]
type=filter
module=qlafilter
options=/tmp/QueryLog

[fetch]
type=filter
module=regexfilter
match=fetch
replace=select

[RW Split Router]
type=service
router=readwritesplit
servers=server1,server2,server3
user=maxscale
passwd=you-password-here
max_slave_connections=100%
max_slave_replication_lag=30

[CLI]
type=service
router=cli

[RW Split Listener]
type=listener
service=RW Split Router
protocol=MySQLClient
port=3306

[CLI Listener]
type=listener
service=CLI
protocol=maxscaled
address=127.0.0.1
port=6603

[server1]
type=server
address=10.132.84.235
port=3306
protocol=MySQLBackend

[server2]
type=server
address=10.132.86.222
port=3306
protocol=MySQLBackend

[server3]
type=server
address=10.132.19.195
port=3306
protocol=MySQLBackend

Una vez guardado esto, puede iniciar el servicio maxscale

systemctl start maxscale.service

Y prueba si está funcionando

maxadmin -pmariadb list servers

servidores de lista maxadmin

Conclusión

Hemos instalado con éxito la base de datos proxy MaxScale como balanceador de carga para nuestro clúster Galera que se ejecuta en 3 nodos Ubuntu 16.04 con un cuarto nodo para MaxScale. MaxScale es una buena solución para clústeres grandes, hoy hicimos la configuración más pequeña posible, pero es posible escalar desde aquí. Espero que ese artículo te haya sido útil para presentarte con la configuración de MaxScale, que para leer y que tengas un buen día.

Publicaciones relacionadas

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Botón volver arriba
Cerrar