Replicando beanstalkd para alta disponibilidade

15

O título diz tudo.

Alguém sabe uma maneira de replicar o beanstalkd, de modo que, se um servidor de beanstalk fosse desativado, outros escravos pudessem assumir o controle?

Aqui está uma abordagem em que pensei: eu poderia fazer o beanstalk gravar seu binlog (com o -b) em um local compartilhado e, de alguma forma, fazer com que um servidor secundário / de backup iniciasse o beanstalkd se o primário falhar.

Deve haver uma maneira melhor, no entanto.

Josh Nankin
fonte

Respostas:

5

Como ele está gravando no disco via binlog, eu acho que você poderia fazer algo semelhante ao que os administradores do MySQL normalmente fazem: pulsação w / DRBD ( exemplo aqui).

Porém, na última vez em que tentei usar a pulsação, ele não suportava verificação não multicast entre nós, o que significava que era mais ou menos impossível executar na infraestrutura de nuvem / VPS (AWS, Linode, Slicehost etc.). De fato, a maioria dos serviços de cluster usa multicast. Isso pode não ser mais o caso, mas é algo para estar ciente. Você pode usar keepalived para fornecer failover baseado em IP, que também suporta somente multicast, mas possui um patch disponível via Willy Tarreau (autor do HAProxy ) para adicionar suporte a unicast . Eu pessoalmente testei isso em um par de servidores Linode VPS e o keepalived é capaz de realizar failover de um endereço IP compartilhado no caso de falha do servidor mestre.

Uma coisa que você pode fazer que provavelmente é menos ideal é gravar trabalhos em vários servidores beanstalkd (também conhecido como particionamento). Se um deles cair, seu aplicativo detecta isso e grava na (s) outra (s) instância (s). Seus funcionários terão que pesquisar de forma inteligente cada uma das instâncias do beanstalkd e poder ignorar as instâncias inativas. Como você está no log de bin, fazer o backup de uma instância deve ser tão fácil quanto reiniciá-la e o aplicativo / trabalhadores detectará isso e continuará como de costume (e começará a processar os trabalhos na instância recém-iniciada). Obviamente, estou simplificando o processo, mas essa é outra maneira de lidar com isso.

andrew
fonte
1
O Corosync suporta unicast e é a ferramenta de cluster padrão nas distribuições baseadas em Redhat.
Terence Johnson
Obrigado, não sabia sobre o Corosync. Manter isso em mente para projetos futuros.
andrew