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!
- Parte 1 – Introdução, Considerações e Arquitetura
- Parte 2 – Criação dos Containers
- Parte 3 – Ansible e Dependências
- Parte 4 – Gluster
- Parte 5 – Instalação do WordPress
- Parte 6 – MariaDB Multi-Master (este artigo)
- Parte 7 – DNS Round-Robin, Let’s Encrypt, & Conclusão
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:
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:
mysql wp < /gluster/wp.sql
Preparação para o Galera
É hora de parar o MariaDB em todos os nós:
servicectl stop mariadb
Configuração do Galera no Node 1:
Criaremos um novo ficheiro de configuração para o Galera:
[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:
cp /etc/mysql/mariadb.conf.d/60-galera.cnf /gluster
Nos nodes 2 e 3, execute:
cp /gluster/60-galera.cnf /etc/mysql/mariadb.conf.d/
Inicialização do Galera Cluster
Node 1:
galera_new_cluster
Nos Nodes 2 e 3:
systemctl start mariadb
Verificando o Tamanho do Cluster:
No Node 1, execute:
MariaDB [(none)]> SELECT VARIABLE_VALUE as "cluster size" FROM INFORMATION_SCHEMA.GLOBAL_STATUS WHERE VARIABLE_NAME="wsrep_cluster_size";
Deverás ver:
+--------------+
| cluster size |
+--------------+
| 3 |
+--------------+
Testando a Replicação
Vamos fazer um teste criando uma nova tabela baseada na nossa série de televisão favorita:
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:
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:
MariaDB [wp]> select * from hogans_heroes;
Atualizando os Dados
No Node 3, vamos substituir um dos heróis:
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:
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.