Устранение неполадок OpenLDAP

Вы просматриваете документацию Apigee Edge .
Перейдите к документации Apigee X.
информация

В этом разделе представлена ​​информация и рекомендации по устранению проблем OpenLDAP.

SMTP отключен, и пользователям необходимо сбросить пароль.

Симптом

Если SMTP не настроен в пользовательском интерфейсе Edge, новым пользователям, добавленным в Edge, потребуется способ установить пароль.

Сообщения об ошибках

Unknown username and password combination.

Возможные причины

Новые пользователи не могут получить электронное письмо от «Забыли пароль?» ссылка для установки пароля, поскольку SMTP не настроен.

Разрешение

Решить эту проблему можно одним из следующих способов:

Решение № 1. Настройте SMTP-сервер

Настройте SMTP-сервер для установки нового пароля для пользователя, используя инструкции, приведенные в документации .

Решение № 2. Использование LDAP

Если вы не можете настроить SMTP-сервер, используйте приведенные ниже команды LDAP, чтобы установить новый пароль для пользователя:

  1. Существующему администратору организации необходимо добавить конкретного пользователя через пользовательский интерфейс Edge, как показано ниже:

  2. Используйте команду ldapsearch , чтобы найти отличительное имя пользователя (dn) и перенаправить вывод в файл:
    ldapsearch -w Secret123 -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h localhost -p 10389 > ldap.txt

    Вот пример записи dn для пользователя вместе с атрибутами пользователя:

    dn:uid=f7a4a4a5-7c43-4168-a47e-6e9a1417cc29,ou=users,ou=global,dc=apigee,dc=com
    mail: apigee_validator@apigee.com
    userPassword:: e1NTSEF9b0FrMFFXVmFjbWRxM1BVaFZzMnllWGZMdkNvNjMwNTJlUDZYN3c9PQ=
     =
    uid: f7a4a4a5-7c43-4168-a47e-6e9a1417cc29
    objectClass: inetOrgPerson
    sn: Validator
    cn: apigee
  3. Откройте файл ldap.txt и найдите имя нового пользователя, которое было добавлено на основе атрибута электронной почты нового пользователя.
  4. Выполните команду ldappassword , чтобы добавить пароль для нового пользователя, используя его dn. В этом примере вы устанавливаете пароль пользователя Apigee123:
    ldappasswd -h localhost -p 10389 -D "cn=manager,dc=apigee,dc=com" -W -s Apigee123
    "uid=f7a4a4a5-7c43-4168-a47e-6e9a1417cc29,ou=users,ou=global,dc=apigee,dc=com"
  5. Войдите в пользовательский интерфейс Edge как новый пользователь с паролем, определенным на предыдущем шаге. Пользователь может установить новый пароль после входа в пользовательский интерфейс.

LDAP не реплицируется

Симптом

Многие установки Edge имеют несколько центров обработки данных, например DC-1 и DC-2. При входе в пользовательский интерфейс Edge в DC-1 в качестве администратора организации вы можете просмотреть список пользователей, но тот же список пользователей не отображается в пользовательском интерфейсе Edge в DC-2.

Сообщения об ошибках

Никаких ошибок не появляется, пользовательский интерфейс Edge просто не отображает список пользователей, который должен был быть реплицирован на все серверы OpenLDAP.

Возможные причины

Обычно причиной этой проблемы является неправильно настроенная конфигурация репликации OpenLDAP, а не сама установка. Также репликация может прерваться, если сеть между серверами OpenLDAP не пропускает трафик по порту 10389.

Диагностика

Для диагностики проблемы выполните следующие действия:

  1. Проверьте, возвращает ли ldapsearch данные с каждого сервера OpenLDAP:
    ldapsearch -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h <host-ip> -p 10389
  2. Проверьте, можете ли вы подключиться к каждому узлу OpenLDAP с других узлов OpenLDAP через порт 10389. Если установлен telnet, используйте следующую команду:
    telnet <OpenLDAP_Peer_IP> 10389
  3. Если telnet недоступен, используйте netcat для проверки соединения следующим образом:

    nc -vz <OpenLDAP_Peer_IP> 10389
  4. Проверьте конфигурацию репликации в следующем файле:
    /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif

    Файл должен содержать такую ​​конфигурацию:

    olcSyncRepl: rid=001
      provider=ldap://__OTHER_LDAP_SERVER__/
      binddn="cn=manager,dc=apigee,dc=com"
      bindmethod=simple
      credentials=__LDAP_PASSWORD__
      searchbase="dc=apigee,dc=com"
      attrs="*,+"
      type=refreshAndPersist
      retry="60 1 300 12 7200 +"
      timeout=1
  5. Также проверьте тот же файл на наличие значения атрибута olcMirrorMode. Ему должно быть присвоено значение TRUE:
    grep olcMirrorMode /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
  6. Проверьте правила iptables и TCP-оболочки. Пожалуйста, удалите все правила, которые не позволяют одноранговым серверам OpenLDAP взаимодействовать друг с другом. Обратитесь к своему сетевому администратору, чтобы установить соответствующие правила.
  7. Убедитесь, что системный пароль OpenLDAP одинаков на каждом узле OpenLDAP.
  8. Проверьте наличие скрытых символов в файлах конфигурации ldif, которые используются для настройки репликации N-Way OpenLDAP, запустив dos2unix для файлов ldif, созданных для обновления конфигурации. Обычно файл ldif, содержащий неверные символы, приводит к сбою запуска команды ldapmodify, и поэтому репликация может быть не настроена. Удалите все недопустимые символы и сохраните файлы конфигурации.

Если проблема не устранена, обратитесь в службу поддержки Apigee за помощью в настройке репликации N-Way OpenLDAP.

Невозможно запустить OpenLDAP

Симптом

OpenLDAP не запускается.

Сообщения об ошибках

SLAPD Dead But Pid File Exists

Возможные причины

Эта проблема обычно вызвана файлом блокировки, который остался в файловой системе и должен быть удален.

Диагностика

Чтобы диагностировать эту проблему, выполните следующие действия:

  1. Проверьте наличие файла блокировки процесса slapd или pid OpenLDAP в следующем расположении:
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  2. Удалите файл блокировки и pid, если они найдены, и попробуйте перезапустить openldap.
    rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    Rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  3. Если запустится процесс OpenLDAP slapd, пропустите следующие шаги.
  4. Если процесс slapd OpenLDAP не запускается, попробуйте запустить slapd в режиме отладки и найдите ошибки:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
  5. Ошибки могут указывать на проблемы с ресурсами. Проверьте загрузку памяти и процессора в системе.
  6. Проверьте версию OpenLDAP и обновите ее, если она старая. Проверьте поддерживаемые версии OpenLDAP в нашем документе «Поддерживаемое программное обеспечение» .
    slapd -V
  7. Используйте strace для устранения неполадок в процессе slapd и для предоставления вывода strace в службу поддержки Apigee :
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>

Повреждение данных OpenLDAP

Симптом

Пользователи больше не могут выполнять вызовы управления или входить в пользовательский интерфейс Edge. Использование утилиты ldapsearch для запроса пользователей может указать, что пользователь существует в хранилище данных LDAP, или определить возможные отсутствующие пользователи или роли.

Сообщения об ошибках

Unknown username and password combination.

Возможные причины

Обычно эта проблема может наблюдаться из-за повреждения данных OpenLDAP. Обычно данные OpenLDAP не повреждаются. Но в тех редких случаях, когда это происходит, повреждение может быть связано с сбоем системного диска или проблемами с дисковым пространством.

Диагностика

  1. Проверьте дисковое пространство в системе, в которой установлен OpenLDAP, с помощью следующей команды:
    du -m /opt
  2. Если вы видите, что используемое дисковое пространство очень близко к 100%, это может указывать на то, что причиной этой проблемы является нехватка дискового пространства в вашей системе.

Разрешение

Если в вашей системе закончилось место на диске или оно почти закончилось, добавьте больше места на диске, чтобы убедиться, что у вас достаточно места на диске.

Если у вас достаточно места на диске, воспользуйтесь одним из следующих решений для решения проблемы повреждения данных LDAP:

  1. Восстановите данные OpenLDAP из резервной копии.
  2. Очистите базу данных OpenLDAP.

Решение № 1. Восстановите данные LDAP из резервной копии.

На рабочем узле OpenLDAP сделайте резервную копию. Резервное копирование следует выполнять регулярно. Рекомендации по резервному копированию см. в Руководстве по эксплуатации частного облака Apigee :

slapcat -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif

Следующие шаги можно использовать для восстановления данных OpenLDAP из хорошей резервной копии.

  1. Остановите узел OpenLDAP, данные которого необходимо восстановить:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
  2. Измените каталог на каталог данных OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
  3. Создайте резервную копию существующих данных OpenLDAP с помощью команды перемещения:
    mv ldap ldap_orig
  4. Переключитесь на пользователя Apigee:
    su apigee
  5. В каталоге /opt/apigee/data/apigee-openldap создайте новый каталог данных OpenLDAP с исходным именем:
    mkdir ldap
  6. Возьмите резервную копию подкаталога ldap_orig/DB_CONFIG из шага 3 и скопируйте ее в каталог openldap.
    cp ldap_orig/DB_CONFIG ldap
  7. Чтобы восстановить данные из резервной копии, сделанной с помощью slapcat, используйте slapadd для импорта ldif, содержащего хорошие данные:
    slapadd -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif
  8. Запустите процесс OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start

Решение № 2. Очистите базу данных LDAP.

Следующие шаги уничтожат базу данных OpenLDAP, чтобы начать все сначала. Это решение можно использовать, если нет резервной копии данных последнего состояния, в котором работали данные OpenLDAP.

  1. Остановите службу OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
  2. Измените каталог на каталог данных OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
  3. Создайте резервную копию существующих данных OpenLDAP с помощью команды перемещения:
    mv ldap ldap_orig
  4. Переключитесь на пользователя Apigee:
    su apigee
  5. Создайте новый каталог данных OpenLDAP с исходным именем:
    mkdir ldap
  6. Возьмите резервный подкаталог ldap_orig/DB_CONFIG из шага 3 и скопируйте его в каталог openldap:
    cp ldap_orig/DB_CONFIG ldap
  7. Перезапустите процесс OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
  8. Перезапустите сервер управления, чтобы принудительно обновить соединения с OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart

Решение № 3. Сбросьте OpenLDAP к базовой установке.

Если Решение № 2 не решает проблему, вы можете сбросить OpenLDAP до базовой установки, как описано в этом разделе.

Предварительные условия

Чтобы сбросить OpenLDAP, вам необходимы следующие предварительные условия:

  • Возможность запуска установки с учетными данными системного администратора и root LDAP.
  • Доступ к утилите ldapadd .
  • Сохраненный исходный файл автоматической конфигурации для узла управления/LDAP.

Чтобы сбросить OpenLDAP, выполните следующие действия:

  1. Переустановите OpenLDAP и сервер управления.
    1. Остановите сервер openldap :
      apigee-service apigee-openldap stop
    2. Удалите поврежденную папку данных openldap :
      rm -rf /opt/apigee/data/apigee-openldap
    3. Удалите компонент openldap :
      apigee-service apigee-openldap uninstall
    4. Переустановите компонент openldap используя тот же файл конфигурации, который использовался при первоначальной установке:
      /opt/apigee/apigee-setup/bin/setup.sh -p ld -f configfile
      где configfile — имя файла конфигурации.
    5. Переустановите Сервер управления, используя исходный файл конфигурации:
      /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configfile

    After doing these steps, Management API calls should work again using the sysadmin account only. However, it will not be possible to log into the Edge UI, and Management API calls with any other users will not work.

  2. Add missing openldap entries for orgs that existed prior to the corruption.

    After the above step is completed, openldap will be missing entries for orgs that existed when the corruption occurred. The majority of the actual org data such as proxy bundles is stored in Cassandra or Zookeeper is not lost. However, running the setup-org script will not automatically add the openldap data for the orgs that already exist in Cassandra, and Zookeeper. This data has to be added manually for every org that existed prior to the corruption using the following steps:

    1. Create an ldif file called missingLDAP.ldif with the following content:
      # orgname, organizations, apigee.com
      dn: o=orgname,ou=organizations,dc=apigee,dc=com
      objectClass: organization
      O: orgname
      
      # userroles, orgname, organizations, apigee.com
      dn: ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
      ou: userroles
      objectClass: organizationalUnit
      
      # orgadmin, userroles, orgname, organizations, apigee.com
      dn: cn=orgadmin,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
      objectClass: organizationalRole
      cn: orgadmin
      roleOccupant: uid=admin,ou=users,ou=global,dc=apigee,dc=com
      
      # resources, orgadmin, userroles, orgname, organizations, apigee.com
      dn: ou=resources,cn=orgadmin,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
      ou: resources
      objectClass: organizationalUnit
      
      # @@@, resources, orgadmin, userroles, orgname, organizations, apigee.com
      dn: cn=@@@,ou=resources,cn=orgadmin,ou=userroles,o=orgname,ou=organizations,dc=apigee,dc=com
      roleOccupant: ou=delete,ou=permissions,dc=apigee,dc=com
      roleOccupant: ou=get,ou=permissions,dc=apigee,dc=com
      roleOccupant: ou=put,ou=permissions,dc=apigee,dc=com
      labeledURI: /
      objectClass: organizationalRole
      objectClass: labeledURIObject
      cn: @@@

      где orgname — это организация, которую вы пытаетесь воссоздать.

    2. Добавьте недостающие объекты LDAP с помощью следующей команды:
      ldapadd -x -w  -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -f missingLDAP.ldif

    Вышеуказанные шаги создадут недостающие записи для существующей организации и разрешения orgadmin для этой организации. Повторите шаги для каждой организации, которую необходимо воссоздать. На этом этапе вы можете добавить пользователей orgadmin в организацию, но другие роли по умолчанию еще не существуют, поэтому вам необходимо добавить их на следующем шаге.

  3. Добавьте недостающие роли и разрешения по умолчанию в существующую организацию.

    Используя тот же файл конфигурации, который изначально использовался для настройки любой из существующих организаций, выполните следующую команду:

    /opt/apigee/apigee-service/bin/apigee-service apigee-provision create-roles -f configfile
  4. После выполнения этой процедуры вам необходимо вручную:

    • Добавьте любые пользовательские роли, существовавшие до повреждения, с помощью пользовательского интерфейса или API управления.
    • Добавьте всех пользователей к соответствующим ролям пользователей.
  5. (Необязательно) Восстановите конфигурацию внешней аутентификации в системе управления.

    Восстановите файл /opt/apigee/customer/application/management-server.properties , если конфигурация не изменилась. Поскольку пользовательский интерфейс не переустанавливался, файл /opt/apigee/customer/application/ui.properties должен остаться прежним, поскольку учетные данные системного администратора были восстановлены при новой установке управления.

  6. (Необязательно) Переустановите Apigee mTLS на узле управления.

    Если Apigee mTLS был установлен ранее, следуйте Руководству по установке Apigee mTLS, чтобы переустановить его на узле сервера управления.

Если проблема не устранена, обратитесь в службу поддержки Apigee для получения дополнительной помощи.