Como Configurar um Site WordPress Altamente Disponível do Zero, Parte 6: MariaDB Multi-Master

Nesta série de tutoriais, estamos a construir um site WordPress altamente disponível a partir do zero. Se ainda não seguiste as partes anteriores, não percas a oportunidade de adquirir conhecimento valioso!

Hoje, vamos dar continuidade à nossa jornada de configuração, utilizando o Gluster para facilitar a instalação do MariaDB.

A Revolução do Galera Cluster no MariaDB

Vamos explorar a magia do Galera Cluster da MariaDB! Este sistema inovador garante que todos os três nós estejam sempre em sincronia, permitindo que qualquer alteração, seja um novo post no node1 ou um comentário no node2, seja imediatamente refletida em todos os nós. É a verdadeira definição de alta disponibilidade!

Estado Atual do Gluster:

Bash
root@node1:/gluster/www.homeserver.pt# cd /gluster/
root@node1:/gluster# ll
total 13
drwxrwxrwx 5 root root 4096 Mar 2 19:13 .
drwxr-xr-x 21 root root 4096 Mar 2 19:09 ..
-rw-r--r-- 1 root root 50 Mar 2 19:11 testfile.txt
drwxrwxr-x 5 www-data adm 4096 Mar 2 19:31 www.homeserver.pt

Dump da Base de Dados no Node 1:
Vamos começar fazendo um dump da nossa base de dados no node1 para garantir que todos os dados sejam copiados para o volume Gluster:

root@node1:/gluster# mysqldump wp > wp.sql

Agora, vamos importar essa base de dados nos nodes 2 e 3:

Bash
mysql wp < /gluster/wp.sql

Preparação para o Galera

É hora de parar o MariaDB em todos os nós:

Bash
servicectl stop mariadb

Configuração do Galera no Node 1:
Criaremos um novo ficheiro de configuração para o Galera:

Bash
[galera]
# Configurações obrigatórias
wsrep_on = ON
wsrep_provider=/usr/lib/galera/libgalera_smm.so
wsrep_cluster_name = "MariaDB Galera Cluster"
wsrep_cluster_address = gcomm://123.456.789.123,456.123.456.789,789.123.456.789
binlog_format = row
default_storage_engine = InnoDB
innodb_autoinc_lock_mode = 2
wsrep_sst_method=rsync

# Permitir conexões em todas as interfaces.
bind-address = 0.0.0.0

Depois de criar este ficheiro, vamos copiá-lo para o Gluster, garantindo que ele esteja disponível em todos os nós:

Bash
cp /etc/mysql/mariadb.conf.d/60-galera.cnf /gluster

Nos nodes 2 e 3, execute:

Bash
cp /gluster/60-galera.cnf /etc/mysql/mariadb.conf.d/

Inicialização do Galera Cluster

Node 1:

Bash
galera_new_cluster

Nos Nodes 2 e 3:

Bash
systemctl start mariadb

Verificando o Tamanho do Cluster:
No Node 1, execute:

SQL
MariaDB [(none)]> SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size";

Deverás ver:

SQL
+--------------+
| cluster size |
+--------------+
| 3            |
+--------------+

Testando a Replicação

Vamos fazer um teste criando uma nova tabela baseada na nossa série de televisão favorita:

SQL
MariaDB [(none)]> use wp;
MariaDB [wp]> create table hogans_heroes ( id integer, rank varchar(15), name varchar(30) );

Agora, vamos adicionar alguns heróis à tabela:

SQL
MariaDB [wp]> insert into hogans_heroes (id, rank, name) values 
( 1, 'Colonel', 'Robert Hogan');

Vamos conferir se os dados foram replicados para o Node 2:

SQL
MariaDB [wp]> select * from hogans_heroes;

Atualizando os Dados

No Node 3, vamos substituir um dos heróis:

SQL
MariaDB [wp]> delete from hogans_heroes where name = 'James Kinchloe';
MariaDB [wp]> insert into hogans_heroes (id,rank,name) values 
( 6,'Sergeant','Richard Baker');

E finalmente, vamos verificar no Node 1 para garantir que a atualização foi replicada:

SQL
MariaDB [wp]> select * from hogans_heroes;

Conclusão

A replicação multi-master do MariaDB Galera está a funcionar na perfeição! O teu site WordPress está agora mais robusto do que nunca, pronto para suportar um tráfego elevado e proporcionar uma experiência inigualável aos utilizadores. Acompanhe-nos na próxima parte onde abordaremos a configuração do DNS Round-Robin e a implementação do Let’s Encrypt para aumentar ainda mais a segurança do teu site.

Artigos Relacionados