CentOS 7.7 升级后,slapd 意外关闭

CentOS 7.7 升级后,slapd 意外关闭

从 CentOS 7.6 升级到 7.7 后,slapd 进程在启动几秒钟后收到关闭请求。我必须在哪里启用日志记录才能获取更多信息?

我在 CentOS 6/7 上使用 OpenLdap 作为身份验证后端,多年来运行良好。

通过以下方式重新启动 slapd:

systemctl start slapd.service

导致超时错误。

重新启动:

/usr/sbin/slapd -u ldap -h "ldapi:/// ldap:///" -F /etc/openldap/slapd.d/

似乎是一个解决方法。

任何帮助都将受到赞赏。

答案1

在 CentOS 7 上升级后,我遇到了同样的问题。我已经排除了几个星期的故障,包括调整配置文件、权限、恢复数据库、使用 yum 降级 OpenLDAP(很痛苦)。我一直无法弄清楚为什么服务会超时并停止。我见过类似的线程,关于其他 systemd 进程做类似的事情(mysql、samba),甚至见过最近的 CentOS 错误,似乎相关但尚未修复。我甚至尝试安装 389 目录服务器及其管理控制台。这看起来像是一个有前途的解决方案,因为 OpenLDAP 最终将被弃用,但在我花了这么多时间让它运行并发现存在架构差异之后,我决定使用以下偷懒的技巧让我的 slapd 服务在启动时以非常长的超时时间运行。

在文件 /etc/systemd/system/multi-user.target.wants/slapd.service 中,我在 [Service] 块中添加了以下行:

超时时间=31536000

这是服务启动的 1 年超时时间。由于我可能会更频繁地重启服务器,所以这似乎是一个合理的选择。我相信这是服务启动的超时时间,与任何 LDAP 查询操作无关。我知道这很偷懒,不是解决办法,但它让我的生产服务器重新上线,slapd 服务运行和身份验证就像 yum 更新之前一样。希望它也能帮助你在发布解决方案之前继续运行。

编辑:2020 年 3 月 21 日还有其他一些发现:

1) 在 centos.org 的常规发行版上,这似乎工作正常。我创建了一个本地虚拟机来测试它并证明它有效。我的发行版来自 GoDaddy(CentOS 7.4),yum 更新将其升级到 CentOS 7.7。然而,这似乎是发行版而不是 OpenLDAP 的一个错误。我得出这个结论是因为 OpenLDAP 的版本(openldap-servers.x86_64-2.4.44-21.el7_6)似乎可以在 CentOS 7.4 上运行,但在进行 yum 更新后无法在 CentOS 7.7 上运行。

2) 上面描述的 systemctl 单元文件实际上是一个符号链接。我似乎更幸运(更稳定)编辑符号链接的源代码:/usr/lib/systemd/system/slapd.service

3)这里有一个执行解决方法的简单 bash 脚本:

#!/bin/bash echo -e "\n... Implementing OpenLDAP timeout workaround\n" sed -i '/$SLAPD_OPTIONS/a TimeoutSec=31536000' /usr/lib/systemd/system/slapd.service systemctl enable slapd.service systemctl start slapd &

4) 为了使此解决方法起作用,必须使用 & 在后台启动 slapd 服务,以便启动 shell 可以在“TimeoutSec”指示的时间段后超时:

systemctl 启动 slapd &

相关内容