Switch de failover [fechado]

4

Eu preciso de um servidor / switch / alguma coisa (que eu chamo de "switch de failover") para executar a seguinte tarefa.

  1. Existem dois HTTP servidores por trás do comutador de failover.
    • Normalmente, todas as solicitações são encaminhadas para server 1 .
    • Se o servidor 1 falecer (parar de responder em HTTP solicitações em tempo hábil), todas as solicitações serão roteadas para server 2 .
    • Quando server 1 é restaurado (começa a responder em HTTP solicitações em tempo hábil), todas as solicitações são encaminhadas de volta para server 1 .
    • O comutador de failover tem um endereço IP externo (a que as solicitações chegam inicialmente).

Essa coisa deve ser o mais burra e simples possível.

Como se chama corretamente e qual seria um exemplo de tal coisa?

Atualização:

Idealmente, isso não deve ter partes móveis (como HDD ou ventilador). Então, uma solução de hardware dedicada seria preferida.

Atualização 2:

Essa coisa deve ser um switch, não um balanceador. Ele deve alternar com base na HTTP disponibilidade do servidor, não em ARP ou ICMP .

    
por Quassnoi 09.11.2010 / 17:25

7 respostas

11

O que você quer é geralmente chamado de balanceador de carga. Os balanceadores de carga podem vir na forma de um appliance, caixas F5 Big-IP , por exemplo, ou no forma de um aplicativo de balanceamento de carga executado em cima do hardware de commodity. Um exemplo disso é o HAProxy , que coincidentemente está fazendo o balanceamento de carga de todos os sites do StackExchange.

    
por 09.11.2010 / 17:30
1

Se não quiser balanceamento de carga, tudo o que você precisa é de uma solução simples de cluster de failover que envie pulsações entre os membros do cluster e atribua a propriedade do IP virtual que você usará para acessar o serviço. Há dezenas deles lá fora.

No Windows, a resposta de fato é o Microsoft Clustering Services (MSCS), incluído nas edições Enterprise e Datacenter. No Linux / Unix, você provavelmente quer estar olhando para Heartbeat (simples, mas não super-configurável), Pacemaker (robusto, mas um pouco mais complexo), ou outro sistema similar.

    
por 09.11.2010 / 17:29
1

Existem algumas soluções de código aberto aqui que ajudarão.

O primeiro que eu verificaria seria PFSENSE

O pfSense funcionará virtualmente em qualquer hardware - assim como em um vps. o sistema permitirá balanceamento de carga, clustering, bem como uma variedade de outros serviços

pf usa a idéia do método "carp" para balanceamento de carga e fail over - muito fácil de configurar.

    
por 09.11.2010 / 17:33
0

Outra forma de conseguir isso é com os Omni-Switches da Alcatel-Lucent, há um recurso chamado Balanceamento de Carga do Servidor. Isso fará exatamente o que você está procurando, mas em vez de fazer isso na camada ip, ele faz isso na camada de endereço MAC.

    
por 09.11.2010 / 17:36
0

O que você está procurando fazer não é necessariamente simples de implementar e requer algum monitoramento / manutenção.

Não sei de nada que não seja um balanceador como uma solução de hardware. Você provavelmente precisará examinar o clustering, o que significa executar uma forma de fence e heartbeat para que os servidores monitorem uns aos outros.

Se possível, você provavelmente desejaria usar o armazenamento compartilhado com front-ends do servidor da Web.

Dito isso, se você estiver usando o Linux, provavelmente desejará usar o google high availability Linux, que deve apontar recursos para a configuração de software heartbeat que monitora serviços nos servidores e, se um deles for desativado, exibirá o outro servidor para assumir. Quando o outro servidor voltar, você poderá fazer a transição de solicitações de serviço de volta para o servidor principal.

A razão pela qual eu disse isso não é simples porque você pode ter uma situação de cérebro partido. Certifique-se de que você google e planejar adequadamente.

Você também vai querer que o hardware seja configurado para conversar entre si em uma conexão dedicada de alta velocidade entre os servidores e você precisa manter um compartilhamento de armazenamento compartilhado de algum tipo para não precisar sincronizar arquivos.

Portanto, se você não quiser fazer a rota do balanceador, precisará dedicar algum tempo e esforço para executar um cluster. Eu não sei muito sobre clustering do Windows, mas se é isso que você está executando, você terá algumas opções embutidas nas versões mais avançadas do Windows para serviços de clustering; Eu acho que é nas edições Enterprise e Data Center. Você terá que navegar pelo site de drones de marketing da Microsoft para obter mais informações sobre isso.

Boa sorte!

    
por 09.11.2010 / 17:49
0

Eu uso o pound ( link ) no Linux para isso. Você pode instalá-lo facilmente em um pequeno chassi de estilo de appliance. Do site deles:

O que é:

  1. um proxy reverso: ele passa solicitações de navegadores de clientes para um ou mais servidores de backend. [...]
  2. um fail over-server: se um servidor back-end falhar, o Pound anotará o fato e parará de enviar solicitações para ele até que ele seja recuperado.

Seus benefícios incluem arquivos de configuração realmente pequenos e concisos, além de pequenos códigos e pegadas do sistema. Você pode atualizá-lo, executar e verificar em menos de 10 minutos.

    
por 09.11.2010 / 18:39
0

Normalmente, esse tipo de coisa é feito com um balanceador de carga em um ambiente maior, já que os dispositivos LB tendem a ser relativamente estáveis e não propensos a cair. Para o cenário específico que você está observando, basta definir um como "100%" e o outro como "0%" do carregamento, com o segundo assumindo o primeiro caso.

Se você estiver procurando por uma solução baseada em software, isso dependerá do sistema operacional que você está usando. Eu criei uma solução em torno do Ultramonkey e Zebra, na época (agora parte do conjunto HA-Linux, eu acredito), mas eu estava fazendo failover entre Londres e Palo Alto, então eu também precisei de um componente de roteamento.

    
por 10.11.2010 / 16:04