Failover do Memcached

2

Temos dois servidores memcached configurados e usamos o cliente Eniym. Quando um dos servidores está inoperante, parece que este servidor é adicionado à lista deadServers (ServerPool.cs) e tenta ressuscitar o servidor a cada 10 segundos (configuramos o deadTimeOut como 10 segundos). A tentativa de conectar-se ao servidor com falha causa um tempo limite de TCP, as páginas levam muito tempo para serem carregadas, o que resulta em uma experiência ruim do usuário.

1) Qual é o modo padrão de resolver esse problema? Existem alguns posts sobre como remover o servidor da lista deadServers. Tudo bem fazer isso?

2) Qual é a configuração deadTimeOut recomendada (entendo que, por padrão, são 2 min e mudamos para 10 segundos em nossa implementação)

3) Estou correto em entender que os dados armazenados em cache não são replicados entre o Servidor 1 e o Servidor 2? Se o servidor 1 estiver inativo, ele vai ao banco de dados para buscar esses valores (e realmente não verifica o servidor2)?

Qualquer ajuda é muito apreciada.

    
por user25164 09.11.2009 / 18:00

1 resposta

1
  1. Como regra geral, normalmente é esperado que você aceite que o cache pode ou não ter o que você deseja.
    • Depende do cenário, mas parece que você pode se beneficiar de um maior. Não há grandes perdas tendo isso mais alto (2-5 minutos).
    • Sim. O Memcache normalmente armazenará novamente os valores no servidor 2 (depois de buscar o banco de dados porque o cache do servidor 1 está indisponível).

Você provavelmente também reduz seu tempo limite de TCP sendo usado para reconectar-se ao servidor possivelmente morto.

    
por 09.11.2009 / 22:59