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

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

В этом разделе представлена ​​информация и рекомендации по устранению неполадок 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 и найдите DN нового пользователя, добавленного на основе его адреса электронной почты.
  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 wrapper. Удалите все правила, которые препятствуют взаимодействию между серверами OpenLDAP. Обратитесь к сетевому администратору для правильной настройки правил.
  7. Убедитесь, что системный пароль OpenLDAP одинаков на каждом узле OpenLDAP.
  8. Проверьте файлы конфигурации ldif, используемые для настройки многопоточной репликации OpenLDAP, на наличие скрытых символов, запустив dos2unix для проверки файлов ldif, созданных для обновления конфигурации. Как правило, файл ldif, содержащий недопустимые символы, приводит к сбою команды ldapmodify, и, следовательно, репликация может быть не настроена. Удалите все недопустимые символы и сохраните файлы конфигурации.

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

Не удалось запустить OpenLDAP.

Симптом

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

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

SLAPD Dead But Pid File Exists

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

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

Диагноз

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

  1. Проверьте наличие файла блокировки процесса OpenLDAP slapd или файла PID в следующем расположении:
    /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. Если процесс OpenLDAP slapd не запускается, попробуйте запустить 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%, это может указывать на то, что причиной проблемы является нехватка места на диске в вашей системе.
  3. Проверьте согласованность данных на всех узлах LDAP:
    1. На каждом узле LDAP сравните количество пользователей и ролей. Выполните следующие команды и сравните результаты.
      ldapsearch -o ldif-wrap=no -b "ou=users,ou=global,dc=apigee,dc=com" -D "cn=manager,dc=apigee,dc=com" -H ldap://:10389 -LLL -x -w PASSWORD|wc -l
      ldapsearch -o ldif-wrap=no -b "ou=resources,ou=global,dc=apigee,dc=com" -D "cn=manager,dc=apigee,dc=com" -H ldap://:10389 -LLL -x -w PASSWORD|wc -l 
      Расхождение в количестве данных между узлами указывает на возможное повреждение данных.
    2. Проверьте состояние репликации LDAP. Выполните следующую команду на каждом узле LDAP.
        ldapsearch -x -LLL -H ldap://ldap_ip:10389 -s base -b 'dc=apigee,dc=com' contextCSN dn: dc=apigee,dc=com -D "cn=manager,dc=apigee,dc=com" -w PASSWORD dn: dc=apigee,dc=com 
      Если значение contextCSN одинаково на всех узлах, репликация LDAP работает корректно.

Разрешение

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

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

  1. Восстановите данные OpenLDAP из резервной копии.
  2. Для очистки базы данных OpenLDAP выполните следующие действия:
    1. Остановите сервер управления 2 и LDAP2 .
    2. Восстановите LDAP1 из резервной копии виртуальной машины (или резервной копии Apigee).
    3. Проверьте сервер управления 1 на предмет запуска и восстановления.
    4. После того, как сервер управления 1 и LDAP1 начнут корректно работать, переустановите LDAP2 с нуля (создав полностью чистую систему).
    5. Настройте LDAP2 в режиме только для чтения, разрешив LDAP1 реплицировать данные на LDAP2 .
    6. Используйте ldapsearch , чтобы убедиться, что количество строк в LDAP1 и LDAP2 совпадает.
    7. Перезапустите Management Server 2 и UI2 и убедитесь, что они успешно запустились.

Подробные инструкции см. в системе отслеживания публичных проблем .

Решение №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 с помощью команды move:
    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 с помощью команды move:
    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 за дополнительной помощью.