Desconexão de conexões entre servidores Linux no Data Center

1

Eu tenho um número de servidores Linux em um datacenter baseado em nós. Os servidores foram instalados pela empresa de hospedagem e estão executando o fedora core.

Estamos com problemas com a queda de conexões. O problema parece ser que, quando tentamos nos conectar a um dos outros servidores após um período de inatividade, a primeira tentativa de conexão falhará e, às vezes, a segunda. No entanto, depois disso, a conexão sucede e funciona por um tempo. Isso acontece para conexões mysql e conexões de soquete não processadas, mas apenas parece ocorrer ao se conectar a alguns de nossos servidores. A parte confusa é que alguns dos servidores para os quais vemos comportamentos diferentes têm configuração e software de hardware idênticos. Por exemplo, acontece quando se conecta a um servidor chamado mysql2, mas não para um servidor chamado mysql3. Esses servidores foram instalados ao mesmo tempo, com as mesmas especificações.

O problema pode ser reproduzido de maneira confiável, mas somente depois de esperar quinze minutos a meia hora. Isso dificulta o diagnóstico, e ainda mais difícil, já que não tenho certeza do que procurar.

Eu percebo que as conexões às vezes falharam e que devemos escrever nossos aplicativos para compensar isso, mas esses servidores estão todos no mesmo data center. Por que seria importante se dois servidores não tivessem se comunicado por algum tempo?

Alguém tem uma ideia do que pode estar causando isso? É um problema de configuração do servidor ou um problema de rede com o qual devo entrar em contato com a empresa de hospedagem. O que eu digo a eles para procurar? Infelizmente, nossa experiência tem sido de que a equipe de suporte não investiga os problemas em profundidade, a menos que forneçamos instruções detalhadas.

Edit: O MySQL parece pelo menos receber as conexões antes de serem descartadas:

mysql> show status like 'abort%';
+------------------+-------+
| Variable_name    | Value |
+------------------+-------+
| Aborted_clients  | 501   |
| Aborted_connects | 184   |
+------------------+-------+
2 rows in set (0.00 sec)

Edit2: Parece que firewalls com informações de estado eram o problema afinal. Flushing out iptables parecia fazer o truque.

iptables -P OUTPUT ACCEPT
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
    
por Emil H 13.03.2010 / 17:17

1 resposta

2

Você executou o tcpdump / wireshark para rastrear o comportamento da conexão? Meu dinheiro está em algum tipo de firewall de estado completo entre seus dois locais. Seu software abre uma conexão que não vê nenhum tráfego por alguns minutos e o firewall expira a conexão e os dados subseqüentes serão descartados e talvez a conexão seja redefinida.

Eu traçaria algumas das conexões no tcpdump para ver como elas são finalizadas e se há uma grande quantidade de tempo ocioso. Se é essa coisa de firewall, você poderia tentar ativar o tcp para se manter vivo nas conexões. Eu não sei o quão fácil será fazer isso, no entanto.

    
por 13.03.2010 / 18:05