Como conseguir alta disponibilidade com o cluster MySQL?

1

Esta questão não é sobre como instalar os servidores nem seus recursos, mas mais uma questão de design.

Então eu tenho um cluster de servidores MySQL.
Eu também tenho um registro de DNS " data.example.com ".

O cluster MySQL tem TRÊS nós de consulta / MySQL (os pontos finais do cluster onde os aplicativos se conectam). Por trás disso, há o resto dos servidores desse cluster (dados / gerenciamento).

O objetivo é tratar este cluster como uma unidade sólida (da perspectiva externa).

Agora, um aplicativo externo (digamos, um servidor da Web) deseja agir (gravar / ler) no banco de dados. Aqui estão os passos:
  1) Resolver DNS "data.example.com".
  2) Conecte-se ao IP (é um nó SQL).
  3) Faça o trabalho.

Primeiro problema que surge, o mais fácil é:
Como faço para expor todos os três nós SQL através desse único DNS?
 - Round-robin no nível do servidor DNS?
 - Definir esse registro DNS para apontar para três IPs dos nós SQL?

Segundo problema que surge, digamos que o DNS resolvido para 10.0.0.7, que é apenas um dos três nós SQL: E se esse nó estiver inativo?
O cluster inteiro ainda está bom, mas agora o aplicativo que tenta se conectar a esse nó vê o cluster como "inativo", porque esse nó está realmente inativo, por isso estou perdendo "alta disponibilidade".

Então, minha pergunta é simples:
O que você faria para resolver o problema? Por favor, descreva em detalhes, e complexidade não me assusta:)

Note que eu perguntaria aqui sobre balanceamento de carga ou coisas assim, mas eu prefiro manter esta questão "aberta" e ouvir uma gama maior de soluções. Obrigado!

    
por Poni 10.11.2011 / 11:26

2 respostas

1

A alta disponibilidade geralmente é feita usando o que é chamado VIP (endereço IP virtual). Portanto, esse IP deve ser diferente do endereço IP atribuído " estaticamente " a cada nó do cluster. Este VIP deve ser atribuído " dinamicamente " pela solução de alta disponibilidade que você está usando. Portanto, apenas um nó servirá as solicitações nesse caso e, se esse nó falhar, o software de alta disponibilidade atribuirá o VIP a outro nó no cluster. Dessa forma, você não sofrerá um tempo de inatividade, exceto a parte muito pequena do tempo durante o failover de um nó para o outro.

Se você estiver fazendo balanceamento de carga, precisará ter dois nós de balanceamento de carga e pelo menos dois nós de cluster. O VIP será atribuído a um dos nós de balanceamento de carga. As solicitações do aplicativo serão direcionadas para os nós do cluster por meio de um dos nós de balanceamento de carga.

Um ponto importante para se preocupar é a sincronização de dados entre os nós do cluster, especialmente em cenários de balanceamento de carga. Por exemplo, imagine que você está escrevendo para um nó e lendo de outro. Naturalmente, isso não funcionará a menos que um bom mecanismo de balanceamento de sincronização / carga seja aplicado.

EDITAR:

O VIP geralmente é um endereço IP privado atribuído pelo software de alta disponibilidade ao nó ativo no cluster. É apenas um endereço IP diferente do IP original de cada nó. Pode ser simplesmente atribuído a partir da mesma sub-rede. Se os nós do cluster devem ser disponibilizados via NAT, o endereço IP público deve ser NAT para o VIP. Isso é importante para poder acessar o serviço, independentemente de qual seja o nó ativo.

    
por 10.11.2011 / 11:52
0

Você precisará implantar um balanceador de carga para dividir a carga em seus nós SQL, resolver seu DNS para o endereço IP desse balanceador de carga

    
por 10.11.2011 / 11:49