É seguro executar duas instâncias do svnserve em um repositório, ou apenas um?

4

Temos dois nós executando heartbeat / drbd, e um dos serviços que estamos usando é o subversion. O que eu quero saber é: é seguro rodar o svnserve em ambos os nós o tempo todo, ou deveria rodar apenas no nó ativo?

O svnserve usa o bloqueio em nível de arquivo ou está na memória? Quais são as implicações da execução do svnserve sem que seus repositórios sejam acessíveis?

Por favor, deixe-me saber se isso não está claro, e vou tentar o meu melhor para reformular / esclarecer. :)

    
por fredden 09.02.2010 / 05:28

2 respostas

2

Eu presumo que, como você tem heartbeat controlando failover, está executando um cluster DRBD ativo / passivo. Como tal, no momento do failover heartbeat no passivo detecta que deve se promover para ativo. Neste processo, ele (geralmente) transmite o fato de que está assumindo o VIP do primário e monta o disco do DRBD. Isso torna o disco acessível ao sistema de arquivos e, finalmente, heartbeat traz o software necessário (MySQL, Apache, etc) como por haresources .

Você deve adicionar todos os serviços extras necessários para iniciar após o failover no arquivo /etc/ha.d/haresources no formato:

#node1  10.0.0.170 Filesystem::/dev/sda1::/data1::ext2
db1     192.168.100.200/24/eth0 drbddisk::mysql Filesystem::/dev/drbd0::/drbd::ext3::defaults mysql

com o script de inicialização apropriado em /etc/ha.d/resource.d/mysql (ou nomeado em relação à função do script!) - mais detalhes em Configurando os recursos de haresources , o manual do drbd e OpenVZ wiki

O cerne da questão é que não há efetivamente nenhum disco para svnserve ler seus repositórios até que ele seja ativado como ativo, pois o processo drbd o bloqueia quando está no modo passivo. É possível executar o DRBD ativo / ativo, mas é um recurso relativamente novo e não é algo que eu tentei!

Uma pegadinha que não está bem documentada: em vez de usar os scripts hb_takeover para testar o failover, basta encerrar o heartbeat service no primário e aguardar o secundário assumir, assistindo nos dois servidores com tail -f /var/log/ha-log . Isso tem a vantagem adicional de testar os parâmetros deadtime , warntime e initdead de ha.cf , que são importantes em um failover do mundo real.

    
por 09.02.2010 / 13:26
0

Sim, você pode rodar 2 processos svnserve simultaneamente, desde que esteja rodando em um sistema de arquivos que reconhece o cluster e que não permita que ambos escrevam no mesmo arquivo ao mesmo tempo.

Você pode executar o svnserve e o httpd no mesmo repositório, por exemplo, sem problemas.

O repositório é bloqueado por um arquivo, quando a consolidação ocorre, o upload vai para um diretório de transação, quando seu completo esse txn é aplicado ao repo atomicamente. Esta seção do livro svn detalha como vários processos podem servir dados svn simultaneamente sobre protocolos diferentes.

    
por 05.06.2010 / 14:43