排解 OpenLDAP 問題

您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。
info

本節提供 OpenLDAP 問題的疑難排解資訊和指南。

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

問題

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

錯誤訊息

Unknown username and password combination.

可能的原因

新使用者無法透過「忘記密碼?」連結收到電子郵件來設定密碼,因為 SMTP 尚未設定。

解析度

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

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

設定 SMTP 伺服器,為使用者設定新密碼。如要進一步瞭解如何設定 SMTP,請參閱「設定 Edge SMTP 伺服器」。

解決方案 2:使用 LDAP

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

  1. 現有的機構組織管理員必須在新版 Edge UI (或舊版 Edge UI,如下圖所示) 中新增特定使用者:

  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 項目範例,以及使用者的屬性:

    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 -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. 使用上一步定義的密碼,以新使用者身分登入新版 Edge UI。使用者登入 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 -x -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -H ldap://HOST_IP:10389
  2. 確認您是否可以從其他 OpenLDAP 節點,透過通訊埠 10389 連線至各個 OpenLDAP 節點。 如果已安裝 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. 使用 ldapsearch 指令檢查執行階段設定的 olcMultiProvider (舊稱 olcMirrorMode) 屬性,確認其設為 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 檔案執行 dos2unix,檢查用於設定 N-Way OpenLDAP 複製作業的 ldif 設定檔中是否有隱藏字元。通常含有錯誤字元的 ldif 檔案會導致 ldapmodify 指令無法執行,因此可能無法設定複寫。移除所有錯誤字元,然後儲存設定檔。

如果問題仍未解決,請與 Apigee 支援團隊聯絡,尋求設定 N 向 OpenLDAP 複製的協助。

無法啟動 OpenLDAP

問題

OpenLDAP 未啟動。

錯誤訊息

SLAPD Dead But Pid File Exists

可能的原因

這類問題通常是因為檔案系統中留有鎖定檔案,必須移除。

診斷

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

  1. 在下列位置檢查 OpenLDAP slapd 程序鎖定或 pid 檔案:
    /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. 如果 OpenLDAP slapd 程序啟動,請略過下列步驟。
  4. 如果 OpenLDAP slapd 程序未啟動,請嘗試以偵錯模式執行 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 UI。使用 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. 從 VM 備份 (或 Apigee 備份) 還原 LDAP1。
    3. 檢查「管理伺服器 1」的啟動和復原情形。
    4. 管理伺服器 1 和 LDAP1 正常運作後,請從頭重新安裝 LDAP2 (建立完全空白的狀態)。
    5. 以唯讀模式設定 LDAP2,允許 LDAP1 複製到 LDAP2。
    6. 使用 ldapsearch 確認 LDAP1 和 LDAP2 中的行數是否相符。
    7. 在節點 2 上重新啟動 Management Server 2 和新版 Edge UI,並確認兩者都順利啟動。

如需詳細操作說明,請參閱公開 Issue Tracker。

解決方案 #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. 使用 move 指令備份現有 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 資料庫,以便重新開始。如果沒有 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. 從步驟 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. 使用原始設定檔重新安裝 Management Server:
      /opt/apigee/apigee-setup/bin/setup.sh -p ms -f configfile

    完成這些步驟後,Management API 呼叫應可再次使用 sysadmin 帳戶。不過,您無法登入新版 Edge UI,也無法使用任何其他使用者發出 Management API 呼叫。

  2. 為損毀前就存在的機構新增缺少的 openldap 項目。

    完成上述步驟後,openldap 將缺少損毀發生時存在的組織項目。大部分的實際組織資料 (例如 Proxy 繫結) 儲存在 Cassandra 或 Zookeeper 中,不會遺失。不過,執行 setup-org 指令碼不會自動為 Cassandra 和 Zookeeper 中現有的組織新增 openldap 資料。您必須按照下列步驟,為損毀前就存在的每個機構手動新增這項資料:

    1. 建立名為 missingLDAP.ldif 的 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 UI 或 Management API,新增損毀前存在的任何自訂角色。
    • 將使用者新增至相關使用者角色。
  5. (選用) 在管理頁面重新建立外部驗證設定。

    如果設定未變更,請還原 /opt/apigee/customer/application/management-server.properties。由於新版 Edge 使用者介面尚未重新安裝,因此在透過新安裝的管理伺服器還原 sysadmin 帳戶的憑證後,/opt/apigee/customer/application/management-ui.properties 仍維持不變。

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

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

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