Balanceador de carga para MariaDB con Galera

· 5min · linux

Introducción

En esta entrada vamos a ver cómo instalar y configurar un balanceador de carga para MariaDB con Galera.

Nodos del Cluster

Balanceador de carga

Para balancear la carga de los nodos del clúster de MariaDB con Galera, vamos a usar un balanceador de carga.

Instalación de repositorios automática

curl -LsS https://downloads.mariadb.com/MariaDB/mariadb_repo_setup | sudo bash

Instalación de Mariadb MaxScale

Para ello vamos a usar el balanceador de carga MaxScale de MariaDB.

sudo apt update
sudo apt install maxscale

Creación del usuario para MaxScale

Para ello vamos a crear un usuario en el nodo 1 del clúster de MariaDB con Galera.

mysql -u root -p
CREATE USER 'maxscale'@'%' IDENTIFIED BY 'maxscale_pw';
GRANT SELECT ON mysql.user TO 'maxscale'@'%';
GRANT SELECT ON mysql.db TO 'maxscale'@'%';
GRANT SELECT ON mysql.tables_priv TO 'maxscale'@'%';
GRANT SELECT ON mysql.columns_priv TO 'maxscale'@'%';
GRANT SELECT ON mysql.procs_priv TO 'maxscale'@'%';
GRANT SELECT ON mysql.proxies_priv TO 'maxscale'@'%';
GRANT SELECT ON mysql.roles_mapping TO 'maxscale'@'%';
GRANT SHOW DATABASES ON *.* TO 'maxscale'@'%';
FLUSH PRIVILEGES;

Creación del la cuenta de usuario de la bbdd para MaxScale

CREATE USER 'usuario_cliente'@'192.168.1.84' IDENTIFIED BY 'my_secret_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON *.* TO 'usuario_cliente'@'192.168.1.84';
FLUSH PRIVILEGES;

Ojo con el la contraseña y la ip del nodo de MaxScale

Creación del usuario monitor

CREATE USER 'monitor_user'@'%' IDENTIFIED BY 'my_password';
FLUSH PRIVILEGES;

Ojo con la contraseña del usuario de monitor

Configuración de MaxScale

Para ello editamos el fichero de configuración de MaxScale

sudo nano /etc/maxscale.cnf

Contenido del fichero de configuración

[maxscale]
threads=auto
admin_enabled=1
admin_auth=1
admin_gui=1
admin_host=0.0.0.0
admin_port=8989
admin_secure_gui=false

[dbserv1]
type=server
address=192.168.1.81
port=3306

[dbserv2]
type=server
address=192.168.1.82
port=3306

[dbserv3]
type=server
address=192.168.1.83
port=3306

[Galera-Monitor]
type=monitor
module=galeramon
servers=dbserv1, dbserv2, dbserv3
user=monitor_user
password=my_password
monitor_interval=2000ms

[Read-Write-Service]
type=service
router=readconnroute
router_options=synced,master,slave
servers=dbserv1, dbserv2, dbserv3
user=maxscale
password=maxscale_pw

[RW_Listener]
type=listener
service=Read-Write-Service
protocol=MariaDBClient
port=3306

Arranque del servicio

sudo systemctl start maxscale

Verificación del estado del servicio

sudo systemctl status maxscale

Acceso al panel de administración

Para acceder al panel de administración de MaxScale, abre un navegador y accede a la siguiente URL: http://192.168.1.84:8989/

Con el usuario y contraseña: admin/mariadb

Instalación del cliente de MariaDB

sudo apt update
sudo apt install mariadb-client

Verificación con el cliente de MariaDB

sudo mariadb --protocol=TCP  \
--host=192.168.1.84   \
--port=3306   \
--user=usuario_cliente   \
--skip-ssl \
--password

Mete la contraseña del usuario cliente que has creado anteriormente: my_secret_password

SHOW DATABASES;

Verificación del estado del MAXSCALE

sudo maxctrl list services --user=admin --password=mariadb
sudo maxctrl list servers --user=admin --password=mariadb
sudo maxctrl list listeners --user=admin --password=mariadb

Creación de un nuevo usuario de MaxScale

sudo maxctrl create user miadmin SuContrasegna123 --type=admin --user=admin --password=mariadb

Verificación del nuevo usuario de MaxScale

sudo maxctrl list users --user=admin --password=mariadb

Cambio de contraseña del usuario de MaxScale

sudo maxctrl alter user admin MiNuevaContrasegna123 --user=admin --password=mariadb

Eliminación del usuario de MaxScale

sudo maxctrl destroy user admin --user=admin --password=mariadb