Solución de problemas de OpenLDAP

Estás viendo la documentación de Apigee Edge.
Ir a la documentación de Apigee X.
info

En esta sección, se proporciona información y orientación para solucionar problemas de OpenLDAP.

SMTP está inhabilitado y los usuarios deben restablecer la contraseña

Síntoma

Cuando SMTP no está configurado en la IU de Edge, los usuarios nuevos que se agregan a Edge necesitan una forma de establecer una contraseña.

Mensajes de error

Unknown username and password combination.

Causas posibles

Los usuarios nuevos no pueden recibir un correo electrónico del vínculo “¿Olvidaste tu contraseña?” para establecer una contraseña porque SMTP no está configurado.

Solución

Puedes abordar este problema de una de las siguientes maneras:

Solución 1: Configura el servidor SMTP

Configura el servidor SMTP para establecer una contraseña nueva para el usuario con las instrucciones que se proporcionan en la documentación.

Solución 2: Usa LDAP

Si no puedes configurar el servidor SMTP, usa los siguientes comandos de LDAP para establecer la contraseña nueva de un usuario:

  1. Un administrador de la organización existente debe agregar el usuario específico a través de la IU de Edge, como se muestra a continuación:

  2. Usa el comando ldapsearch para encontrar el nombre distintivo (dn) del usuario y redireccionar el resultado a un archivo:
    ldapsearch -w Secret123 -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h localhost -p 10389 > ldap.txt
    

    Este es un ejemplo de una entrada dn para un usuario, junto con los atributos del usuario:

    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. Abre el archivo ldap.txt y busca el dn del usuario nuevo que se agregó según el atributo de correo electrónico del usuario nuevo.
  4. Ejecuta el comando ldappassword para agregar una contraseña para el usuario nuevo con su dn. En este ejemplo, se establece la contraseña del usuario en 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. Accede a la IU de Edge como el usuario nuevo con la contraseña definida en el paso anterior. El usuario puede establecer una contraseña nueva una vez que accede a la IU.

LDAP no se replica

Síntoma

Muchas instalaciones de Edge tienen varios centros de datos, por ejemplo, DC-1 y DC-2. Cuando accedes a la IU de Edge en DC-1 como administrador de la organización, puedes ver la lista de usuarios, pero la misma lista de usuarios no aparece en la IU de Edge en DC-2.

Mensajes de error

No aparecen errores, la IU de Edge simplemente no muestra la lista de usuarios que deberían haberse replicado en todos los servidores OpenLDAP.

Causas posibles

Por lo general, la causa de este problema es una configuración de replicación de OpenLDAP mal configurada, no la instalación en sí. Además, la replicación puede interrumpirse si la red entre los servidores OpenLDAP no permite el tráfico en el puerto 10389.

Diagnóstico

Sigue estos pasos para diagnosticar el problema:

  1. Verifica si ldapsearch muestra datos de cada servidor OpenLDAP:
    ldapsearch -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h <host-ip> -p 10389
    
  2. Verifica si puedes conectarte a cada nodo OpenLDAP desde los otros nodos OpenLDAP en el puerto 10389. Si telnet está instalado, usa el siguiente comando:
    telnet <OpenLDAP_Peer_IP> 10389
    
  3. Si telnet no está disponible, usa netcat para verificar la conectividad de la siguiente manera:

    nc -vz <OpenLDAP_Peer_IP> 10389
    
  4. Verifica la configuración de replicación en el siguiente archivo:
    /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif

    El archivo debe contener una configuración como esta:

      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. También verifica el mismo archivo para obtener el valor del atributo olcMirrorMode. Debe establecerse en el valor TRUE:
    grep olcMirrorMode /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
    
  6. Verifica las reglas de iptables y tcp wrapper. Quita las reglas que no permitan que los servidores OpenLDAP de intercambio de tráfico se comuniquen entre sí. Trabaja con el administrador de red para establecer las reglas de forma adecuada.
  7. Asegúrate de que la contraseña del sistema OpenLDAP sea la misma en cada nodo OpenLDAP.
  8. Verifica si hay caracteres ocultos en los archivos de configuración ldif que se usan para configurar la replicación OpenLDAP N-Way ejecutando dos2unix en los archivos ldif que se crearon para actualizar la configuración. Por lo general, un archivo ldif que tiene caracteres incorrectos haría que el comando ldapmodify no se ejecute, por lo que es posible que no se configure la replicación. Quita los caracteres incorrectos y guarda los archivos de configuración.

Si el problema persiste, comunícate con el equipo de asistencia de Apigee para obtener ayuda con la configuración de la replicación OpenLDAP N-Way.

No se puede iniciar OpenLDAP

Síntoma

OpenLDAP no se inicia.

Mensajes de error

SLAPD Dead But Pid File Exists

Causas posibles

Por lo general, este problema se debe a un archivo de bloqueo que se deja en el sistema de archivos y que debe quitarse.

Diagnóstico

Sigue estos pasos para diagnosticar este problema:

  1. Verifica si hay un bloqueo del proceso slapd de OpenLDAP o un archivo pid en la siguiente ubicación:
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  2. Borra el archivo de bloqueo y pid, si lo encuentras, y vuelve a iniciar openldap.
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  3. Si se inicia el proceso slapd de OpenLDAP, omite los pasos que se indican a continuación.
  4. Si no se inicia el proceso slapd de OpenLDAP, intenta ejecutar slapd en modo de depuración y busca errores:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
    
  5. Los errores pueden indicar problemas de recursos. Verifica el uso de la memoria y la CPU en el sistema.
  6. Verifica la versión de OpenLDAP y actualízala si es antigua. Consulta las versiones compatibles de OpenLDAP en nuestro documento de software compatible.
    slapd -V
    
  7. Usa strace para solucionar problemas del proceso slapd y proporcionar el resultado de strace al equipo de asistencia de Apigee:
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>
    

Corrupción de datos de OpenLDAP

Síntoma

Los usuarios ya no pueden ejecutar llamadas de administración ni acceder a la IU de Edge. El uso de la utilidad ldapsearch para consultar a los usuarios puede indicar que el usuario existe en el almacén de datos LDAP o identificar posibles usuarios o roles faltantes.

Mensajes de error

Unknown username and password combination.

Causas posibles

Por lo general, este problema puede observarse debido a la corrupción de los datos de OpenLDAP. Por lo general, los datos de OpenLDAP no se dañan. Sin embargo, en el caso poco frecuente de que lo hagan, la corrupción podría deberse a una falla del disco del sistema o a problemas de espacio en el disco.

Diagnóstico

  1. Verifica el espacio en el disco del sistema en el que se instaló OpenLDAP con el siguiente comando:
    du -m /opt
    
  2. Si ves que el espacio en el disco usado está muy cerca del 100%, eso indicaría que la causa de este problema es que tu sistema se está quedando sin espacio en el disco.
  3. Verifica la coherencia de los datos en los nodos LDAP:
    1. En cada nodo LDAP, compara el recuento de usuarios y roles. Ejecuta los siguientes comandos y compara los resultados.
      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 
      Una discrepancia en el recuento entre los nodos sugiere una posible corrupción de datos.
    2. Verifica el estado de la replicación de LDAP. Ejecuta el siguiente comando en cada nodo 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 
      Si el valor de contextCSN es idéntico en todos los nodos, la replicación de LDAP funciona correctamente.

Solución

Si tu sistema se quedó sin espacio en el disco o está muy cerca de quedarse sin espacio en el disco, agrega más espacio en el disco para garantizar la disponibilidad suficiente.

Una vez que tengas suficiente espacio en el disco, usa una de las siguientes soluciones para abordar el problema de corrupción de datos de LDAP:

  1. Restablece los datos de OpenLDAP desde la copia de seguridad.
  2. Limpia la base de datos de OpenLDAP con los siguientes pasos:
    1. Desactiva el servidor de administración 2 y LDAP2.
    2. Restablece LDAP1 desde una copia de seguridad de VM (o una copia de seguridad de Apigee).
    3. Verifica el servidor de administración 1 para el inicio y la recuperación.
    4. Una vez que el servidor de administración 1 y LDAP1 funcionen correctamente, vuelve a instalar LDAP2 desde cero (crea una pizarra completamente en blanco).
    5. Configura LDAP2 en modo de solo lectura, lo que permite que LDAP1 se replique en LDAP2.
    6. Usa ldapsearch para verificar que la cantidad de líneas en LDAP1 y LDAP2 coincidan.
    7. Reinicia el servidor de administración 2 y UI2, y confirma que se inicien correctamente.

Para obtener instrucciones detalladas, consulta la Herramienta de seguimiento de errores pública.

Solución 1: Restablece los datos de LDAP desde la copia de seguridad

En un nodo OpenLDAP en funcionamiento, crea una copia de seguridad. La copia de seguridad debe realizarse con regularidad. Consulta la Guía de operaciones de Apigee para la nube privada para conocer las prácticas recomendadas sobre las copias de seguridad:

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

Se pueden usar los siguientes pasos para restablecer los datos de OpenLDAP desde una copia de seguridad correcta.

  1. Detén el nodo OpenLDAP para el que se deben restablecer los datos:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Cambia al directorio de datos de OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Crea una copia de seguridad de los datos de OpenLDAP existentes con el comando move:
    mv ldap ldap_orig
    
  4. Cambia al usuario apigee:
    su apigee
    
  5. Desde el directorio /opt/apigee/data/apigee-openldap, crea un directorio de datos de OpenLDAP con el nombre original:
    mkdir ldap
    
  6. Toma la copia de seguridad del subdirectorio ldap_orig/DB_CONFIG del paso 3 y cópiala en el directorio openldap.
    cp ldap_orig/DB_CONFIG ldap
    
  7. Para restablecer los datos de la copia de seguridad tomada con slapcat, usa slapadd para importar el ldif que contiene los datos correctos:
    slapadd -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif
    
  8. Inicia el proceso OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    

Solución 2: Limpia la base de datos de LDAP

Los siguientes pasos borran la base de datos de OpenLDAP para proporcionar un nuevo comienzo. Esta solución se puede usar si no hay una copia de seguridad de datos del último estado en el que funcionaban los datos de OpenLDAP.

  1. Detén el servicio OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Cambia al directorio de datos de OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Crea una copia de seguridad de los datos de OpenLDAP existentes con el comando move:
    mv ldap ldap_orig
    
  4. Cambia al usuario apigee:
    su apigee
    
  5. Crea un directorio de datos de OpenLDAP nuevo con el nombre original:
    mkdir ldap
    
  6. Toma la copia de seguridad del subdirectorio ldap_orig/DB_CONFIG del paso 3 y cópiala en el directorio openldap:
    cp ldap_orig/DB_CONFIG ldap
    
  7. Reinicia el proceso OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    
  8. Reinicia el servidor de administración para forzar una actualización de las conexiones a OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    

Solución 3: Restablece OpenLDAP a una instalación básica

Si la solución 2 no resuelve el problema, puedes restablecer OpenLDAP a una instalación básica, como se describe en esta sección.

Requisitos previos

Para restablecer OpenLDAP, necesitas los siguientes requisitos previos:

  • La capacidad de ejecutar la configuración con credenciales de administrador del sistema y LDAP raíz
  • Acceso a la utilidad ldapadd
  • El archivo de configuración silenciosa original guardado para el nodo de administración o LDAP

Para restablecer OpenLDAP, sigue estos pasos:

  1. Vuelve a instalar OpenLDAP y el servidor de administración.
    1. Detén el servidor openldap:
      apigee-service apigee-openldap stop
    2. Borra la carpeta de datos openldap dañada:
      rm -rf /opt/apigee/data/apigee-openldap
    3. Desinstala el componente openldap:
      apigee-service apigee-openldap uninstall
    4. Vuelve a instalar el componente openldap con el mismo archivo de configuración que se usó para la instalación inicial:
      /opt/apigee/apigee-setup/bin/setup.sh -p ld -f configfile
      en el que configfile es el nombre del archivo de configuración.
    5. Vuelve a instalar el servidor de administración con el archivo de configuración original:
      /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: @@@

      en el que orgname es la organización que intentas volver a crear.

    2. Agrega las entidades LDAP faltantes con el siguiente comando:
      ldapadd -x -w  -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -f missingLDAP.ldif

    Los pasos anteriores crearán las entradas faltantes para una organización existente y los orgadmin permisos para esa organización. Repite los pasos para cada organización que deba volver a crearse. En este punto, puedes agregar usuarios orgadmin a una organización, pero los otros roles predeterminados aún no existen, por lo que debes agregarlos con el siguiente paso.

  3. Agrega roles y permisos predeterminados faltantes a una organización existente.

    Con el mismo archivo de configuración que se usó inicialmente para configurar cualquiera de las organizaciones existentes, ejecuta el siguiente comando:

    /opt/apigee/apigee-service/bin/apigee-service apigee-provision create-roles -f configfile
  4. Después de seguir este procedimiento, debes hacer lo siguiente de forma manual:

    • Agrega los roles personalizados que existían antes de la corrupción con la IU o la API de administración.
    • Agrega usuarios a los roles de usuario pertinentes.
  5. (Opcional) Restablece la configuración de autenticación externa en la administración.

    Restablece /opt/apigee/customer/application/management-server.properties si la configuración no cambió. Como la IU no se volvió a instalar, el /opt/apigee/customer/application/ui.properties debe seguir siendo el mismo, ya que las credenciales del administrador del sistema se restablecieron con la nueva instalación de la administración.

  6. (Opcional) Vuelve a instalar Apigee mTLS en el nodo de administración.

    Si Apigee mTLS se instaló anteriormente, sigue la Guía de instalación de Apigee mTLS para volver a instalar lo en el nodo del servidor de administración.

Si el problema persiste, comunícate con el equipo de asistencia de Apigee para obtener más ayuda.