عیب یابی مشکلات OpenLDAP

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

این بخش اطلاعات و راهنمایی‌هایی در مورد عیب‌یابی مشکلات OpenLDAP ارائه می‌دهد.

SMTP غیرفعال است و کاربران باید رمز عبور را دوباره تنظیم کنند

علامت

وقتی SMTP روی رابط کاربری Edge تنظیم نشده باشد، کاربران جدیدی که به Edge اضافه می‌شوند به راهی برای تنظیم رمز عبور نیاز دارند.

پیام‌های خطا

Unknown username and password combination.

علل احتمالی

کاربران جدید نمی‌توانند از طریق لینک «رمز عبور خود را فراموش کرده‌اید؟» ایمیلی برای تنظیم رمز عبور دریافت کنند، زیرا SMTP تنظیم نشده است.

وضوح تصویر

شما می‌توانید این مشکل را به یکی از روش‌های زیر حل کنید:

راه حل شماره ۱: پیکربندی سرور SMTP

با استفاده از دستورالعمل‌های ارائه شده در مستندات ، سرور SMTP را طوری پیکربندی کنید که یک رمز عبور جدید برای کاربر تنظیم کند.

راه حل شماره ۲: استفاده از 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 ظاهر نمی‌شود.

پیام‌های خطا

هیچ خطایی ظاهر نمی‌شود، رابط کاربری Edge به سادگی لیست کاربرانی را که باید در تمام سرورهای OpenLDAP تکثیر می‌شدند، نشان نمی‌دهد.

علل احتمالی

معمولاً علت این مشکل، پیکربندی نادرستِ تکثیر OpenLDAP است، نه خودِ نصب. همچنین، اگر شبکه بین سرورهای OpenLDAP اجازه عبور ترافیک از پورت ۱۰۳۸۹ را ندهد، ممکن است تکثیر با مشکل مواجه شود.

تشخیص

برای تشخیص مشکل از مراحل زیر استفاده کنید:

  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 متصل شوید یا خیر. اگر 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. با اجرای dos2unix روی فایل‌های ldif که برای به‌روزرسانی پیکربندی ایجاد شده‌اند، کاراکترهای پنهان در فایل‌های پیکربندی ldif که برای پیکربندی تکثیر N-Way OpenLDAP استفاده می‌شوند را بررسی کنید. معمولاً یک فایل ldif که کاراکترهای نامناسب دارد، باعث می‌شود دستور ldapmodify اجرا نشود و بنابراین ممکن است تکثیر راه‌اندازی نشود. کاراکترهای نامناسب را حذف کرده و فایل‌های پیکربندی را ذخیره کنید.

اگر مشکل همچنان ادامه داشت، برای کمک در تنظیم تکثیر N-Way OpenLDAP با پشتیبانی Apigee تماس بگیرید.

قادر به شروع 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. در صورت یافتن، فایل lock و 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. اگر فرآیند 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. اگر می‌بینید که فضای دیسک استفاده شده بسیار نزدیک به ۱۰۰٪ است، این نشان می‌دهد که علت این مشکل، کمبود فضای دیسک سیستم شماست.
  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. سرور مدیریت ۲ و LDAP2 را از دسترس خارج کنید.
    2. LDAP1 را از یک نسخه پشتیبان ماشین مجازی (یا نسخه پشتیبان Apigee) بازیابی کنید.
    3. سرور مدیریت ۱ را برای راه‌اندازی و بازیابی بررسی کنید.
    4. پس از اینکه Management Server 1 و LDAP1 به درستی کار کردند، LDAP2 را از ابتدا نصب کنید (و یک صفحه کاملاً خالی ایجاد کنید).
    5. LDAP2 را در حالت فقط خواندنی تنظیم کنید، به LDAP1 اجازه دهید تا در LDAP2 تکثیر شود.
    6. ldapsearch برای تأیید مطابقت تعداد خطوط در LDAP1 و LDAP2 استفاده کنید.
    7. سرور مدیریت ۲ و UI2 را مجدداً راه‌اندازی کنید و تأیید کنید که با موفقیت شروع به کار می‌کنند.

برای دستورالعمل‌های دقیق، به ردیاب مشکلات عمومی مراجعه کنید.

راه حل شماره ۱: بازیابی داده‌های 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. با استفاده از دستور move از داده‌های موجود OpenLDAP پشتیبان بگیرید:
    mv ldap ldap_orig
    
  4. به کاربر apigee تغییر دهید:
    su apigee
    
  5. از دایرکتوری /opt/apigee/data/apigee-openldap ، یک دایرکتوری داده OpenLDAP جدید با نام اصلی ایجاد کنید:
    mkdir ldap
    
  6. از مرحله ۳، نسخه پشتیبان زیرشاخه ldap_orig/DB_CONFIG را بگیرید و آن را در پوشه 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
    

راه حل شماره ۲: پاکسازی پایگاه داده LDAP

مراحل زیر پایگاه داده OpenLDAP را پاک می‌کند تا شروعی دوباره فراهم شود. این راه‌حل در صورتی قابل استفاده است که از آخرین وضعیتی که داده‌های OpenLDAP در آن کار می‌کردند، هیچ نسخه پشتیبان داده‌ای وجود نداشته باشد.

  1. سرویس OpenLDAP را متوقف کنید:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. دایرکتوری را به دایرکتوری داده OpenLDAP تغییر دهید:
    cd /opt/apigee/data/apigee-openldap
    
  3. با استفاده از دستور move از داده‌های موجود OpenLDAP پشتیبان بگیرید:
    mv ldap ldap_orig
    
  4. به کاربر apigee تغییر دهید:
    su apigee
    
  5. یک دایرکتوری داده OpenLDAP جدید با نام اصلی ایجاد کنید:
    mkdir ldap
    
  6. زیرشاخه‌ی پشتیبان ldap_orig/DB_CONFIG را از مرحله‌ی ۳ بردارید و آن را در پوشه‌ی 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
    

راه حل شماره ۳: تنظیم مجدد 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. (اختیاری) پیکربندی احراز هویت خارجی را در مدیریت دوباره برقرار کنید.

    اگر پیکربندی تغییر نکرده است، فایل /opt/apigee/customer/application/management-server.properties را بازیابی کنید. از آنجایی که رابط کاربری دوباره نصب نشده است، با توجه به اینکه اعتبارنامه‌های مربوط به sysadmin با نصب جدید management بازیابی شده است، فایل /opt/apigee/customer/application/ui.properties باید بدون تغییر باقی بماند.

  6. (اختیاری) Apigee mTLS را روی گره مدیریت دوباره نصب کنید.

    اگر Apigee mTLS قبلاً نصب شده است، برای نصب مجدد آن روی گره سرور مدیریت، راهنمای نصب Apigee mTLS را دنبال کنید.

اگر مشکل همچنان ادامه داشت، برای راهنمایی بیشتر با پشتیبانی Apigee تماس بگیرید.