2016年12月19日星期一

LDAP Proxy连接丢失问题

架构:Client -> LDAP proxy -> AD服务器。代理用的ldaptor

问题:配置Confluence或者Jenkins使用LDAP代理进行认证,有时候登录卡住,在代理的日志里面看到的是代理到AD服务的Connection lost。经过多番观察和排查,发现在客户端、代理和服务端共同导致了这个问题。

Confluence使用了连接池,应该是Java的连接池,到代理的连接会一直保持。而代理到AD服务的连接,会在15分钟后被AD强制切断,这样Confluence下次使用连接的时候,代理到AD的连接就会断掉。

解决办法:
一开始看到Connection lost,就打开了两组连接的TCP keepalive,但是问题依旧。


因为客户端和AD端都不好改动,只能通过改进代理解决。在代理到AD的连接断掉之后,如果对应的客户端到代理的连接还没有关闭,就关闭之。用的Twisted,不熟悉,所以比较麻烦。