Banco de Dados

24 ago, 2017

Cluster MySQL Escalável com Replicação Mestre-Escravo, Balanceador de Carga ProxySQL e Orchestrator

761 visualizações
Publicidade

O MySQL é um dos bancos de dados relacionais de código aberto mais populares, usado por muitos projetos em todo o mundo, incluindo alguns incríveis em larga escala, como Facebook, Twitter, YouTube, etc. Obviamente, esses projetos precisam de um sistema de armazenamento de dados verdadeiramente confiável e altamente disponível para garantir o nível adequado de qualidade de serviço. E a primeira e a principal maneira de obter a maior eficiência do seu armazenamento de dados é configurar clustering de banco de dados para que ele possa processar um grande número de solicitações simultaneamente e permanecer funcional em condições de carga aumentada. No entanto, configurar essa solução a partir do zero pode parecer uma tarefa bastante complicada.

Assim, a equipe Jelastic preparou um pacote de instalação em um clique para você – um Cluster MySQL Escalável com replicação master-slave de fábrica, distribuição de requests e descoberta automática de nós. Destina-se a implementar instantaneamente um par de contêineres MySQL interconectados, que manipulam a replicação de dados assíncronos e são reconfigurados automaticamente após o dimensionamento do cluster (ou seja, alterando o número de nós). Além disso, esta solução é fornecida com um balanceador de carga ProxySQL na frente do conjunto de nós do banco de dados e  Orchestrator integrado para o seu gerenciamento conveniente via GUI.

Então, para começar, vamos rever alguns detalhes sobre a implementação da solução Cluster MySQL Escalável para obter informações mais profundas sobre como ela realmente funciona. E depois disso, procederemos a instruções sobre a implantação, analisaremos as possibilidades do painel de gerenciamento interno e exploraremos o mecanismo de failover de banco de dados implementado com uma falha de nós simulada.

 

Especificações do pacote do Cluster MySQ Escalável

Assim, após a instalação do pacote do Cluster MySQ Escalável com Balanceador de Carga, você terá um ambiente baseado no Docker com as seguintes especificações de implementação:

  • a topologia padrão inclui 1 nó do balanceador de carga ProxySQL (com base na imagem jelastic/proxysql) e um par de instâncias de servidor DB MySQL replicadas de forma assíncrona (construídas sobre o modelo jelastic/mysql: 5.7-latest);
  • ao contêiner MySQL inicialmente criado é atribuído uma função de mestre, enquanto o segundo (e todos os outros nodes adicionados manualmente) servirá como escravo;
  • por padrão, a cada contêiner é atribuído limite de recursos de 8-cloudlet (o que equivale a 1 GiB de RAM e 3,2 GHz de CPU) para dimensionamento vertical automático.

 

 

Sendo entregue com um conjunto de preconfigurações especiais, o atual Cluster MySQL Escalável pode ser distinguido com as seguintes possibilidades e benefícios:

  • balanceamento de carga eficiente – o ProxySQL usa o conceito hostgroups para separar o mestre DB (com uma possibilidade de leitura-escrita) e escravos (com as permissões somente leitura); por isso, devido às regras de consulta especiais, todos as solicitações de seleção são redirecionadas apenas para servidores escravos e distribuídas entre eles com o algoritmo round-robin para garantir carga uniforme;
  • escalabilidade e descoberta automática – novos nodes MySQL, adicionados durante o dimensionamento horizontal do servidor DB, são incluídos em um cluster como escravos com todos os ajustes necessários sendo aplicados automaticamente;
  • re-configuração sem tempo de inatividade – um cluster é projetado para ser executado continuamente e pode ser ajustado em um instante sem a necessidade de reiniciar os serviços em execução;
  • failover automatizado – os nós DB escravos com alta latência ou aqueles que não podem ser alcançados são temporariamente excluídos de um cluster e re-adicionados assim que a conexão é restaurada;
  • GUI confortável – a solução inclui a ferramenta Orchestrator pré-instalada para simplificar o gerenciamento de cluster (por exemplo, para refatorar caminhos de replicação, recuperar falhas de topologia, etc.).

Antes de proceder à instalação do pacote, considere que a Plataforma apropriada deve executar a versão Jelastic 5.0.5 ou superior. Agora, vejamos como obter instantaneamente essa solução MySQL em cluster, executada dentro dos contêineres Docker dentro da Nuvem, em apenas alguns simples cliques.

 

Como instalar Cluster MySQL Escalável na Nuvem Jelastic

A implantação do Cluster MySQL Escalável com Balanceador de Carga é completamente automatizada pelo Jelastic, permitindo obter um cluster de banco de dados totalmente configurado e pronto para funcionar em questão de minutos.

  1. Faça login na sua conta Jelastic e importe o arquivo apropriado jps via URL:

https://github.com/jelastic-jps/mysql-cluster/blob/master/mysql-cluster-orchestrator/manifest.jps

 

 

Dica: Alternativamente, você pode encontrar esta solução dentro da seção Clusters do Jelastic Marketplace, juntamente com uma série de semelhantes pacotes de instalação com um clique para outros bancos de dados em cluster, servidores de aplicações e aplicações específicas.

  1. Dentro do quadro de instalação aberto, forneça detalhes sobre o ambiente desejado.

 

 

Aqui:

  • Ambiente – digite qualquer nome preferido;
  • Nome para exibição – opcionalmente, forneça um alias de ambiente;
  • Região – selecione a região (se houver várias disponíveis).

Clique em Instalar para prosseguir.

  1. Aguarde um minuto enquanto o Jelastic configura tudo para você.

 

 

Após a instalação bem-sucedida, você receberá as seguintes notificações por e-mail com informações administrativas importantes sobre seu cluster MySQL:

  • Cluster de Banco de Dados Escalável – fornece dados para acessar o painel PHPMyAdmin para gerenciamento de banco de dados;
  • Replicação Automática de Banco de dados – exibe informações de conexão de cluster para vinculá-lo ao seu aplicativo;
  • Configuração Orchestrator – fornece credenciais para acessar o painel Orchestrator, destinado ao gerenciamento conveniente de cluster.

Agora, você está pronto para começar a utilizar seu cluster DB.

 

Monitoramento de Instâncias de Cluster e Descoberta Automática por Orchestrator

Para obter a base das possibilidades de gerenciamento integradas fornecidas, consulte o painel Orchestrator incorporado e verifique a operacionalidade do cluster.

Esta ferramenta pode ser acessada clicando no botão Abrir no navegador ao lado da camada Proxysql do ambiente criado.

 

 

  1. O painel do Orchestrator será aberto em uma aba de navegador separada, fornecendo uma série de opções e menus na parte superior.

 

 

E em uma grande área de trabalho abaixo, você pode ver que seu cluster de banco de dados já foi detectado e está atualmente rastreado.

  1. Clique na prancha apropriada para rever a topologia de cluster completa (ou seja, todas as instâncias DB que ela compõe). De acordo com as configurações padrão do pacote, temos um par de nós MySQL interconectados, por funções de mestre e escravo.

 

 

Aqui, cada prancha de instância exibe alguns detalhes no servidor de banco de dados correspondente, como seu domínio,  versão de run stack, função atribuída em confins de um cluster, etc.

  1. Se estiver esperando uma carga elevada, poderia fazer sentido estender seu armazenamento em cluster com alguns escravos adicionais para torná-lo mais durável.

Para isso, volte ao painel do Jelastic e dimensione o número de contêineres em seu cluster MySQL – por exemplo, acrescentaremos mais dois nós.

 

 

  1. Quando as instâncias forem adicionadas com sucesso (acompanhe este estado de operação no painel Tarefas no painel inferior), mude para a aba do navegador Orchestrator e verifique sua presença dentro da topologia de cluster exibida.

Dica: o painel do Orchestrator é atualizado automaticamente uma vez por minuto durante a sua inatividade (ou seja, quando você não interage com a aba do navegador apropriada) para exibir os dados mais atualizados para o momento em que você retorna ao gerenciamento do seu cluster.

 

 

O tempo restante até a próxima atualização de informações é exibido no painel superior com um temporizador dedicado. Clicando nele, irá parar a contagem para que a atualização contínua seja desativada até você clicar novamente.

 

 

Como resultado da nossa extensão de cluster, você deve ver três nós escravos sendo conectados ao mestre MySQL principal.

 

Verificando o Failover de Cluster do MySQL com Falha de Escravo Simulada

Agora, vamos parar a replicação em um servidor DB slave para simular sua falha e examinar como o Orchestrator detecta e lida com esses problemas.

  1. Então, conecte-se a qualquer um dos seus contêineres escravos MySQL via SSH e acesse o shell do banco de dados com o seguinte comando:

mysql -u {user} -p

 

 

Obviamente, o placeholder {user} deve ser substituído pelo nome de usuário administrador do MySQL (e confirmado com a senha apropriada) para autenticar a conexão estabelecida – as credenciais correspondentes podem ser encontradas no e-mail de informações do cluster que você obteve após sua criação.

  1. Primeiro, vamos verificar o status atual do servidor DB atual digitando a seguinte string:

show slave status\G

 

 

Como você pode ver, o nó escravo está pronto e funcionando.

  1. Agora, vamos quebrar o processo de replicação principal no servidor de banco de dados escolhido e verificar o resultado – execute os dois comandos a seguir em uma string para realizar isso simultaneamente:

stop slave; show slave status\G

 

 

  1. Volte para o painel do Orchestrator para verificar se a indisponibilidade simulada do servidor foi detectada pelo sistema – o nó apropriado deve estar realçado em vermelho.

 

 

Além disso, você pode observar um ícone de aviso vermelho sendo exibido no canto superior direito da sua área de trabalho – aqui, todos os problemas de cluster são reunidos dentro de uma única lista para uma visão conveniente.

  1. Para revelar a raiz do problema de falha, clique no ícone de engrenagem na prancha do nó problemática apropriada. No quadro aberto, você receberá algumas informações de instância de DB adicionais para analisar (como seu status de replicação e atraso, ID do servidor, permissões de leitura/escrita, duração do tempo de atividade, etc.) e opções para executar algumas ações de gerenciamento principais.

 

 

No nosso caso, você pode ver que a replicação não está sendo executada. Assim, para restaurar a operacionalidade completa do cluster, clique no botão Iniciar Escravo apropriado para que os dados do nó mestre sejam replicados para todos os escravos mais uma vez.

 

 

Após esta conclusão do processo, o destaque da prancha do nó de aviso desaparecerá, bem como a lista de problemas à direita – isso significa que todos os nós funcionam como pretendido.

Neste ponto, você pode continuar explorando sozinho o Cluster MySQL Escalável com a solução de Balanceador de Carga pelo Jelastic. Não hesite em criar o armazenamento de dados exato que você precisa – o pacote já está disponível para todos os usuários dentro da seção Clusters do Jelastic Marketplace.

 

***

 

Tetiana Markova faz parte do time de colunistas internacionais do iMasters. A tradução do artigo é feita pela Redação iMasters, com autorização do autor, e você pode acompanhar o artigo em inglês no link: https://blog.jelastic.com/2017/08/10/scalable-mysql-cluster-master-slave-replication-proxysql-load-balancing-orchestrator/