Tolerância a falhas / Failover no projeto da escola [closed]

1

Estou fazendo um curso sobre arquitetura distribuída. Os participantes do curso são divididos em grupos. Cada grupo deve desenvolver um jogo de consoles do tipo MMORPG e configurar a infraestrutura. O palestrante tem um script que verifica de hora em hora a disponibilidade dos jogos com base em um IP que fornecemos. No final do curso, todos os grupos recebem pontos com base na porcentagem de tempo de atividade de seu jogo.

Meu grupo escolheu a DigitalOcean como IaaS e estamos executando nosso jogo em contêineres do Docker. Já vimos que a DigitalOcean reinicializou a instância que hospedava nosso jogo (sem aviso prévio), o que infelizmente resultou em um tempo de inatividade significativo para nós, pois não tínhamos nenhum script para reiniciar o contêiner Docker neste evento.

O IP que o nosso grupo forneceu ao script está diretamente conectado a um droplet na DigitalOcean. Isso significa que não temos medidas em vigor se essa máquina cair por qualquer motivo. Isso é ruim .

Eu tenho procurado por soluções e encontrei duas:

IP virtual

Agora, corrija-me se estiver errado - mas isso essencialmente permite que várias máquinas tentem se apropriar de um IP. Então, no caso de uma máquina morrer, outras podem assumir o controle.

Esta parece ser a melhor solução, no entanto DigitalOcean não suporta (pelo que entendi).

DNS Failover

Você fornece vários registros do tipo A para um servidor DNS e monitora continuamente seus servidores. No caso de um dos seus servidores falhar e o servidor DNS receber uma solicitação de resolução, ele responderá com um IP funcional. As advertências são TTL e cache.

Quais outras opções existem que podem funcionar para mim? Seria possível configurar o IP virtual com algum outro provedor e fazê-lo funcionar em conjunto com o meu provedor atual (DigitalOcean)?

    
por transporter_room_3 05.09.2015 / 12:23

1 resposta

0

Com relação ao DNS Failover, você deve entender que os servidores DNS normais não possuem um método para isso. Eles não monitoram um servidor, mas podem simplesmente fornecer vários IPs em resposta a um pedido (chamado DNS Round-Robin). O cliente escolhe um aleatoriamente e, se esse host estiver inativo, pode ou não tentar novamente o outro. É mais um método de balanceamento de carga idiota. Alguns provedores de DNS (como o Amazon Route53) fornecem monitoramento ativo, o que funcionaria como você descreve. Consulte o link

Mas, se eu entendi corretamente, você forneceu um endereço IP ao seu professor, não um nome de host. Sem um nome de host, o método DNS não funcionará, pois o DNS nunca é consultado. Um endereço IP limita severamente suas opções.

Tenho uma experiência muito limitada com IPs virtuais, mas acho que você está certo de que o DO não os suporta.

Como o script é verificado a cada hora, provavelmente seria suficiente garantir que seus contêineres iniciassem automaticamente na reinicialização por meio das políticas de reinicialização do Docker (como Michael Hampton sugeriu). De sua pergunta, suponho que as reinicializações raramente ocorram, e é improvável que os tempos de inatividade de 1 a 2 minutos se sobreponham à janela de monitoramento do script.

    
por 05.09.2015 / 13:21