Cluster Galera MariaDB na Amazon AWS

Cluster MariaDB – Galera

O objetivo desse tutorial é construir um Cluster MariaDB com Galera na Amazon AWS.

Ao lidarmos com banco de dados de produção, é extramente importante ter um procedimento de replicação. A replicação permite que os dados sejam transferidos para outros nó’s automaticamente.

Geralmente são utilizados tipos de replicações chamadas de Master/Slave, isso permite que você tenha um servidor Master para lidar com todas as gravações, enquanto o outro servidor Slave possa ser utilizado para somente leitura dos dados.

Embora a replicação Master/Slave seja útil, não é tão flexível quanto a replicação Master/Master. Em uma configuração Master/Master, cada nó é capaz de aceitar gravações e distribuí-las por todo o Cluster.

O MariaDB (Versões novas) possui nativamente o conjunto de patch’s que fornece a replicação Master/Master síncrona.

Neste artigo, estaremos criando um Cluster Galera usando instâncias EC2 do Ubuntu 16.04 na Amazon AWS.

Toda configuração será realizado através das infra ágil. Será necessário que você tenha o mínimo de conhecimento nas ferramentas de configuração (Ansible – Terraform) e de versionamento (Git/GitHub).

No GitHub tem o README do projeto, basta seguir os passos conforme o exemplo que se encontra lá.

Link do projeto:
https://github.com/vandocouto/MariaDB-Galera

Projeto

## Project clone

$ git clone https://github.com/vandocouto/MariaDB-Galera.git

##Configure the keys file
step 1 – Create directory (chave)

$ cd MariaDB-Galera/
$ mkdir chave

step 2 – Move the .pem key into the key directory, file permission should be 400

cd chave/
$ ls -ltr
total 4
-r-------- 1 evandrocouto evandrocouto 1692 Abr  7 12:32 Blog-Estudo.pem

## Script deploy.sh
Step 1 – Inform AWS Access Key and AWS Secret Key

cd ../
$ vim terraform/deploy.sh 

##### Need full access on EC2

export AWS_ACCESS_KEY_ID=""
export AWS_SECRET_ACCESS_KEY=""

## Deploy infrastructure
##### Need to install Terraform and Ansible

Step 1 – Adjust the variable file

$ vim terraform/default/variables.tf

Step 2 – After tuning, run the command below

 ./deploy.sh default plan

Step 2 – Building the Infrastructure

 ./deploy.sh default apply

#### Output
Will be displayed the IP’s and Load Balance post construction

Outputs:

Private IP = 10.0.0.8,10.0.3.238,10.0.1.220
Public IP = 34.203.229.66,54.236.17.153,54.91.250.110
lb_address = internal-MariaDBGalera-1689159607.us-east-1.elb.amazonaws.com

## Running the playbook

Step 1 – Configuring the hosts file

$ vim ansible/hosts

Example:
##### Set as below (First public ip and private ip should be the manager)

[galera]
34.203.229.66
54.236.17.153
54.91.250.110

[manager]
34.203.229.66

[node]
54.236.17.153
54.91.250.110

[all:children]
galera
manager
node

[all:vars]
manager_ip=10.0.0.8
node1_ip=10.0.3.238
node2_ip=10.0.1.110
root_db_password=pass
ansible_ssh_user=ubuntu
ansible_ssh_private_key_file=../chave/Blog-Estudo.pem

Step 2 – Run the playbook

$ ANSIBLE_HOST_KEY_CHECKING=False ansible-playbook -i hosts tasks/main.yml

### Access the instances and enter mysql with the user root and password pass

$ mysql -u root -ppass

Or

mysql -u root -ppass -e "show status like 'wsrep_cluster_size'"

If everything is correct, it should contain the value 3

+--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| wsrep_cluster_size | 3     |
+--------------------+-------+
Cluster Galera MariaDB na Amazon AWS
Tagged on:     

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: