การจำลอง Open Directory อาจไม่ทำงาน "Size Limit exceeded" ปรากฏใน slapd.log

การจำลอง Open Directory อาจไม่ทำงาน เมื่อเกิดกรณีเช่นนี้ รายการดังต่อไปนี้จะปรากฏใน /var/log/slapd.log

slapd[209]: do_syncrep2: rid=001 LDAP_RES_SEARCH_RESULT (4) Size limit exceeded slapd[209]: do_syncrep2: rid=001 (4) Size limit exceeded

กรณีเช่นนี้อาจเกิดขึ้นได้ หากเซิร์ฟเวอร์ Open Directory ล่มเป็นเวลานาน หรือหากสำเนาถูกสร้างเมื่อมีออบเจ็กต์มากกว่า 11000 ในที่จัดเก็บข้อมูล LDAP 11000 คือจำนวนสูงสุดของออบเจ็กต์ตามค่าเริ่มต้นที่สามารถส่งกลับในการค้นหาได้

อนุญาตให้ผู้ใช้ _ldap_replicator เขียนทับขีดจำกัดการค้นหาได้ สามารถทำเช่นนี้ได้โดยการเปลี่ยนการกำหนดค่าเซิร์ฟเวอร์ LDAP บนเซิร์ฟเวอร์ Open Directory ทุกตัว ซึ่งจะเกี่ยวข้องกับการรับรองความถูกต้องในฐานะผู้ดูแลระบบไดเรกทอรี และการเรียกใช้คำสั่งการแก้ไข LDAP บางอย่างในเทอร์มินัล และจำเป็นต้องทราบฐานการค้นหาหรือที่เรียกว่าบริบทการตั้งชื่อ สำหรับเซิร์ฟเวอร์ LDAP ด้วย

สามารถใช้ขั้นตอนต่อไปนี้เพื่อดำเนินการนี้ให้สำเร็จ

ขั้นแรก ให้ค้นหาฐานการค้นหาสำหรับเซิร์ฟเวอร์ LDAP

ค้นหาฐานการค้นหาสำหรับเซิร์ฟเวอร์ LDAP โดยปกติจะเป็นชื่อโดเมนแบบเต็มของเซิร์ฟเวอร์ที่มี dc= นำหน้าแต่ละป้ายกำกับและเครื่องหมายจุดเปลี่ยนเป็นเครื่องหมายจุลภาค

ตัวอย่างเช่น เซิร์ฟเวอร์ที่มีชื่อโฮสต์ว่า server.example.com จะมีฐานการค้นหาเริ่มต้นเป็น "dc=server,dc=example,dc=com" ฐานการค้นหาสามารถตรวจสอบได้ด้วยการสอบถามเซิร์ฟเวอร์ LDAP เองด้วยคำสั่งเทอร์มินัลต่อไปนี้:

ldapsearch -x -LLL -b “” -s base namingContexts

มองหาบรรทัดที่มีคำว่า namingContexts และฐานการค้นหาจะอยู่หลังเครื่องหมายโคลอน (:) ตามตัวอย่างผลลัพธ์ที่ได้ด้านล่างนี้

dn: namingContexts: dc=server,dc=example,dc=com

ขั้นที่สอง ให้รับข้อมูลประจำตัว Kerberos สำหรับผู้ดูแลระบบไดเรกทอรี

ชื่อเริ่มต้นสำหรับผู้ใช้นี้คือ diradmin แต่ชื่อสามารถเปลี่ยนแปลงได้เมื่อสร้าง Master ของ Open Directory แล้ว ซึ่งทำได้โดยใช้คำสั่ง kinit ในเทอร์มินัล เรียกใช้คำสั่งต่อไปนี้ แทนที่ชื่อที่ถูกต้องสำหรับผู้ดูแลระบบไดเรกทอรีสำหรับ diradmin ถ้าจำเป็น และป้อนรหัสผ่านเมื่อระบบแจ้ง ไม่มีผลลัพธ์

kinit diradmin

จากนั้น ให้ใช้ ldapmodify ในโหมดโต้ตอบในเทอร์มินัลเพื่อทำการเปลี่ยนแปลง ใช้คำสั่งต่อไปนี้ในเทอร์มินัล=:

ldapmodify

หมายเหตุ: ให้ผลลัพธ์เป็นข้อความ SASL บางส่วนออกมาและรอการป้อนข้อมูล เมื่อทำสำเร็จแล้ว ผลลัพธ์ SASL ควรมีลักษณะเช่นนี้:

SASL/GSSAPI authentication started SASL username: diradmin@REALM SASL SSF: 56 SASL data security layer installed.

แก้ไขการกำหนดค่า

สุดท้าย ทำการแก้ไขการกำหนดค่า ซึ่งจำเป็นต้องป้อนข้อความทั้งหมดด้านล่างนี้ในหน้าต่างเทอร์มินัลให้เป็นข้อมูลป้อนเข้าในคำสั่ง ldapmodify ฐานการค้นหาต้องถูกแทนที่สำหรับ [ฐานการค้นหา] ด้านล่างนี้ และต้องเอาวงเล็บออกด้วย

dn: olcDatabase={1}bdb,cn=config changetype: modify add: olcLimits olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited dn: olcDatabase={2}bdb,cn=config changetype: modify add: olcLimits olcLimits: dn.exact="uid=_ldap_replicator,cn=users,[search base]" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited

จากนั้นกด Control-D

หากทุกอย่างสำเร็จแล้ว ข้อความดังต่อไปนี้จะแสดงขึ้น

modifying entry "olcDatabase={1}bdb,cn=config" modifying entry "olcDatabase={2}bdb,cn=config"

ดูเพิ่มเติม

สคริปต์ Shell ทางเลือก

ด้านล่างนี้คือข้อความของสคริปต์ Shell ที่สามารถใช้ทำกระบวนการนี้ให้เป็นแบบอัตโนมัติได้ เพียงใช้คำสั่ง kinit กับผู้ดูแลระบบไดเรกทอรีตามด้านบนนี้และเรียกใช้สคริปต์นี้ ดูคำแนะนำเกี่ยวกับโปรแกรมแก้ไขข้อความได้จากบทความนี้

#!/bin/sh nc=`ldapsearch -x -LLL -b "" -s การตั้งชื่อฐานบริบท | awk '/namingContexts/ {พิมพ์ $2}''` ldapmodify <

เอกสารนี้จะมีการอัปเดตเมื่อมีข้อมูลเพิ่มเติม

วันที่เผยแพร่: