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

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

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

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

Симптом

Если в пользовательском интерфейсе Edge не настроен SMTP, новым пользователям, добавляемым в 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 UI как новый пользователь с паролем, определенным на предыдущем шаге. Пользователь может установить новый пароль после входа в UI.

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

Симптом

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

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

Никаких ошибок не возникает, Edge UI просто не отображает список пользователей, которые должны были быть реплицированы на все серверы 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, которые используются для настройки репликации N-Way OpenLDAP, запустив dos2unix для файлов ldif, созданных для обновления конфигурации. Обычно файл ldif с недопустимыми символами приводит к сбою выполнения команды ldapmodify, и репликация может не быть настроена. Удалите все недопустимые символы и сохраните файлы конфигурации.

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

Невозможно запустить 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 UI. Использование утилиты 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 Private Cloud Operations Guide для получения рекомендаций по резервному копированию:

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. Переустановите Management Server, используя исходный файл конфигурации:
      /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 для получения дополнительной помощи.