Khắc phục sự cố OpenLDAP

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

Phần này cung cấp thông tin và hướng dẫn về cách khắc phục các vấn đề về OpenLDAP.

SMTP bị tắt và người dùng cần đặt lại mật khẩu

Dấu hiệu

Khi bạn chưa thiết lập SMTP trên Giao diện người dùng Edge, người dùng mới được thêm vào Edge cần có cách để đặt mật khẩu.

Thông báo lỗi

Unknown username and password combination.

Nguyên nhân có thể dẫn đến vấn đề này

Người dùng mới không thể nhận được email từ đường liên kết "Quên mật khẩu?" để đặt mật khẩu vì bạn chưa thiết lập SMTP.

Độ phân giải

Bạn có thể giải quyết vấn đề này bằng một trong những cách sau:

Giải pháp 1: Định cấu hình máy chủ SMTP

Định cấu hình Máy chủ SMTP để đặt mật khẩu mới cho người dùng theo hướng dẫn được cung cấp trong tài liệu.

Giải pháp 2: Sử dụng LDAP

Nếu không thể định cấu hình máy chủ SMTP, hãy dùng các lệnh LDAP bên dưới để đặt mật khẩu mới cho người dùng:

  1. Quản trị viên tổ chức hiện tại cần thêm người dùng cụ thể thông qua Giao diện người dùng Edge như minh hoạ dưới đây:

  2. Sử dụng lệnh ldapsearch để tìm tên riêng biệt (dn) của người dùng và chuyển hướng đầu ra đến một tệp:
    ldapsearch -w Secret123 -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h localhost -p 10389 > ldap.txt
    

    Dưới đây là ví dụ về một mục nhập dn cho người dùng, cùng với các thuộc tính cho người dùng:

    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. Mở tệp ldap.txt rồi tìm dn của người dùng mới đã được thêm dựa trên thuộc tính email của người dùng mới.
  4. Thực thi lệnh ldappassword để thêm mật khẩu cho người dùng mới bằng dn của người dùng đó. Trong ví dụ này, bạn đang đặt mật khẩu của người dùng thành 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. Đăng nhập vào giao diện người dùng Edge với tư cách là người dùng mới bằng mật khẩu được xác định ở bước trước. Người dùng có thể đặt mật khẩu mới sau khi đăng nhập vào giao diện người dùng.

LDAP không sao chép

Dấu hiệu

Nhiều bản cài đặt Edge có nhiều trung tâm dữ liệu, ví dụ: DC-1 và DC-2. Khi đăng nhập vào giao diện người dùng Edge trong DC-1 với tư cách là quản trị viên tổ chức, bạn có thể xem danh sách người dùng, nhưng danh sách người dùng tương tự không xuất hiện trong giao diện người dùng Edge trong DC-2.

Thông báo lỗi

Không có lỗi nào xuất hiện, giao diện người dùng Edge chỉ không hiển thị danh sách người dùng lẽ ra phải được sao chép trên tất cả các máy chủ OpenLDAP.

Nguyên nhân có thể dẫn đến vấn đề này

Thông thường, nguyên nhân gây ra vấn đề này là do cấu hình sao chép OpenLDAP bị định cấu hình sai, chứ không phải do chính quá trình cài đặt. Ngoài ra, quá trình sao chép có thể bị gián đoạn nếu mạng giữa các máy chủ OpenLDAP không cho phép lưu lượng truy cập trên cổng 10389.

Chẩn đoán

Hãy làm theo các bước sau để chẩn đoán vấn đề:

  1. Kiểm tra xem ldapsearch có trả về dữ liệu từ mỗi máy chủ OpenLDAP hay không:
    ldapsearch -W -D "cn=manager,dc=apigee,dc=com" -b "dc=apigee,dc=com" -LLL -h <host-ip> -p 10389
    
  2. Kiểm tra xem bạn có thể kết nối với từng nút OpenLDAP từ các nút OpenLDAP khác trên cổng 10389 hay không. Nếu bạn đã cài đặt telnet, hãy dùng lệnh sau:
    telnet <OpenLDAP_Peer_IP> 10389
    
  3. Nếu không có telnet, hãy dùng netcat để kiểm tra khả năng kết nối như sau:

    nc -vz <OpenLDAP_Peer_IP> 10389
    
  4. Kiểm tra cấu hình sao chép trong tệp sau:
    /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif

    Tệp này phải chứa cấu hình như sau:

      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. Đồng thời, hãy kiểm tra cùng một tệp để biết giá trị của thuộc tính olcMirrorMode. Bạn nên đặt giá trị này thành TRUE:
    grep olcMirrorMode /opt/apigee/data/apigee-openldap/slapd.d/cn=config/olcDatabase={2}bdb.ldif
    
  6. Kiểm tra các quy tắc iptables và tcp wrapper. Vui lòng xoá mọi quy tắc không cho phép các máy chủ OpenLDAP ngang hàng giao tiếp với nhau. Làm việc với quản trị viên mạng của bạn để thiết lập các quy tắc một cách phù hợp.
  7. Đảm bảo mật khẩu hệ thống OpenLDAP giống nhau trên mỗi nút OpenLDAP.
  8. Kiểm tra các ký tự ẩn trong tệp cấu hình ldif đang được dùng để định cấu hình tính năng sao chép N chiều của OpenLDAP bằng cách chạy dos2unix đối với các tệp ldif đã được tạo để cập nhật cấu hình. Thông thường, một tệp ldif có các ký tự không hợp lệ sẽ khiến lệnh ldapmodify không chạy được và do đó, quá trình sao chép có thể không được thiết lập. Xoá mọi ký tự không hợp lệ và lưu tệp cấu hình.

Nếu vấn đề vẫn tiếp diễn, hãy liên hệ với Nhóm hỗ trợ Apigee để được trợ giúp về cách thiết lập tính năng sao chép OpenLDAP N chiều.

Không thể khởi động OpenLDAP

Dấu hiệu

OpenLDAP không khởi động.

Thông báo lỗi

SLAPD Dead But Pid File Exists

Nguyên nhân có thể dẫn đến vấn đề này

Vấn đề này thường do một tệp khoá còn sót lại trên hệ thống tệp và cần được xoá.

Chẩn đoán

Hãy làm theo các bước sau để chẩn đoán vấn đề này:

  1. Kiểm tra khoá quy trình slapd OpenLDAP hoặc tệp pid ở vị trí sau:
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
    /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  2. Xoá tệp khoá và pid (nếu có) rồi thử khởi động lại openldap.
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.lock
     rm /opt/apigee/var/run/apigee-openldap/apigee-openldap.pid
  3. Nếu quy trình OpenLDAP slapd bắt đầu, hãy bỏ qua các bước bên dưới.
  4. Nếu quy trình OpenLDAP slapd không bắt đầu, hãy thử chạy slapd ở chế độ gỡ lỗi và tìm lỗi:
    slapd -h ldap://:10389/ -u apigee -F /opt/apigee/data/apigee-openldap/slapd.d -d 255
    
  5. Các lỗi có thể chỉ ra vấn đề về tài nguyên. Kiểm tra mức sử dụng bộ nhớ và CPU trên hệ thống.
  6. Kiểm tra phiên bản OpenLDAP và nâng cấp nếu phiên bản đó đã cũ. Hãy xem các phiên bản được hỗ trợ của OpenLDAP trong tài liệu Phần mềm được hỗ trợ của chúng tôi.
    slapd -V
    
  7. Sử dụng strace để khắc phục sự cố quy trình slapd và cung cấp đầu ra strace cho Nhóm hỗ trợ Apigee:
    strace -tt -T -f -F -i -v -e read=all -s 8192 -e write=all -o /tmp/strace.out -p <pid>
    

Lỗi dữ liệu OpenLDAP

Dấu hiệu

Người dùng không còn có thể chạy các lệnh gọi quản lý hoặc đăng nhập vào giao diện người dùng Edge nữa. Việc sử dụng tiện ích ldapsearch để truy vấn người dùng có thể cho biết người dùng tồn tại trong kho dữ liệu LDAP hoặc có thể xác định những người dùng hoặc vai trò có thể bị thiếu.

Thông báo lỗi

Unknown username and password combination.

Nguyên nhân có thể dẫn đến vấn đề này

Thông thường, vấn đề này có thể xảy ra do dữ liệu OpenLDAP bị hỏng. Thông thường, dữ liệu OpenLDAP sẽ không bị hỏng. Nhưng trong trường hợp hiếm gặp, dữ liệu bị hỏng có thể là do ổ đĩa hệ thống bị lỗi hoặc do vấn đề về dung lượng ổ đĩa.

Chẩn đoán

  1. Kiểm tra dung lượng ổ đĩa trên hệ thống đã cài đặt OpenLDAP bằng lệnh bên dưới:
    du -m /opt
    
  2. Nếu bạn thấy dung lượng đĩa đã dùng gần bằng 100%, thì điều đó có nghĩa là nguyên nhân gây ra vấn đề này là do hệ thống của bạn hết dung lượng đĩa.
  3. Kiểm tra tính nhất quán của dữ liệu trên các nút LDAP:
    1. Trên mỗi nút LDAP, hãy so sánh số lượng người dùng và vai trò. Chạy các lệnh sau và so sánh kết quả.
      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 
      Sự chênh lệch về số lượng giữa các nút cho thấy có thể dữ liệu bị hỏng.
    2. Xác minh trạng thái sao chép LDAP. Chạy lệnh sau trên mỗi nút 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 
      Nếu giá trị contextCSN giống nhau trên tất cả các nút, thì quá trình sao chép LDAP đang hoạt động bình thường.

Độ phân giải

Nếu hệ thống của bạn đã hết dung lượng ổ đĩa hoặc sắp hết dung lượng ổ đĩa, hãy thêm dung lượng ổ đĩa để đảm bảo có đủ dung lượng.

Sau khi có đủ dung lượng ổ đĩa, hãy sử dụng một trong các giải pháp sau để giải quyết vấn đề hỏng dữ liệu LDAP:

  1. Khôi phục dữ liệu OpenLDAP từ bản sao lưu.
  2. Dọn dẹp cơ sở dữ liệu OpenLDAP bằng cách làm theo các bước sau:
    1. Tắt Management Server 2LDAP2.
    2. Khôi phục LDAP1 từ bản sao lưu máy ảo (hoặc bản sao lưu Apigee).
    3. Kiểm tra Management Server 1 để biết thông tin về quá trình khởi động và khôi phục.
    4. Sau khi Management Server 1LDAP1 hoạt động đúng cách, hãy cài đặt lại LDAP2 từ đầu (tạo một bản cài đặt hoàn toàn mới).
    5. Thiết lập LDAP2 ở chế độ chỉ có thể đọc, cho phép LDAP1 sao chép sang LDAP2.
    6. Sử dụng ldapsearch để xác minh rằng số dòng trong LDAP1LDAP2 khớp với nhau.
    7. Khởi động lại Management Server 2UI2, đồng thời xác nhận rằng các dịch vụ này đã khởi động thành công.

Để biết hướng dẫn chi tiết, hãy xem Trình theo dõi sự cố công khai.

Giải pháp 1: Khôi phục dữ liệu LDAP từ bản sao lưu

Sao lưu trên một nút OpenLDAP đang hoạt động. Bạn nên thường xuyên sao lưu. Hãy xem Hướng dẫn vận hành Apigee Private Cloud để biết các phương pháp hay nhất về việc sao lưu:

slapcat -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif

Bạn có thể dùng các bước sau để khôi phục dữ liệu OpenLDAP từ một bản sao lưu tốt.

  1. Dừng nút OpenLDAP mà bạn cần khôi phục dữ liệu:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Thay đổi thư mục thành thư mục dữ liệu OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Sao lưu dữ liệu OpenLDAP hiện có bằng lệnh di chuyển:
    mv ldap ldap_orig
    
  4. Chuyển sang người dùng apigee:
    su apigee
    
  5. Trong thư mục /opt/apigee/data/apigee-openldap, hãy tạo một thư mục dữ liệu OpenLDAP mới có tên ban đầu:
    mkdir ldap
    
  6. Sao lưu thư mục con ldap_orig/DB_CONFIG từ bước 3 rồi sao chép vào thư mục openldap.
    cp ldap_orig/DB_CONFIG ldap
    
  7. Để khôi phục dữ liệu từ bản sao lưu được tạo bằng slapcat, hãy dùng slapadd để nhập ldif chứa dữ liệu hợp lệ:
    slapadd -F /opt/apigee/data/apigee-openldap/slapd.d -l /tmp/ldap-backup.ldif
    
  8. Bắt đầu quy trình OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    

Giải pháp 2: Dọn dẹp cơ sở dữ liệu LDAP

Các bước sau đây sẽ xoá cơ sở dữ liệu OpenLDAP để bắt đầu lại từ đầu. Bạn có thể sử dụng giải pháp này nếu không có bản sao lưu dữ liệu của trạng thái gần đây nhất mà dữ liệu OpenLDAP đang hoạt động.

  1. Dừng dịch vụ OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap stop
    
  2. Thay đổi thư mục thành thư mục dữ liệu OpenLDAP:
    cd /opt/apigee/data/apigee-openldap
    
  3. Sao lưu dữ liệu OpenLDAP hiện có bằng lệnh di chuyển:
    mv ldap ldap_orig
    
  4. Chuyển sang người dùng apigee:
    su apigee
    
  5. Tạo một thư mục dữ liệu OpenLDAP mới có tên ban đầu:
    mkdir ldap
    
  6. Lấy thư mục con ldap_orig/DB_CONFIG dự phòng từ bước 3 rồi sao chép vào thư mục openldap:
    cp ldap_orig/DB_CONFIG ldap
    
  7. Khởi động lại quy trình OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service apigee-openldap start
    
  8. Khởi động lại Máy chủ quản lý để buộc làm mới các kết nối đến OpenLDAP:
    /opt/apigee/apigee-service/bin/apigee-service edge-management-server restart
    

Giải pháp 3: Đặt lại OpenLDAP về chế độ cài đặt cơ bản

Nếu Giải pháp 2 không giải quyết được vấn đề, bạn có thể đặt lại OpenLDAP về chế độ cài đặt cơ bản, như mô tả trong phần này.

Điều kiện tiên quyết

Để đặt lại OpenLDAP, bạn cần có các điều kiện tiên quyết sau:

  • Có thể chạy chế độ thiết lập bằng thông tin đăng nhập LDAP gốc và quản trị viên hệ thống.
  • Quyền truy cập vào tiện ích ldapadd.
  • Tệp cấu hình im lặng gốc đã lưu cho nút quản lý/LDAP.

Để đặt lại OpenLDAP, hãy thực hiện các bước sau:

  1. Cài đặt lại OpenLDAP và Management Server.
    1. Dừng máy chủ openldap:
      apigee-service apigee-openldap stop
    2. Xoá thư mục dữ liệu openldap bị hỏng:
      rm -rf /opt/apigee/data/apigee-openldap
    3. Gỡ cài đặt thành phần openldap:
      apigee-service apigee-openldap uninstall
    4. Cài đặt lại thành phần openldap bằng cùng một tệp cấu hình đã dùng cho lần cài đặt ban đầu:
      /opt/apigee/apigee-setup/bin/setup.sh -p ld -f configfile
      trong đó configfile là tên của tệp cấu hình.
    5. Cài đặt lại Management Server bằng tệp cấu hình ban đầu:
      /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: @@@

      trong đó orgname là tổ chức mà bạn đang cố gắng tạo lại.

    2. Thêm các thực thể LDAP bị thiếu bằng lệnh sau:
      ldapadd -x -w  -D "cn=manager,dc=apigee,dc=com" -H ldap://localhost:10389 -f missingLDAP.ldif

    Các bước trên sẽ tạo các mục còn thiếu cho một tổ chức hiện có và các quyền orgadmin cho tổ chức đó. Lặp lại các bước này cho từng tổ chức cần được tạo lại. Lúc này, bạn có thể thêm người dùng orgadmin vào một tổ chức, nhưng các vai trò mặc định khác chưa tồn tại, vì vậy, bạn cần thêm các vai trò đó bằng cách sử dụng bước tiếp theo.

  3. Thêm các vai trò và quyền mặc định bị thiếu vào một tổ chức hiện có.

    Sử dụng cùng một tệp cấu hình đã được dùng ban đầu để thiết lập bất kỳ tổ chức nào hiện có, hãy chạy lệnh sau:

    /opt/apigee/apigee-service/bin/apigee-service apigee-provision create-roles -f configfile
  4. Sau khi làm theo quy trình này, bạn cần phải thực hiện theo cách thủ công:

    • Thêm mọi vai trò tuỳ chỉnh đã tồn tại trước khi xảy ra lỗi bằng giao diện người dùng hoặc API quản lý,
    • Thêm người dùng vào các vai trò người dùng có liên quan.
  5. (Không bắt buộc) Thiết lập lại Cấu hình xác thực bên ngoài trên Management.

    Khôi phục /opt/apigee/customer/application/management-server.properties nếu cấu hình không thay đổi. Vì giao diện người dùng chưa được cài đặt lại, nên /opt/apigee/customer/application/ui.properties phải giữ nguyên vì thông tin đăng nhập cho quản trị viên hệ thống đã được khôi phục bằng bản cài đặt mới của ứng dụng quản lý.

  6. (Không bắt buộc) Cài đặt lại Apigee mTLS trên nút Quản lý.

    Nếu bạn đã cài đặt Apigee mTLS trước đó, hãy làm theo Hướng dẫn cài đặt Apigee mTLS để cài đặt lại trên nút máy chủ quản lý.

Nếu vấn đề vẫn tiếp diễn, hãy liên hệ với Nhóm hỗ trợ Apigee để được trợ giúp thêm.