คอนฟิกเซอร์วิส nscd

ในกรณีที่คอนฟิกให้ลีนุกซ์ตรวจสอบ user, group (authenticate) จาก LDAP Server ทุกครั้งที่มีการอ้างอิง เช่นการสร้างไฟล์ หรือแสดงรายชื่อไฟล์ด้วยคำสั่ง ls ของ user หรืออื่นๆ ที่เกี่ยวข้องกับ user, group เครื่องจะต้องมีการสอบถามจาก LDAP ทุกครั้ง ทำให้บางครั้งอาจเพิ่มโหลดมากเกินไปบนตัว LDAP Server

เพื่อเพิ่มประสิทธิภาพในการตรวจสอบ user, group จาก LDAP แนะนำให้รันเซอร์วิส nscd (name service cache daemon) บนเครื่อง โดยโปรแกรมนี้จะทำหน้าที่เก็บข้อมูล cache ไว้บนเครื่องตัวเอง ถ้าถามซ้ำกับข้อมูลเดิมที่มีอยู่ใน cache แล้ว ภายในระยะเวลาที่กำหนดไว้ (time to live) จะไม่มีการส่งไปถาม LDAP Server อีก

ข้อเสียของการรันเซอร์วิส nscd อย่างหนึ่งคือ เรื่องการตั้งค่าเวลา (time to live) ทำให้บางครั้งอาจไม่ได้ข้อมูลที่ล่าสุด เช่นดีฟอลต์เวลาที่ cache ไว้สำหรับการเก็บข้อมูลของ user คือ 600 วินาที สำหรับการค้นหาข้อมูลที่สำเร็จ (positive-time-to-live) ถ้ามีการเปลี่ยนแปลงข้อมูลของ user บน LDAP Server จะต้องรอจนเวลานี้ผ่านไป  ข้อมูล cache ใน nscd ถึงจะปรับปรุงเป็นข้อมูลใหม่

ปรับปรุงเวอร์ชั่น nscd

ใช้คำสั่ง rpm เพื่อตรวจสอบเวอร์ชั่นของ nscd ที่ติดตั้งอยู่

[root@ldap-client ~]# rpm -q nscd
nscd-2.8-3.i386

คำแนะนำ ก่อนที่จะรันเซอร์วิส nscd แนะนำให้ปรับปรุงเป็นเวอร์ชั่นล่าสุด เช่น Fedora 9 เวอร์ชั่นล่าสุดที่เขียนบทความนี้คือ nscd-2.8-8

[root@ldap-client ~]# rpm -Uvh nscd-2.8-8.i386.rpm
Preparing...                ########################################### [100%]
   1:nscd                   ########################################### [100%]

คอนฟิกไฟล์ /etc/nscd.conf

ไฟล์คอนฟิกจากการติดตั้ง nscd จะเก็บ cache ของ passwd, group, hosts, services ในที่นี้เราจะเปลี่ยนคอนฟิกเพื่อให้เก็บ cache เฉพาะ passwd, group จาก LDAP

[root@ldap-client ~]# cat /etc/nscd.conf
#
# /etc/nscd.conf
#
server-user             nscd
debug-level             0
paranoia                no
enable-cache            passwd          yes
positive-time-to-live   passwd          600
negative-time-to-live   passwd          20
suggested-size          passwd          211
check-files             passwd          yes
persistent              passwd          yes
shared                  passwd          yes
max-db-size             passwd          33554432
auto-propagate          passwd          yes
enable-cache            group           yes
positive-time-to-live   group           3600
negative-time-to-live   group           60
suggested-size          group           211
check-files             group           yes
persistent              group           yes
shared                  group           yes
max-db-size             group           33554432
auto-propagate          group           yes
enable-cache            hosts           no
enable-cache            services        no

คำแนะนำการคอนฟิกไฟล์ nscd.conf

  • ดีฟอลต์คอนฟิกจากการติดตั้ง จะเป็บ cache ของ user (passwd) เป็นเวลา 600 วินาที สำหรับข้อมูลที่ค้นหาได้สำเร็จ (positive-time-to-live) แต่จะเก็บ cache ของ user ที่ค้นหาไม่สำเร็จ (ไม่มีข้อมูลใน LDAP) เป็นเวลา 20 วินาที
  • ดีฟอลต์คอนฟิกจากการติดตั้ง จะเป็บ cache ของ group เป็นเวลา 3600 วินาที สำหรับข้อมูลที่ค้นหาได้สำเร็จ (positive-time-to-live) แต่จะเก็บ cache ของ group ที่ค้นหาไม่สำเร็จ (ไม่มีข้อมูลใน LDAP) เป็นเวลา 60 วินาที
  • ต้องรอเวลา time-to-live เหล่านี้หมดไป จนกว่า nscd จะทำการตรวจสอบข้อมูลจาก LDAP ใหม่อีกครั้ง ก่อนการใช้งานจริงแนะนำให้ทดลองปรับค่าแล้วดูผลลัพธ์ที่ได้

รันเซอร์วิส nscd

ใช้คำสั่ง service เพื่อรันเซอร์วิส nscd

[root@fc9-k2 ~]# service nscd start
Starting nscd:                                             [  OK  ]

ข้อมูล cache ของ nscd จะถูกเก็บไว้ใน /var/db/nscd/

[root@fc9-k2 ~]# ls -l /var/db/nscd/
total 432
-rw------- 1 root root 217016 2008-11-28 15:39 group
-rw------- 1 root root 217016 2008-11-28 15:39 passwd

ทดสอบ nscd cache

ใช้คำสั่ง time เพื่อเปรียบเทียบความเร็ว ระหว่างการดึงข้อมูล user จาก LDAP ในครั้งแรก และครั้งที่สอง ดึงข้อมูลจาก cache ของ nscd

[root@fc9-k2 ~]# time id user01
uid=1011(user01) gid=513(Domain Users) groups=513(Domain Users)
real    0m0.046s
user    0m0.000s
sys     0m0.007s
[root@fc9-k2 ~]# time id user01
uid=1011(user01) gid=513(Domain Users) groups=513(Domain Users)
real    0m0.007s
user    0m0.000s
sys     0m0.005s

ข้อมูลอ้างอิง

Leave a Reply

Your email address will not be published.