我在使用 haproxy 代理的 openldap 时遇到了问题。身份验证在 CentOS (7.5.1804) 和 Debian (9.4) 上运行良好。唯一的问题是我在 syslog 和 authlog 中收到错误:
CentOS:
nslcd[10082]: [9f6e5f] ldap_result() failed: Can't contact LDAP server
Debian:
nscd: nss_ldap: reconnected to LDAP server ldap://haproxy.exemple.com after 1 attempt
当我将 LDAP 端点从以下配置直接更改为任何 ldap 服务器时,整个问题就消失了:
全球的 日志 127.0.0.1 本地3 pid文件/var/run/haproxy.pid chroot /var/lib/haproxy 最大连接数 8192 用户 haproxy 组 haproxy 守护进程 统计套接字 /var/lib/haproxy/stats tune.ssl.默认-dh-param 2048前端 ldap_service_front 模式 tcp 绑定 10.0.0.2:389 描述 LDAP 服务 选项套接字统计 选项 tcpka 客户端超时10秒 默认后端 ldap_service_back
后端 ldap_service_back 服务器 ldap01 10.0.0.3:389 检查下降 3 上升 5 间 5000 权重 10 服务器 ldap02 10.0.0.4:389 检查下降 3 上升 5 间 5000 权重 10 服务器 ldap03 10.0.0.5:389 检查下降 3 上升 5 间 5000 权重 10 服务器 ldap04 10.0.0.6:389 检查下降 3 上升 5 间 5000 权重 10
模式 tcp 平衡最小连接数 stick-table 类型 ip 大小 200k 有效期 30m 服务器超时12秒 连接超时10秒 选项 tcpka 选项 tcp-check tcp-检查连接端口 389 tcp-检查发送二进制 300c0201 tcp-检查发送二进制 01 tcp 检查发送二进制 6007 tcp-检查发送二进制 0201 tcp-检查发送二进制 03 tcp 检查发送二进制 04008000 tcp-check 期望二进制 0a0100 tcp-检查发送二进制 30050201034200
前端 ldaps_service_front 模式 tcp 绑定 10.0.0.2:636 ssl crt /etc/haproxy/ssl/chain.pem no-sslv3 no-tlsv10 描述 LDAPS 服务 选项套接字统计 选项 tcpka 客户端超时10秒 默认后端 ldaps_service_back
后端 ldaps_service_back 服务器 ldap01 10.0.0.3:636 检查 SSL 验证 无 下降 3 上升 5 中间 5000 权重 10 服务器 ldap02 10.0.0.4:636 检查 SSL 验证 无 下降 3 上升 5 中间 5000 权重 10 服务器 ldap03 10.0.0.5:636 检查 ssl 验证 无 下降 3 上升 5 中间 5000 权重 10 服务器 ldap04 10.0.0.6:636 检查 SSL 验证 无 下降 3 上升 5 中间 5000 权重 10
模式 tcp 平衡最小连接数 服务器超时12秒 连接超时10秒 选项 tcpka 选项 tcp-check tcp-检查连接端口 636 ssl tcp-检查发送二进制 300c0201 tcp-检查发送二进制 01 tcp 检查发送二进制 6007 tcp-检查发送二进制 0201 tcp-检查发送二进制 03 tcp 检查发送二进制 04008000 tcp-check 期望二进制 0a0100 tcp-检查发送二进制 30050201034200
所以,我的问题是:我在 haproxy 配置中遗漏了什么吗?我试图设置
idle_timelimit
,nslcd.conf
但根本没有帮助。更多可能有帮助的详细信息:
haproxy:HA-Proxy 版本 1.8.12-1~bpo9+1 openldap:slapd 2.4.44 nslcd:nss-pam-ldapd 0.8.13
答案1
frontend ldap_service_front
timeout client 10s
可能会导致空闲断开连接。
如果您为 haproxy 设置 nslcd 的idle_timelimit
值小于该值timeout client
,那么您就不应该收到这些消息。