排解 OpenLDAP 問題

查看 Apigee Edge 說明文件。
前往 Apigee X說明文件
資訊

本節提供排解 OpenLDAP 問題的相關資訊和指引。

SMTP 已停用,使用者必須重新設定。 密碼

問題

如未在 Edge UI 上設定 SMTP,新增至 Edge 的新使用者就需要設定 密碼。

錯誤訊息

Unknown username and password combination.

可能原因

新使用者無法收到來自「忘記密碼?」設定連結 密碼,因為尚未設定 SMTP。

解析度

您可以透過下列其中一種方式解決這個問題:

解決方案 1: 設定 SMTP 伺服器

按照提供的操作說明設定 SMTP 伺服器,為使用者設定新密碼 請參閱說明文件

解決方案 2:使用 LDAP

如果您無法設定 SMTP 伺服器,請使用下列 LDAP 指令來設定 使用者的新密碼:

  1. 現有的機構組織管理員必須透過 Edge UI 新增特定使用者,如下所示:

  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 UI。 使用者登入使用者介面後,即可設定新密碼。

LDAP 不會複製

問題

許多 Edge 安裝都有多個資料中心,例如 DC-1 和 DC-2。記錄時 機構管理員可以查看使用者清單,但一樣能存取 DC-1 中的 Edge UI 不會顯示在 DC-2 的 Edge UI 中。

錯誤訊息

沒有出現錯誤,Edge UI 僅不會顯示應有的使用者清單 所有 OpenLDAP 伺服器中的備份副本

可能原因

這個問題通常是因為 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. 檢查是否能透過通訊埠 10389 連線至其他 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. 檢查 iptable 和 tcp 包裝函式規則。請移除所有不允許的規則 讓對等互連 OpenLDAP 伺服器彼此通訊與網路管理員合作 才能正確設定規則
  7. 確認每個 OpenLDAP 節點上的 OpenLDAP 系統密碼都相同。
  8. 檢查用於設定檔的隱藏字元 對具有以下特性的 ldif 檔案執行 dos2unix,藉此設定 N-Way OpenLDAP 複製功能 更新設定檔含有無效字元的 ldif 檔案通常會造成 ldapmodify 指令無法執行,因此可能未設定複製功能。移除不良內容 字元,並儲存設定檔。

如果問題持續發生,請與 聯絡 Apigee 支援:協助設定 NWay OpenLDAP 複製作業。

無法啟動 OpenLDAP

問題

OpenLDAP 不會啟動。

錯誤訊息

SLAPD Dead But Pid File Exists

可能原因

這類問題通常起因於檔案系統而落入鎖定檔案,因此需要 待移除。

診斷

請按照下列步驟診斷這個問題:

  1. 在下列位置檢查是否有 OpenLDAP 收合程序鎖定或 pid 檔案:
    /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 重複程序啟動,請略過下列步驟。
  4. 如果 OpenLDAP 收合程序未啟動,請嘗試在偵錯模式下執行延遲,並尋找 有任何錯誤:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
    
  5. 錯誤可能代表資源問題。檢查系統的記憶體和 CPU 使用率。
  6. 檢查 OpenLDAP 版本,如過舊,請升級。查看系統支援的 支援的軟體文件中的 OpenLDAP。
    slapd -V
    
  7. 使用追蹤記錄來排解重疊程序的問題,並為 提供追蹤記錄輸出內容 Apigee 支援
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>
    

OpenLDAP 資料毀損

問題

使用者無法再執行管理呼叫或登入 Edge UI,使用 ldapsearch 查詢使用者的公用程式可能會指出該使用者存在於 LDAP 資料儲存庫中,或者也可以找出 可能缺少使用者或角色

錯誤訊息

Unknown username and password combination.

可能原因

一般來說,這個問題可能會因 OpenLDAP 資料損毀而被發現。通常為 OpenLDAP 不會造成資料毀損但在極少數的情況下,毀損可能是由 系統磁碟故障或磁碟空間問題。

診斷

  1. 使用下列指令,檢查已安裝 OpenLDAP 的系統上的磁碟空間:
    du -m /opt
    
  2. 如果使用的磁碟空間相當接近 100%,可能代表原因 ,就是系統用盡磁碟空間。

解析度

如果系統磁碟空間已用盡或即將用盡磁碟空間,請將 磁碟容量,確保有足夠的磁碟空間。

擁有足夠的磁碟空間後,請使用下列其中一種解決方案處理 LDAP 資料 損毀問題:

  1. 從備份還原 OpenLDAP 資料。
  2. 清除 OpenLDAP 資料庫。

解決方案 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 資料:
    mv ldap ldap_orig
    
  4. 切換至 Apigee 使用者:
    su apigee
    
  5. 從「/opt/apigee/data/apigee-openldap」目錄中建立新的 OpenLDAP 資料 將原始名稱放在 目錄中:
    mkdir ldap
    
  6. 取得步驟 3 的 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
    

解決方案 2 清除 LDAP 個資料庫

如要重新啟動,請按照下列步驟清除 OpenLDAP 資料庫。這項解決方案 。

  1. 停止 OpenLDAP 服務:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. 將目錄變更為 OpenLDAP 資料目錄:
    cd /opt/apigee/data/apigee-openldap
    
  3. 使用移動指令備份現有的 OpenLDAP 資料:
    mv ldap ldap_orig
    
  4. 切換至 Apigee 使用者:
    su apigee
    
  5. 使用原始名稱建立新的 OpenLDAP 資料目錄:
    mkdir ldap
    
  6. 取得步驟 3 的 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
    

解決方案 #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. 使用原始設定檔重新安裝管理伺服器:
      /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. 完成本程序後,您需要手動進行操作:

    • 利用 UI 或 Management API 新增在損毀前就存在的所有自訂角色。
    • 將任何使用者新增至相關的使用者角色。
  5. (選用) 在管理功能上重新建立外部化驗證設定。

    請執行以下動作還原 /opt/apigee/customer/application/management-server.properties 而設定並未變更 由於 UI 尚未重新安裝,因此 /opt/apigee/customer/application/ui.properties 應維持不變 系統已在安裝新的管理功能時,還原 sysadmin 的憑證。

  6. (選用) 在管理節點中重新安裝 Apigee mTLS。

    如果先前已安裝 Apigee mTLS,請按照 Apigee mTLS 安裝指南重新安裝 並在管理伺服器節點上執行

如果問題仍未解決,請與 Apigee 聯絡 支援,尋求進一步協助。