Apache redefinindo solicitações LDAP e pendurando

2

Eu tenho o Apache 2.2.15 rodando sob o CentOS 6.5. O módulo mod_authnz_ldap está sendo usado para autenticar em um servidor Microsoft AD. Aqui está a configuração do LDAP no Apache:

AuthType Basic
AuthBasicProvider ldap
AuthzLDAPAuthoritative on
AuthLDAPURL ldap://[ad server ip address]/[basedn]?mail
AuthLDAPBindDN [binddn]
AuthLDAPBindPassword [bindpass]
AuthName "LDAP: myhost.example.com"
Require ldap-group cn=[foo],ou=Permissions,ou=Groups,ou=[bar],dc=[baz],dc=com

Na maioria das vezes, as solicitações do navegador para esse host do Apache funcionam bem; autentica corretamente contra o servidor do AD e a página é carregada normalmente.

Uma vez a cada poucos minutos, em média, no entanto, a solicitação parecerá travar no lado do navegador. O tcpdump revela que o Apache está enviando um pacote TCP RST, aparentemente em resposta a um pacote PSH ACK do host do AD. A troca é assim:

53  600.408744  Apache  AD  TCP  74  42804 > ldap [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=2665219285 TSecr=0 WS=128
55  600.469478  AD  Apache  TCP  66  ldap > 42804 [PSH, ACK] Seq=1 Ack=3457841362 Win=65093 Len=0 TSval=4832637 TSecr=2664621718
56  600.469524  Apache  AD  TCP  54  42804 > ldap [RST] Seq=3457841362 Win=0 Len=0
65  601.409434  Apache  AD  TCP  74  [TCP Retransmission] 42804 > ldap [SYN] Seq=0 Win=14600 Len=0 MSS=1460 SACK_PERM=1 TSval=2665220285 TSecr=0 WS=128
67  601.470951  AD  Apache  TCP  78  [TCP Previous segment not captured] ldap > 42804 [SYN, ACK] Seq=252322338 Ack=1 Win=16384 Len=0 MSS=1380 WS=1 TSval=0 TSecr=0 SACK_PERM=1

Nenhum outro pacote é enviado após esse ponto, nessa conexão, e o encadeamento parece estar interrompido. strace não fornece iluminação, apenas mostra uma chamada write () sendo feita com o pedido de ligação LDAP.

Eu também tive uma sessão tcpdump de execução mais longa para capturar um dos processos do Apache tentando enviar uma solicitação LDAP de uma porta TCP que não fazia parte de nenhuma conexão aberta. Parecia que era de uma conexão anterior (semelhante ao tipo mostrado no dump acima) e, de alguma forma, o processo do Apache achava que essa conexão ainda estava aberta.

Achei que talvez um dos caches LDAP estivesse sendo problemático, então os desativei da seguinte forma:

LDAPSharedCacheSize 0
LDAPCacheEntries 0
LDAPOpCacheEntries 0

mas isso não fez diferença; o problema ainda ocorre.

A única maneira de corrigi-lo atualmente é reiniciar o Apache em intervalos de alguns minutos. Com a carga que o servidor recebe, o problema começa a ocorrer dentro de alguns minutos de reinicialização.

    
por dirtside 17.10.2014 / 20:44

0 respostas