Estou procurando a maneira mais simples de compartilhar um único arquivo de alta disponibilidade entre um par de servidores linux. (Versão e distribuição não são importantes, estou procurando uma solução genérica.)
Eu tenho dois servidores, cada um com seus próprios discos locais e compartilhamentos NFS e outros serviços entre eles. Eu tenho um arquivo que ambos os servidores precisam acessar, mas nada além desses servidores precisa acessá-lo.
Se um dos servidores travar, quero que o conteúdo possível mais recente desse arquivo esteja disponível para o servidor restante. (Obviamente, o outro servidor deve pegar as alterações na recuperação.)
O arquivo é um arquivo de estado e provavelmente apenas um servidor de cada vez estará gravando nele. O tamanho do arquivo de estado é desconhecido, mas pequeno. Provavelmente entre 1 bloco e 2M. Possivelmente, o tamanho do arquivo de estado aumentaria dependendo da duração do tempo de inatividade.
Sem adicionar hardware externo, quais opções existem para um compartilhamento de arquivos de alta disponibilidade como este?
Existem muitas soluções - para um arquivo eu provavelmente usaria GlusterFS - mas acho que você deve ter 3 servidores para quorum ou terá que resolver split-brains na recuperação. Você deve ser capaz de instalá-lo facilmente em todas as distros populares e configurá-lo não mais de uma hora.
Se o par de servidores estiver executando hot-cold (ou seja, apenas um deles acessa o arquivo por vez), o DRBD é uma maneira rápida e estável de atingir seu objetivo. O DRBD foi projetado com proteções de cérebro dividido, portanto, deve ser "bom o suficiente".
Uma breve sinopse do site DRBD:
Como esta é uma replicação em nível de bloco, você precisaria de um pouco de configuração extra. Por exemplo, você teria que criar um sistema de arquivos em cima do dispositivo replicado e precisaria montar esse sistema de arquivos. A configuração padrão recomendada permite que apenas um host monte o sistema de arquivos (para evitar situações de cérebro dividido), então você só pode acessar os dados em um nó por vez.
Todo o processo está bem documentado e também existem alguns guias fáceis disponíveis.
Se você gosta mais de automação, Pacemaker + DRBD é uma combinação muito comum, até mesmo documentada nos guias do Pacemaker, que também é uma boa introdução ao próprio DRBD.
PS Engraçado como o guia do marcapasso para o DRBD que vinculei acima descreve quase perfeitamente sua pergunta.