פתרון בעיות של 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.

הודעות שגיאה

לא מופיעות שגיאות, פשוט רשימת המשתמשים שאמורה הייתה להיות מועתקת לכל שרתי OpenLDAP לא מוצגת בממשק המשתמש של Edge.

סיבות אפשריות

בדרך כלל, הסיבה לבעיה הזו היא הגדרה שגויה של רפליקציה של 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 כדי לקבל עזרה בהגדרת רפליקציה של N-Way OpenLDAP.

לא ניתן להפעיל את OpenLDAP

תיאור הבעיה

OpenLDAP לא מופעל.

הודעות שגיאה

SLAPD Dead But Pid File Exists

סיבות אפשריות

בדרך כלל הבעיה הזו נגרמת בגלל קובץ נעילה שנשאר במערכת הקבצים וצריך להסיר אותו.

אבחון

כדי לאבחן את הבעיה, מבצעים את השלבים הבאים:

  1. בודקים אם יש מנעול או קובץ pid של תהליך OpenLDAP slapd במיקום הבא:
    /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. אם תהליך slapd של OpenLDAP מתחיל, מדלגים על השלבים הבאים.
  4. אם תהליך slapd של OpenLDAP לא מתחיל, נסו להריץ את slapd במצב ניפוי באגים ולחפש שגיאות:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
  5. שגיאות עשויות להצביע על בעיות במשאבים. בודקים את ניצול הזיכרון והמעבד (CPU) במערכת.
  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. משביתים את Management Server 2 ואת LDAP2.
    2. משחזרים את LDAP1 מגיבוי של מכונה וירטואלית (או מגיבוי של Apigee).
    3. בודקים את Management Server 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 להתקנה בסיסית

אם הפתרון השני לא פותר את הבעיה, אפשר לאפס את 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. (אופציונלי) מגדירים מחדש את ההגדרות של אימות חיצוני ב-Management.

    משחזרים את /opt/apigee/customer/application/management-server.properties אם ההגדרה לא השתנתה. מאחר שלא התבצעה התקנה מחדש של ממשק המשתמש, הערך של /opt/apigee/customer/application/ui.properties אמור להישאר ללא שינוי, מאחר שהפרטי הכניסה של האדמין המערכתי שוחזרו במהלך ההתקנה החדשה של הכלי לניהול.

  6. (אופציונלי) מתקינים מחדש את Apigee mTLS בצומת הניהול.

    אם Apigee mTLS כבר הותקן, פועלים לפי מדריך ההתקנה של Apigee mTLS כדי להתקין אותו מחדש בצומת של שרת הניהול.

אם הבעיה נמשכת, אפשר לפנות לתמיכה של Apigee לקבלת עזרה נוספת.