MariaDB
 sql >> Base de Dados >  >> RDS >> MariaDB

Como instalar e configurar o MaxScale para MariaDB

Há diferentes motivos para adicionar um balanceador de carga entre seu aplicativo e seu banco de dados. Se você tem alto tráfego (e deseja balancear o tráfego entre diferentes nós de banco de dados) ou deseja usar o load balancer como um único endpoint (portanto, em caso de failover, esse load balancer lidará com esse problema enviando o tráfego para o nó disponível/íntegro.) Também pode ser que você queira usar portas diferentes para gravar e ler dados do seu banco de dados.

Em todos esses casos, um balanceador de carga será útil para você, e se você tiver um cluster MariaDB, uma opção para isso é usar o MaxScale que é um proxy de banco de dados para bancos de dados MariaDB.

Neste blog, mostraremos como instalá-lo e configurá-lo manualmente e como o ClusterControl pode ajudá-lo nessa tarefa. Para este exemplo, usaremos um cluster de replicação MariaDB com 1 nó mestre e 1 nó escravo e CentOS8 como sistema operacional.

Como instalar o MaxScale

Vamos supor que você tenha seu banco de dados MariaDB funcionando e também uma máquina (virtual ou física) para instalar o MaxScale. Recomendamos que você use um host diferente, portanto, em caso de falha do mestre, o MaxScale pode fazer failover para o nó escravo, caso contrário, o MaxScale não poderá executar nenhuma ação se o servidor em que está sendo executado ficar inativo.

Existem diferentes maneiras de instalar o MaxScale, neste caso, usaremos os repositórios MariaDB. Para adicioná-lo ao servidor MaxScale, você deve executar:

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

[info] Repository file successfully written to /etc/yum.repos.d/mariadb.repo

[info] Adding trusted package signing keys...

[info] Successfully added trusted package signing keys

Agora, instale o pacote MaxScale:

$ yum install maxscale

Agora que você tem seu nó MaxScale instalado, antes de começar, você precisa configurá-lo.

Como configurar o MaxScale

Como o MaxScale executa tarefas como autenticação, monitoramento e muito mais, você precisa criar um usuário de banco de dados com alguns privilégios específicos:

MariaDB [(none)]> CREATE USER 'maxscaleuser'@'%' IDENTIFIED BY 'maxscalepassword';

MariaDB [(none)]> GRANT SELECT ON mysql.user TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.db TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.tables_priv TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SELECT ON mysql.roles_mapping TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT SHOW DATABASES ON *.* TO 'maxscaleuser'@'%';

MariaDB [(none)]> GRANT REPLICATION CLIENT on *.* to 'maxscaleuser'@'%';

Lembre-se de que as versões 10.2.2 a 10.2.10 do MariaDB também requerem:

MariaDB [(none)]> GRANT SELECT ON mysql.* TO 'maxscaleuser'@'%';

Agora que você tem o usuário do banco de dados pronto, vamos ver os arquivos de configuração. Ao instalar o MaxScale, o arquivo maxscale.cnf será criado em /etc/. Existem várias variáveis ​​e diferentes formas de configurá-lo, então vamos ver um exemplo:

$ cat  /etc/maxscale.cnf 

# Global parameters

[maxscale]

threads = auto

log_augmentation = 1

ms_timestamp = 1

syslog = 1



# Server definitions

[server1]

type=server

address=192.168.100.126

port=3306

protocol=MariaDBBackend

[server2]

type=server

address=192.168.100.127

port=3306

protocol=MariaDBBackend



# Monitor for the servers

[MariaDB-Monitor]

type=monitor

module=mariadbmon

servers=server1,server2

user=maxscaleuser

password=maxscalepassword

monitor_interval=2000



# Service definitions

[Read-Only-Service]

type=service

router=readconnroute

servers=server2

user=maxscaleuser

password=maxscalepassword

router_options=slave

[Read-Write-Service]

type=service

router=readwritesplit

servers=server1

user=maxscaleuser

password=maxscalepassword



# Listener definitions for the services

[Read-Only-Listener]

type=listener

service=Read-Only-Service

protocol=MariaDBClient

port=4008

[Read-Write-Listener]

type=listener

service=Read-Write-Service

protocol=MariaDBClient

port=4006

Nesta configuração, temos 2 nós de banco de dados, 192.168.100.126 (Mestre) e 192.168.100.127 (Escravo), como você pode ver na seção Definição de Servidores.

Temos também 2 serviços diferentes, um para somente leitura, onde há o nó escravo, e outro para leitura-gravação, onde há o nó mestre.

Finalmente, temos 2 ouvintes, um para cada serviço. O listener somente leitura, escutando na porta 4008, e o read-write escutando na porta 4006.

Este é um arquivo de configuração básico. Se você precisar de algo mais específico, pode seguir a documentação oficial do MariaDB.

Agora você está pronto para iniciá-lo, então basta executar:

$ systemctl start maxscale.service

E verifique:

$ maxctrl list services
ff
$ maxctrl list servers

Você pode encontrar uma lista de comandos maxctrl aqui, ou você pode até usar maxadmin para gerenciá-lo.

Agora vamos testar a conexão. Para isso, você pode tentar acessar seu banco de dados usando o endereço IP MaxScale e a porta que deseja testar. No nosso caso, o tráfego na porta 4006 deve ser enviado para o servidor1 e o tráfego na porta 4008 para o servidor2.

$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4006 -e 'SELECT @@hostname;'

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

| @@hostname |

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

| server1   |

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

$ mysql -h 192.168.100.128 -umaxscaleuser -pmaxscalepassword -P4008 -e 'SELECT @@hostname;'

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

| @@hostname |

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

| server2   |

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

Funciona!

Como implantar MaxScale com ClusterControl

Vamos ver agora, como você pode usar o ClusterControl para simplificar essa tarefa. Para isso, vamos supor que você tenha seu cluster MariaDB adicionado ao ClusterControl.

Vá para ClusterControl -> Selecione o cluster MariaDB -> Cluster Actions -> Add Load Balancer -> MaxScale.

Aqui você pode implantar um novo nó MaxScale ou também importar um nó existente 1. Se você estiver implantando, precisará adicionar o endereço IP ou o nome do host, as credenciais MaxScale de administrador e usuário, quantidade de threads e portas (gravação e somente leitura). Você também pode especificar qual nó de banco de dados deseja adicionar à configuração MaxScale.

Você pode monitorar a tarefa na seção ClusterControl Activity. Quando terminar, você terá um novo nó MaxScale em seu cluster MariaDB.

E executando os comandos MaxScale da interface do usuário do ClusterControl sem a necessidade de acessar o servidor via SSH.

Parece mais fácil do que implantá-lo manualmente, certo?

Conclusão

Ter um Load Balancer é uma boa solução se você deseja balancear ou dividir seu tráfego, ou mesmo para ações de failover, e o MaxScale, como produto MariaDB, é uma boa opção para bancos de dados MariaDB.

A instalação é fácil, mas a configuração e o uso podem ser difíceis se for algo novo para você. Nesse caso, você pode usar o ClusterControl para implantá-lo, configurá-lo e gerenciá-lo de maneira mais fácil.