Rozwiązywanie problemów z OpenLDAP

Wyświetlasz dokumentację Apigee Edge.
Przejdź do dokumentacji Apigee X.
info

W tej sekcji znajdziesz informacje i wskazówki dotyczące rozwiązywania problemów z OpenLDAP.

SMTP jest wyłączony, a użytkownicy muszą zresetować hasło

Krótki opis problemu

Gdy SMTP nie jest skonfigurowany w interfejsie Edge, nowi użytkownicy dodani do Edge muszą mieć możliwość ustawienia hasła.

Komunikaty o błędach

Unknown username and password combination.

Możliwe przyczyny

Nowi użytkownicy nie mogą otrzymać e-maila z linku „Nie pamiętasz hasła?”, aby ustawić hasło, ponieważ SMTP nie jest skonfigurowany.

Rozdzielczość

Ten problem możesz rozwiązać na jeden z tych sposobów:

Rozwiązanie 1: skonfiguruj serwer SMTP

Skonfiguruj serwer SMTP, aby ustawić nowe hasło użytkownika, korzystając z instrukcji podanych w dokumentacji.

Rozwiązanie 2: użyj LDAP

Jeśli nie możesz skonfigurować serwera SMTP, użyj tych poleceń LDAP, aby ustawić nowe hasło użytkownika:

  1. Dotychczasowy administrator organizacji musi dodać konkretnego użytkownika w interfejsie Edge, jak pokazano poniżej:

  2. Użyj polecenia ldapsearch , aby znaleźć nazwę wyróżniającą użytkownika (dn) i przekierować dane wyjściowe do pliku:
    ldapsearch -w Secret123 -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h localhost -p 10389 > ldap.txt
    

    Oto przykład wpisu dn użytkownika wraz z jego atrybutami:

    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. Otwórz plik ldap.txt i znajdź nazwę wyróżniającą nowego użytkownika, który został dodany na podstawie atrybutu e-mail nowego użytkownika.
  4. Uruchom polecenie ldappassword , aby dodać hasło dla nowego użytkownika za pomocą jego nazwy wyróżniającej. W tym przykładzie ustawiasz hasło użytkownika na 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. Zaloguj się w interfejsie Edge jako nowy użytkownik, używając hasła zdefiniowanego w poprzednim kroku. Po zalogowaniu się w interfejsie użytkownik może ustawić nowe hasło.

LDAP nie jest replikowany

Krótki opis problemu

Wiele instalacji Edge ma kilka centrów danych, np. DC-1 i DC-2. Gdy zalogujesz się w interfejsie Edge w DC-1 jako administrator organizacji, możesz wyświetlić listę użytkowników, ale ta sama lista użytkowników nie pojawia się w interfejsie Edge w DC-2.

Komunikaty o błędach

Nie pojawiają się żadne błędy. Interfejs Edge po prostu nie wyświetla listy użytkowników, która powinna być replikowana na wszystkich serwerach OpenLDAP.

Możliwe przyczyny

Przyczyną tego problemu jest zwykle nieprawidłowo skonfigurowana replikacja OpenLDAP, a nie sama instalacja. Replikacja może też zostać przerwana, jeśli sieć między serwerami OpenLDAP nie zezwala na ruch na porcie 10389.

Diagnostyka

Aby zdiagnozować problem, wykonaj te czynności:

  1. Sprawdź, czy narzędzie ldapsearch zwraca dane z każdego serwera OpenLDAP:
    ldapsearch -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h <host-ip> -p 10389
    
  2. Sprawdź, czy możesz połączyć się z każdym węzłem OpenLDAP z innych węzłów OpenLDAP na porcie 10389. Jeśli masz zainstalowany program telnet, użyj tego polecenia:
    telnet <OpenLDAP_Peer_IP> 10389
    
  3. Jeśli program telnet nie jest dostępny, użyj narzędzia netcat, aby sprawdzić połączenie:

    nc -vz <OpenLDAP_Peer_IP> 10389
    
  4. Sprawdź konfigurację replikacji w tym pliku:
    /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif

    Plik powinien zawierać taką konfigurację:

      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. Sprawdź też w tym samym pliku wartość atrybutu olcMirrorMode. Powinna być ustawiona na TRUE:
    grep olcMirrorMode /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
    
  6. Sprawdź reguły iptables i tcp wrapper. Usuń wszystkie reguły, które uniemożliwiają komunikację między serwerami OpenLDAP. Poproś administratora sieci o odpowiednie skonfigurowanie reguł.
  7. Upewnij się, że hasło systemowe OpenLDAP jest takie samo w każdym węźle OpenLDAP.
  8. Sprawdź, czy w plikach konfiguracji ldif używanych do konfigurowania replikacji OpenLDAP N-Way nie ma ukrytych znaków. W tym celu uruchom polecenie dos2unix w plikach ldif utworzonych w celu zaktualizowania konfiguracji. Zwykle plik ldif zawierający nieprawidłowe znaki powoduje, że polecenie ldapmodify nie działa, a replikacja może nie zostać skonfigurowana. Usuń wszystkie nieprawidłowe znaki i zapisz pliki konfiguracji.

Jeśli problem nadal występuje, skontaktuj się z zespołem pomocy Apigee, aby uzyskać pomoc w skonfigurowaniu replikacji OpenLDAP N-Way.

Nie można uruchomić OpenLDAP

Krótki opis problemu

OpenLDAP nie uruchamia się.

Komunikaty o błędach

SLAPD Dead But Pid File Exists

Możliwe przyczyny

Ten problem jest zwykle spowodowany plikiem blokady, który pozostał w systemie plików i należy go usunąć.

Diagnostyka

Aby zdiagnozować ten problem, wykonaj te czynności:

  1. Sprawdź, czy w tej lokalizacji nie ma pliku blokady lub pliku pid procesu slapd OpenLDAP:
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  2. Jeśli znajdziesz plik blokady i plik pid, usuń je i spróbuj ponownie uruchomić OpenLDAP.
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  3. Jeśli proces slapd OpenLDAP się uruchomi, pomiń te czynności.
  4. Jeśli proces slapd OpenLDAP się nie uruchomi, spróbuj uruchomić slapd w trybie debugowania i poszukaj błędów:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
    
  5. Błędy mogą wskazywać na problemy z zasobami. Sprawdź wykorzystanie pamięci i procesora w systemie.
  6. Sprawdź wersję OpenLDAP i zaktualizuj ją, jeśli jest stara. Obsługiwane wersje OpenLDAP znajdziesz w dokumencie Obsługiwane oprogramowanie.
    slapd -V
    
  7. Użyj narzędzia strace, aby rozwiązać problemy z procesem slapd i przekazać dane wyjściowe strace do zespołu pomocy Apigee:
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>
    

Uszkodzenie danych OpenLDAP

Krótki opis problemu

Użytkownicy nie mogą już wykonywać wywołań zarządzania ani logować się w interfejsie Edge. Użycie narzędzia ldapsearch do wysyłania zapytań do użytkowników może wskazywać, że użytkownik istnieje w magazynie danych LDAP, lub może wskazywać na brakujących użytkowników lub role.

Komunikaty o błędach

Unknown username and password combination.

Możliwe przyczyny

Ten problem może być spowodowany uszkodzeniem danych OpenLDAP. Zwykle dane OpenLDAP nie ulegają uszkodzeniu. Jednak w rzadkich przypadkach może to nastąpić z powodu awarii dysku systemowego lub problemów z miejscem na dysku.

Diagnostyka

  1. Sprawdź miejsce na dysku w systemie, w którym jest zainstalowany OpenLDAP, za pomocą tego polecenia:
    du -m /opt
    
  2. Jeśli widzisz, że wykorzystanie miejsca na dysku jest bliskie 100%, oznacza to, że przyczyną tego problemu jest brak miejsca na dysku w systemie.
  3. Sprawdź spójność danych w węzłach LDAP:
    1. W każdym węźle LDAP porównaj liczbę użytkowników i ról. Uruchom te polecenia i porównaj wyniki.
      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 
      Rozbieżność w liczbie między węzłami może wskazywać na uszkodzenie danych.
    2. Sprawdź stan replikacji LDAP. Uruchom to polecenie w każdym węźle 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 
      Jeśli wartość contextCSN jest identyczna we wszystkich węzłach, replikacja LDAP działa prawidłowo.

Rozdzielczość

Jeśli w systemie brakuje miejsca na dysku lub jest on bliski wyczerpania, dodaj więcej miejsca na dysku, aby zapewnić wystarczającą dostępność.

Gdy będziesz mieć wystarczająco dużo miejsca na dysku, użyj jednego z tych rozwiązań, aby rozwiązać problem z uszkodzeniem danych LDAP:

  1. Przywróć dane OpenLDAP z kopii zapasowej.
  2. Wyczyść bazę danych OpenLDAP, wykonując te czynności:
    1. Wyłącz serwer zarządzania 2 i LDAP2.
    2. Przywróć LDAP1 z kopii zapasowej maszyny wirtualnej (lub kopii zapasowej Apigee).
    3. Sprawdź, czy serwer zarządzania 1 uruchamia się i odzyskuje dane.
    4. Gdy serwer zarządzania 1 i LDAP1 będą działać prawidłowo, zainstaluj ponownie LDAP2 od zera (tworząc całkowicie pustą instancję).
    5. Skonfiguruj LDAP2 w trybie tylko do odczytu, aby LDAP1 mógł replikować dane do LDAP2.
    6. Użyj polecenia ldapsearch, aby sprawdzić, czy liczba wierszy w LDAP1 i LDAP2 jest taka sama.
    7. Uruchom ponownie serwer zarządzania 2 i UI2 i sprawdź, czy uruchamiają się prawidłowo.

Szczegółowe instrukcje znajdziesz w publicznym narzędziu do śledzenia problemów.

Rozwiązanie 1. Przywróć dane LDAP z kopii zapasowej

Utwórz kopię zapasową w działającym węźle OpenLDAP. Kopia zapasowa powinna być tworzona regularnie. Sprawdzone metody tworzenia kopii zapasowych znajdziesz w przewodniku po operacjach w Apigee Private Cloud:

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

Aby przywrócić dane OpenLDAP z prawidłowej kopii zapasowej, wykonaj te czynności.

  1. Zatrzymaj węzeł OpenLDAP, dla którego trzeba przywrócić dane:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Zmień katalog na katalog danych OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Utwórz kopię zapasową istniejących danych OpenLDAP za pomocą polecenia move:
    mv ldap ldap_orig
    
  4. Przełącz się na użytkownika apigee:
    su apigee
    
  5. W katalogu /opt/apigee/data/apigee-openldap utwórz nowy katalog danych OpenLDAP o oryginalnej nazwie:
    mkdir ldap
    
  6. Utwórz kopię zapasową podkatalogu ldap_orig/DB_CONFIG z kroku 3 i skopiuj ją do katalogu openldap.
    cp ldap_orig/DB_CONFIG ldap
    
  7. Aby przywrócić dane z kopii zapasowej utworzonej za pomocą polecenia slapcat, użyj polecenia slapadd, aby zaimportować plik ldif, który zawiera prawidłowe dane:
    slapadd -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif
    
  8. Uruchom proces OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    

Rozwiązanie 2. Zwalnianie miejsca w bazie danych LDAP

Te czynności powodują wyczyszczenie bazy danych OpenLDAP, aby można było zacząć od nowa. To rozwiązanie można zastosować, jeśli nie ma kopii zapasowej danych z ostatniego stanu, w którym dane OpenLDAP działały.

  1. Zatrzymaj usługę OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Zmień katalog na katalog danych OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Utwórz kopię zapasową istniejących danych OpenLDAP za pomocą polecenia move:
    mv ldap ldap_orig
    
  4. Przełącz się na użytkownika apigee:
    su apigee
    
  5. Utwórz nowy katalog danych OpenLDAP o oryginalnej nazwie:
    mkdir ldap
    
  6. Utwórz kopię zapasową podkatalogu ldap_orig/DB_CONFIG z kroku 3 i skopiuj ją do katalogu openldap directory:
    cp ldap_orig/DB_CONFIG ldap
    
  7. Uruchom ponownie proces OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    
  8. Uruchom ponownie serwer zarządzania, aby wymusić odświeżenie połączeń z OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    

Rozwiązanie 3. Zresetuj OpenLDAP do podstawowej instalacji

Jeśli rozwiązanie 2 nie rozwiąże problemu, możesz zresetować OpenLDAP do podstawowej instalacji, jak opisano w tej sekcji.

Wymagania wstępne

Aby zresetować OpenLDAP, musisz spełnić te wymagania wstępne:

  • Możliwość uruchomienia konfiguracji za pomocą danych logowania administratora systemu i administratora głównego LDAP.
  • Dostęp do narzędzia ldapadd.
  • Zapisany oryginalny plik konfiguracji cichej dla węzła zarządzania/LDAP.

Aby zresetować OpenLDAP, wykonaj te czynności:

  1. Zainstaluj ponownie OpenLDAP i serwer zarządzania.
    1. Zatrzymaj serwer openldap:
      apigee-service apigee-openldap stop
    2. Usuń uszkodzony folder danych openldap:
      rm -rf /opt/apigee/data/apigee-openldap
    3. Odinstaluj komponent openldap:
      apigee-service apigee-openldap uninstall
    4. Zainstaluj ponownie komponent openldap, używając tego samego pliku konfiguracji, który został użyty do początkowej instalacji:
      /opt/apigee/apigee-setup/bin/setup.sh -p ld -f configfile
      gdzie configfile to nazwa pliku konfiguracji.
    5. Zainstaluj ponownie serwer zarządzania, używając oryginalnego pliku konfiguracji:
      /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: @@@

      gdzie orgname to nazwa organizacji, którą próbujesz odtworzyć.

    2. Dodaj brakujące encje LDAP za pomocą tego polecenia:
      ldapadd -x -w  -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -f missingLDAP.ldif

    Powyższe czynności spowodują utworzenie brakujących wpisów dla istniejącej organizacji oraz uprawnień orgadmin dla tej organizacji. Powtórz te czynności w przypadku każdej organizacji, którą trzeba odtworzyć. W tym momencie możesz dodać użytkowników orgadmin do organizacji, ale inne role domyślne jeszcze nie istnieją, więc musisz je dodać w następnym kroku.

  3. Dodaj brakujące role i uprawnienia domyślne do istniejącej organizacji.

    Uruchom to polecenie, używając tego samego pliku konfiguracji, który został użyty do początkowej konfiguracji dowolnej z istniejących organizacji:

    /opt/apigee/apigee-service/bin/apigee-service apigee-provision create-roles -f configfile
  4. Po wykonaniu tej procedury musisz ręcznie:

    • dodaj wszystkie role niestandardowe, które istniały przed uszkodzeniem, za pomocą interfejsu lub interfejsu API zarządzania,
    • dodaj użytkowników do odpowiednich ról.
  5. (Opcjonalnie) Przywróć konfigurację uwierzytelniania zewnętrznego w zarządzaniu.

    Jeśli konfiguracja się nie zmieniła, przywróć plik /opt/apigee/customer/application/management-server.properties. Ponieważ interfejs nie został ponownie zainstalowany, plik /opt/apigee/customer/application/ui.properties powinien pozostać taki sam, ponieważ dane logowania administratora systemu zostały przywrócone wraz z nową instalacją zarządzania.

  6. (Opcjonalnie) Zainstaluj ponownie Apigee mTLS w węźle zarządzania.

    Jeśli Apigee mTLS zostało wcześniej zainstalowane, postępuj zgodnie z instrukcjami w przewodniku instalacji Apigee mTLS, aby zainstalować je ponownie w węźle serwera zarządzania.

Jeśli problem nadal występuje, skontaktuj się z zespołem pomocy Apigee Support.