استكشاف مشاكل OpenLDAP وإصلاحها

أنت تطّلع على مستندات Apigee Edge.
انتقِل إلى مستندات Apigee X.
info

يقدّم هذا القسم معلومات وإرشادات حول تحديد مشاكل OpenLDAP وحلّها.

تم إيقاف بروتوكول SMTP ويحتاج المستخدمون إلى إعادة ضبط كلمة المرور

المشكلة

عندما لا يتم إعداد SMTP على واجهة مستخدم Edge الجديدة، يحتاج المستخدمون الجدد الذين تمت إضافتهم إلى Edge إلى طريقة لضبط كلمة مرور.

رسائل الخطأ

Unknown username and password combination.

الأسباب المحتملة

لا يمكن للمستخدمين الجدد تلقّي رسالة إلكترونية من رابط "هل نسيت كلمة المرور؟" لضبط كلمة مرور لأنّه لم يتم إعداد SMTP.

الدقة

يمكنك معالجة هذه المشكلة بإحدى الطرق التالية:

الحلّ 1: ضبط خادم SMTP

اضبط خادم SMTP لضبط كلمة مرور جديدة للمستخدم. للحصول على تفاصيل حول ضبط SMTP، يُرجى الاطّلاع على ضبط خادم Edge SMTP.

الحلّ الثاني: استخدام LDAP

إذا لم تتمكّن من ضبط خادم SMTP، استخدِم أوامر LDAP أدناه لضبط كلمة المرور الجديدة لمستخدم:

  1. يجب أن يضيف مشرف المؤسسة الحالي المستخدم المحدّد في واجهة مستخدم New Edge (أو في واجهة مستخدم Classic Edge في الإصدارات السابقة، كما هو موضّح في الصورة التالية):

  2. استخدِم الأمر ldapsearch للعثور على الاسم المميّز (dn) للمستخدم وإعادة توجيه الناتج إلى ملف:
    ldapsearch -w Secret123 -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -x -H ldap://localhost:10389 > ldap.txt
    

    في ما يلي مثال على إدخال اسم مميّز لمستخدم، بالإضافة إلى سمات المستخدم:

    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 وابحث عن الاسم المميز للمستخدم الجديد الذي تمت إضافته استنادًا إلى سمة البريد الإلكتروني للمستخدم الجديد.
  4. نفِّذ الأمر ldappassword لإضافة كلمة مرور للمستخدم الجديد باستخدام dn الخاص به. في هذا المثال، يتم ضبط كلمة مرور المستخدم على Apigee123:
    ldappasswd -x -H ldap://localhost: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. سجِّل الدخول إلى واجهة مستخدم New Edge كمستخدم جديد باستخدام كلمة المرور المحدّدة في الخطوة السابقة. ويمكن للمستخدم ضبط كلمة مرور جديدة بعد تسجيل الدخول إلى واجهة المستخدم.

لا يتم نسخ LDAP

المشكلة

تتضمّن العديد من عمليات تثبيت Edge عدة مراكز بيانات، مثل DC-1 وDC-2. عند تسجيل الدخول إلى واجهة مستخدم Edge الجديدة في DC-1 كمشرف مؤسسة، يمكنك الاطّلاع على قائمة المستخدمين، ولكن لا تظهر قائمة المستخدمين نفسها في واجهة مستخدم Edge الجديدة في DC-2.

رسائل الخطأ

لا تظهر أي أخطاء، ولا تعرض واجهة مستخدم New Edge قائمة المستخدمين التي كان من المفترض نسخها على جميع خوادم OpenLDAP.

الأسباب المحتملة

عادةً ما يكون سبب هذه المشكلة هو إعدادات النسخ المتماثل غير الصحيحة في OpenLDAP، وليس عملية التثبيت نفسها. وقد يتعطّل النسخ المتماثل أيضًا إذا كانت الشبكة بين خوادم OpenLDAP لا تسمح بحركة البيانات على المنفذ 10389.

التشخيص

اتّبِع الخطوات التالية لتشخيص المشكلة:

  1. تحقَّق مما إذا كان ldapsearch يعرض بيانات من كل خادم OpenLDAP:
    ldapsearch -x -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -H ldap://HOST_IP:10389
  2. تحقَّق مما إذا كان بإمكانك الاتصال بكل عقدة OpenLDAP من عقد OpenLDAP الأخرى على المنفذ 10389. إذا كان telnet مثبّتًا، استخدِم الأمر التالي:
    telnet <OpenLDAP_Peer_IP> 10389
    
  3. إذا لم يكن telnet متاحًا، استخدِم netcat للتحقّق من الاتصال على النحو التالي:

    nc -vz <OpenLDAP_Peer_IP> 10389
    
  4. تحقَّق من إعدادات النسخ المتماثل لوقت التشغيل باستخدام الأمر ldapsearch:
    ldapsearch -o ldif-wrap=no -D cn=admin,cn=config -H ldap://:10389 -LLL -x -w LDAP_ADMIN_PASSWORD -b "cn=config" "(olcSyncrepl=*)" olcSyncrepl
    

    من المفترض أن يحتوي الناتج على إعدادات مشابهة لما يلي:

    dn: olcDatabase={2}mdb,cn=config
    olcSyncrepl: {0}rid=001 provider=ldap://OTHER_LDAP_SERVER:10389/ 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. تحقَّق من إعدادات وقت التشغيل لسمة olcMultiProvider (المعروفة سابقًا باسم olcMirrorMode) باستخدام الأمر ldapsearch للتأكّد من ضبطها على TRUE:
    ldapsearch -o ldif-wrap=no -D cn=admin,cn=config -H ldap://:10389 -LLL -x -w LDAP_ADMIN_PASSWORD -b "cn=config" "(olcMultiProvider=*)" olcMultiProvider olcMirrorMode
    

    من المفترض أن تظهر النتيجة على النحو التالي:

    dn: olcDatabase={2}mdb,cn=config
    olcMultiProvider: TRUE
  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 لعملية slapd في OpenLDAP في الموقع التالي:
    /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. إذا لم تبدأ عملية 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

المشكلة

لن يتمكّن المستخدمون بعد ذلك من إجراء طلبات إدارة أو تسجيل الدخول إلى واجهة مستخدم New 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. تحقَّق من Management Server 1 لبدء التشغيل والاسترداد.
    4. بعد التأكّد من أنّ خادم الإدارة 1 وLDAP1 يعملان بشكلٍ صحيح، أعِد تثبيت LDAP2 من البداية (عن طريق إنشاء حالة فارغة تمامًا).
    5. اضبط LDAP2 في وضع القراءة فقط، ما يسمح لـ LDAP1 بالنسخ المتماثل إلى LDAP2.
    6. استخدِم ldapsearch للتحقّق من تطابق عدد الأسطر في LDAP1 وLDAP2.
    7. أعِد تشغيل Management Server 2 وNew Edge UI على العقدة 2، وتأكَّد من بدء تشغيلهما بنجاح.

للحصول على تعليمات مفصّلة، يُرجى الاطّلاع على أداة تتبُّع المشاكل العامة.

الحلّ 1: استعادة بيانات LDAP من النسخة الاحتياطية

على عقدة OpenLDAP عاملة، أنشئ نسخة احتياطية. يجب إجراء النسخ الاحتياطي بانتظام. يمكنك الاطّلاع على دليل عمليات Apigee Private Cloud للتعرّف على أفضل الممارسات المتعلّقة بالنُسخ الاحتياطية:

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، يجب استيفاء المتطلبات الأساسية التالية:

  • إمكانية تشغيل عملية الإعداد باستخدام بيانات اعتماد مشرف النظام ومستخدم 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

    بعد تنفيذ هذه الخطوات، من المفترض أن تعمل طلبات بيانات من واجهة برمجة التطبيقات Management API مرة أخرى باستخدام حساب sysadmin فقط. ومع ذلك، لا يمكن تسجيل الدخول إلى واجهة مستخدم Edge الجديدة، ولن تعمل طلبات Management API التي يتم إجراؤها باستخدام أي مستخدمين آخرين.

  2. أضِف إدخالات openldap المفقودة للمؤسسات التي كانت موجودة قبل حدوث التلف.

    بعد إكمال الخطوة أعلاه، سيفتقد الملف openldap إدخالات خاصة بالمؤسسات التي كانت موجودة عند حدوث التلف. لا يتم فقدان معظم بيانات المؤسسة الفعلية، مثل حِزم الخادم الوكيل، المخزَّنة في Cassandra أو Zookeeper. ومع ذلك، لن يؤدي تشغيل النص البرمجي setup-org إلى إضافة بيانات openldap تلقائيًا للمؤسسات الموجودة في Cassandra وZookeeper. يجب إضافة هذه البيانات يدويًا لكل مؤسسة كانت موجودة قبل حدوث التلف باستخدام الخطوات التالية:

    1. أنشئ ملف ldif باسم missingLDAP.ldif يتضمّن المحتوى التالي:
      # 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 "OPENLDAP_ROOT_PASSWORD" -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. بعد اتّباع هذا الإجراء، عليك تنفيذ ما يلي يدويًا:

    • أضِف أي أدوار مخصّصة كانت متوفّرة قبل حدوث التلف باستخدام واجهة مستخدم Edge الجديدة أو Management API.
    • أضِف أي مستخدمين إلى أدوار المستخدمين ذات الصلة.
  5. (اختياري) إعادة إنشاء إعدادات المصادقة الخارجية في "الإدارة"

    استعِد /opt/apigee/customer/application/management-server.properties إذا لم يتم تغيير الإعدادات. بما أنّه لم تتم إعادة تثبيت واجهة مستخدم Edge الجديدة، يبقى /opt/apigee/customer/application/management-ui.properties كما هو بعد استعادة بيانات اعتماد حساب sysadmin باستخدام التثبيت الجديد لخادم الإدارة.

  6. (اختياري) أعِد تثبيت Apigee mTLS على عقدة الإدارة.

    إذا سبق لك تثبيت Apigee mTLS، اتّبِع دليل تثبيت Apigee mTLS لإعادة تثبيته على عقدة خادم الإدارة.

إذا استمرّت المشكلة، يُرجى التواصل مع فريق دعم Apigee للحصول على مزيد من المساعدة.