
Estou brincando com soluções de alta disponibilidade há alguns dias e até agora descobriUCARPmuito útil para failover de IP.
É muito simples e faz o trabalho.
Eu estava pensando em dar um passo adiante:
seo roteadorque conecta os dois nós compartilhando o mesmo IPenviaria TODOS os pacotes para ambos os nós(em todos os momentos), então eu poderiaalcançar um balanceamento de carga muito maior.
É como uma solução “master-master” em vez de “master-backup”.
Os IPs de origem são divisíveis.
Ogrupo de redundância, digamos que dois desses nós compartilhem um IP ("virtual"), como dito.
Enquanto ambos estiverem ativos, eles simplesmente dividirão o IP de origem (seu número simples) do cliente e saberão como reagir.
Por exemplo, o Nó1 pega IPs divididos por 2.
O Nó2 pega o resto.
Um cliente inicia uma conexão TCP/IP (através do IP compartilhado).
O roteador que conecta os dois nós envia esta solicitação para ambos.
Se o IP do cliente se divide perfeitamente por 2, o Nó1 responde.
Neste ponto, o Nó2 ignora, porque conhece o Nó1.
Se um nó falhar, por exemplo Nó1, o outro (Nó2) detecta - normalmente,como a UCARP faz de qualquer maneira!
Nesse ponto, o Node2 começaria a atender o restante dos clientes.
Quando o Node1 retornar, o Node2 irá parar de responder às solicitações SYN (primeiros passos do início da conexão TCP/IP) provenientes de um IP divisível por 2, permitindo que o Node1 continue servindo.
Um possível problema pode surgir na direção do roteador: Ele precisa enviar cada pacote recebido para X nós no grupo de redundância. Carga de rede interna mais alta.
Outro possível problemaé que cada nó praticamente recebe muitos pacotes, mesmo aqueles que não "quer".
Com os roteadores/placas de rede atuais, vejo isso como um preço muito pequeno comparado ao benefício dedisponibilidade muito alta.
Sem mencionar que nesse caso euutilizar 100% dos meus recursos (no bom sentido)em vez de ter um ou mais servidores "stand-by" que nada mais fazem do que "stand-by".
Minha pergunta exata é:
1) Já existe tal solução? (código aberto, freeware, baseado em Linux).
2) Um roteador pode suportar tal coisa? Quais padrões ele deve apoiar? O que eu perguntaria a um provedor de DS/VPS em relação a essa capacidade?
De qualquer forma estas são algumas das minhas reflexões a respeito deste assunto. Ficarei feliz em receber uma resposta concisa apoiada por links e algumas palavras. Mais do que isso é obviamente bem-vindo :)
Responder1
Não creio que isso seja possível/viável. Definitivamente não existe porque é de uso muito limitado em comparação com as abordagens padrão.
O principal problema que vejo é rastrear cada entrada e saída de pacotes IP e sincronizar o estado da pilha IP em ambos os computadores de uma forma totalmente transparente para o aplicativo. Como você "simula" um aplicativo no nó 1 fazendo o trabalho, mas não responde, ou pegando magicamente o estado de um nó 2? Não é possível simplesmente continuar a comunicação TCP de uma aplicação nocde 1 sem... programação especial.