Erro de partição de rede RabbitMQ

3

Estou executando um cluster RabbitMQ (versão 3.0.2, Erlang R15B) com dois nós e eles continuam experimentando periodicamente um erro de partição de rede. Eles estão fisicamente localizados no mesmo data center e sua rede deve ser confiável. Quando verifico seus registros, os dois servidores relatam o erro "running_partitioned_network" quase ao mesmo tempo e os dois nós continuam em execução. Por isso, não acho que seja uma falha de hardware ou que um dos nós tenha terminado inesperadamente. Eu modifiquei o net_ticktime para 120 segundos para tentar mitigar o problema, e ele parou de ocorrer por quase um mês, mas recentemente começou a ocorrer novamente uma vez a cada poucos dias. Agora não tenho certeza se o net_ticktime ajudou ou se foi apenas coincidência.

Para solucionar ainda mais, iniciei um rastreamento de rede contínuo usando o Wireshark e usei uma tarefa agendada para interromper o rastreamento quando os nós se tornaram particionados novamente. Meu objetivo é determinar se a partição é causada por rede não confiável ou se o aplicativo não respondeu. Nada no rastreamento de pacotes aparece como uma falha de rede, há apenas um punhado de retransmissões TCP e muitos outros pacotes são enviados com sucesso entre eles.

Neste momento, não sei mais o que ver no rastreamento de pacotes para provar ou refutar que a rede causou a falha. O Wireshark pode identificar e decodificar o Protocolo de Distribuição Erlang, mas não sei como interpretar as mensagens para saber o que faria com que os nós detectassem uma partição. Além disso, o net_ticktime está configurado para 120 segundos e não vejo um intervalo de 120 segundos nos servidores recebendo mensagens uns dos outros. O maior intervalo em que nenhuma mensagem Erlang é recebida do outro servidor é de 22 segundos (muito menos se você contar as confirmações TCP). Meu único outro pensamento é que, se uma determinada mensagem do tipo "ping" precisar ser enviada entre os nós e que determinadas mensagens foram interrompidas, mas não sei como seria essa aparência no rastreamento.

Qualquer ideia sobre como diagnosticar melhor a causa desse problema seria útil.

    
por nslowes 08.04.2013 / 17:43

2 respostas

3

Não tenho certeza se esse é realmente o caso, mas parece que o clustering do Erlang pode quebrar quando grandes mensagens estão sendo transmitidas. Dê uma olhada neste tópico da lista de discussão do RabbitMQ: link

    
por 04.06.2013 / 18:58
0

Eu vi problemas similares com o RabbitMQ 2.8.4 no Erlang R14B03, embora sem a mensagem "running_partitioned_network". Isso não aconteceu em poucos meses para nós (sim, aconteceu o suficiente para termos um check check Nagios check_rabbitmq_splitbrain), mas eu vou ver se consigo capturar alguns detalhes se isso acontecer de novo ...

    
por 04.08.2013 / 15:33