Назад | Перейти на главную страницу

slapd неожиданно завершает работу после обновления CentOS 7.7

После обновления с CentOS 7.6 до 7.7 процесс slapd получает запрос на завершение работы через несколько секунд после своего запуска. Где я должен включить ведение журнала, чтобы получить дополнительную информацию?

Я использую OpenLdap в CentOS 6/7 как серверную часть аутентификации, которая годами работала нормально.

Перезапуск slapd:

systemctl start slapd.service

приводит к ошибке тайм-аута.

Перезапуск через:

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

кажется обходным путем.

Любая помощь приветствуется.

После обновления на CentOS 7 у меня возникла та же проблема. Я устранял неполадки в течение нескольких недель, включая настройку файлов конфигурации, разрешений, восстановление баз данных, yum понижение версии OpenLDAP (болезненно). Я никогда не мог понять, почему обслуживание истекает и останавливается. Я видел похожие темы, касающиеся других процессов systemd, делающих похожие вещи (mysql, samba), и даже видел недавнюю ошибку CentOS, которая кажется актуальной, но еще не исправлена. Я даже попытался установить сервер каталогов 389 и его консоль администратора. Это выглядит многообещающим решением в будущем, поскольку OpenLDAP в конечном итоге будет устаревшим, но после того, как я потратил все время на его запуск и обнаружение различий в схемах, я решил использовать следующий ленивый прием, чтобы получить свой сервис slapd запускаться с очень долгим таймаутом.

В файле /etc/systemd/system/multi-user.target.wants/slapd.service я добавил следующую строку в блок [Service]:

TimeoutSec = 31536000

Это тайм-аут в 1 год для запуска службы. Поскольку я, вероятно, чаще перезагружаю свой сервер, это казалось разумным выбором. Я считаю, что это тайм-аут для запуска службы и не связан ни с какими операциями запросов LDAP. Я знаю, что это лениво, это не исправление, но он вернул мой рабочий сервер в оперативный режим в отношении запуска и аутентификации службы slapd, как это было до обновления yum. Надеюсь, это поможет и вам, пока решение не будет опубликовано.

Редактировать: 21.03.2020 Сделано еще несколько открытий:

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, но не на CentOS 7.7 после выполнения обновления yum.

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 должна запускаться в фоновом режиме с помощью &, чтобы запускающая оболочка могла отключиться по истечении периода, указанного в "TimeoutSec":

systemctl запустить slapd &