CentOS 5.8 - MySQL Cluster 7.1 + HAProxy

Neste presente artigo, vou abordar a configuração do MySQL Cluster para se obter alta disponibilidade, e também o
HAProxy, para balancear toda carga deste mesmo banco de dados.

[ Hits: 38.934 ]

Por: evandro matos couto em 10/04/2012


Introdução



Toda esta configuração será realizada no CentOS 5.8 i386.

Lembrando que para este artigo, será necessário ter no mínimo 6 Servidores.

O que é MySQL Cluster?

O MySQL Cluster é uma tecnologia de bancos de dados que mantém os dados em memória, e que tem como base, não compartilhar recursos entre processos (shared nothing).

Quando se diz que os componentes do Cluster não compartilham nada, significa dizer que cada processo possui seus próprios discos, memória, processador, e não utilizam nenhuma estratégia de armazenamento compartilhado de dados:  SAN, NFS, servidores de arquivos e etc

Em sua arquitetura, o MySQL Cluster apresenta basicamente 3 tipos de componentes:

- Management Nodes: estes são os nós, ou nodos, que são utilizados pelos administradores de bancos de dados para desempenhar tarefas de gerenciamento do MySQL Cluster;

- Data ou Storage Node: este tipo de nó é responsável por armazenar e processar dados, com uma série de outros componentes que veremos mais à frente;

- SQL ou API Node: nós responsáveis por fazer interface com o meio externo, recebendo todas as consultas SQL e enviando requisições para os Data Nodes.

Passo inicial

O passo inicial é a criação do arquivo de configuração global, para que os componentes o leia e inicie o Cluster.

Tais arquivos podem ser globais ou locais, de maneira que configurações gerais são colocadas nas seções do arquivo globais e especificas, nos arquivos locais.

O primeiro passo, é a criação do arquivo global (chamado por convenção de "config.ini"), o qual será lido por todas os componentes do Cluster via rede, para que estes se unam em um mesmo processamento distribuído.

Perceba que, ao tratarmos dos Data Nodes, Management Nodes e SQL Nodes, utilizamos os nomes de seus binários: 'ndbd' ou 'ndbmtd', 'ndb_mgmd' e 'sql', que é o 'mysqld', respectivamente.

Um arquivo de configuração global, para controle da configuração do MySQL Cluster, conta com a seguinte estrutura de seções (mais comuns):
  • [ndb_mgmd] - mgm nodes
  • [ndbd default] - global p/ data nodes
  • [ndbd] - específico p/ data nodes
  • [mysqld] - espacífico p/ sql nodes
  • [api] - sql nodes ou cluster APIs

Durante o funcionamento do MySQL Cluster, cada nó atuará como um 'árbitro', enviando pequenos 'pings' para verificar se todos os nós estão respondendo - Heartbeat.

Um nó será considerado como morto após a perda de três 'pings', também conhecidos como Heartbeats. Tais 'pings' são configurados através das seguintes variáveis:
  • HeartbeatIntervalDbDb: o tempo entre o envio de pings entre os Data Nodes;
  • HeartbeatIntervalDbApi: o tempo entre o envio de pings entre Data Nodes e SQL Nodes.

A configuração dos Data Nodes, se dá dentro de grupos e a variável NoOfReplicas define a quantidade de grupos que existirá dentro do Cluster e também a quantidade de partições de dados.

Se NoOfReplicas for configurado com o número 2, e teremos 2 Data Nodes no Cluster, teremos 2 grupos de Data Nodes.

Em caso de falha, pelo menos 50% dos nós em cada grupo deverá estar 'vivo' para que o Cluster não desista da operação.

- Recursos de Tecnologia que será utilizado neste How-To
  • 6 máquinas virtuais rodando Sistema Operacional Centos na versão 5.8;
  • Heartbeat 2.1;
  • Haproxy 1.4.19;

- Servidores:
  • 1. mgm-1 eth0 -> 192.168.50.1 (MGM) - mgm-1 eth1 -> 10.20.0.1(MGM)
  • 2. mgm-2 eth0 -> 192.168.50.11(MGM) - mgm-2 eth1 -> 10.20.0.2(MGM)
  • 3. ndb-1 -> 192.168.50.12(NDB)
  • 4. ndb-2 -> 192.168.50.13(NDB)
  • 5. sql-1 -> 192.168.50.14(SQL)
  • 6. sql-2 -> 192.16850.15(SQL)

Download, Instalação e Configuração dos Pacotes

- Passo 1:

No servidor 'mgm-1' crie o "/opt/pacotes", e em seguida, faça o download dos pacotes necessários para o Cluster:

# mkdir -p /opt/pacotes
# wget ftp://mirror.switch.ch/pool/1/mirror/mysql/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-shared-compat-7.1.15-1.rhel5.i386.rpm
# wget ftp://mirror.switch.ch/pool/1/mirror/mysql/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-server-7.1.15-1.rhel5.i386.rpm
# wget ftp://mirror.switch.ch/pool/1/mirror/mysql/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-client-7.1.15-1.rhel5.i386.rpm
# wget ftp://mirror.switch.ch/pool/1/mirror/mysql/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-tools-7.1.15-1.rhel5.i386.rpm
# wget ftp://mirror.switch.ch/pool/1/mirror/mysql/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-storage-7.1.15-1.rhel5.i386.rpm
# wget ftp://mirror.switch.ch/pool/1/mirror/mysql/Downloads/MySQL-Cluster-7.1/MySQL-Cluster-gpl-management-7.1.15-1.rhel5.i386.rpm
# wget http://dl.fedoraproject.org/pub/epel/5/i386/haproxy-1.3.26-1.el5.i386.rpm


- Passo 2:

Neste passo, instale o pacote Heartbeat no servidores 'mgm-1' e 'mgm-2':

# yum install heartbeat

- Passo 3:

Copie o diretório "/opt/pacotes" para os outros servidores:

# for server in 11 12 13 14 15 ; do scp -r /opt/pacotes/ root@192.168.50.$server:/opt/ ; done

- Passo 4:

Ainda no servidor 'mgm-1', edite o arquivo "/etc/hosts" conforme o exemplo abaixo:

# vim /etc/hosts

192.168.50.10   mgm-1.local     mgm-1
192.168.50.11   mgm-2.local     mgm-2
192.168.50.12   ndb-1.local     ndb-1
192.168.50.13   ndb-2.local     ndb-2
192.168.50.14   sql-1.local     sql-1
192.168.50.15   sql-2.local     sql-2


- Passo 5

Copie o arquivo "/etc/hosts" para os outros servidores do Cluster:

# for server in 11 12 13 14 15 ; do scp -r /etc/hosts root@192.168.50.$server:/etc/ ; done


Continua na página 2.
    Próxima página

Páginas do artigo
   1. Introdução
   2. Instalação do servidor MGM
   3. Instalação dos Nodes de NDB
   4. Instalação dos Nodes SQL's
   5. Configuração
   6. Armazenamento
   7. Backup e Restore
   8. Restore MySQLdump
   9. Instalando e Configurando o HAProxy – Load Balance
Outros artigos deste autor

Alta disponibilidade: CentOS 6 - configurando os pacotes DRBD com gfs2 - parte 1

Quota - Criando e administrando no CentOS

Docker Linux Container - Open vSwitch Containers - Múltiplos Servidores

Instalação do Nagios Core no CentOS 5.5

Clonagem de HDs com o PHANTOM & UDPCAST no CentOS

Leitura recomendada

Data, hora e timezone em sistemas GNU-Linux

Instalando o meu primeiro Debian com dual boot a partir do Windows

Introdução ao Linux: O editor de texto Nano

Diário de um SysAdmin 1 - Truques | Macetes | Atalhos & Comandos

10 dicas para aprender a programar por conta própria

  
Comentários
[1] Comentário enviado por jorgeantonyo em 19/01/2016 - 16:42h

Como você realizou a configuração do haproxy com mysql ?


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts