Kusprayitna Blogs

Hidup untuk berbagi ilmu :: IT Linux Windows Database Oracle PHP OpenSource

Membuat Backup Database OpenLDAP dengan Replica

Posted by Prayitna Kuswidianta on January 25th, 2013

Database LDAP yang sudah pusat database untuk otentifikasi akan menjadi titik tunggal kegagalan sistem apabila tidak diupayakan membuat backup database.

Backup bisa berupa off-line maupun on-line.

Backup off-line dapat dilakukan secara sederhana, yaitu :

  1. Matikan database ldap, yaitu dengan service ldap stop
  2. Salin konfigurasi file, yang biasanya terletak di /etx/openldap
  3. Salin database ldap, yang biasanya terletak di /var/lib/ldap
  4. Selesai dan Jalankan kembali ldap dengan service ldap start
Backup on-line disini didefinisikan sebagai backup yang dilakukan pada saat database ldap masih hidup. Ini dapat dilakukan dengan dua cara , yaitu :
1. menggunakan perintah slapcat
2. menggunakan fasilitas repika

Backup dengan SLAPCAT

Cara backup dengan slapcat cukup sederhana, yaitu :
  1. Database LDAP msih dalam kondisi hidup
  2. Jalankan perintah "slapcat -v -l backup.ldif", dimana perintah ini akan membaca seluruh database LDAP dan dituliskan ke file backup.ldif
Cara restore atau memulihkan file backup.ldif ke database LDAP yaitu :
  1. Konsidi database LDAP adalah mati, yaitu dengan service ldap stop
  2. Siapkan LDAP server baru dan pastikan data masih kosong, yaitu dengan rm /var/lib/ldap/* -rf
  3. Tulis backup.ldif ke database LDAP dengan slapadd, yaitu dengan perintah slapadd -l backup.ldif
  4. Selesai, sebelum menjalankan database LDAP, pastikan bahwa pemilik file database LDAP adalah ldap, yaitu dengan perintah chown ldap:ldap/var/lib/ldap/*

Backup dengan Replika

Berbeda dengan cara slapcat, maka dengan metode replica ini dibutuhkab minimal dua database LDAP server, yaitu misalnya master-ldap dan slave-ldap.
Database master-ldap adalah database LDAP yang akan dilakukan modifikasi dan slave-ldap adalah database LDAP untuk dibaca saja, baik itu dengan tujuan pembagian beban ataupun yang lain.
Proses pembuatan database LDAP replika ini ada beberapa jenis, seperti slurp dan syncrepl.
Replika pada awalnya menggunakan metode slurp dan sejak versi OpenLDAP 2.4 slurp sudah ditinggalkan. Untuk saat ini, openLDAP saya jika di cek versinya yaitu 2.3.
Kali ini sebagai kasus adalah membuat replika dengan SLURP.
Sebagai referensi bisa dibaca www.openldap.org/doc/admin23/replication.html
Tahapan yang dilakukan yaitu:
  1. Siapkan master-ldap, dimana disumsikan bahwa database ini sudah dapat bekerja dengan baik sebagai server LDAP.
  2. Tentukan user dn untuk melakukan backup, misalnya dn: cn=replicator,dc=my-domain,dc=comdengan pasword salam, contoh file ldif yang dapat diimport ke database master-ldap yaitu:
    dn: cn=replicator,dc=my-domain,dc=com
    cn: replicator
    objectclass: person
    objectclass: shadowAccount
    objectclass: top
    sn: replicator
    uid: replicator
    userpassword: salam

  3. Tambahkan konfigurasi di slapd.conf agar support replikasi dengan slurp, berikut adalah contoh konfigurasi dan diikuti dengan yang sudah dimodifikasi
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
# Allow LDAPv2 client connections.  This is NOT the default.
allow bind_v2
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral       ldap://root.openldap.org
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
# Load dynamic backend modules:
# modulepath    /usr/lib/openldap
#######################################################################
# ldbm and/or bdb database definitions
#######################################################################
database        bdb
suffix          "dc=my-domain,dc=com"
rootdn          "cn=Manager,dc=my-domain,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw                secret
# rootpw                {crypt}ijFYNcSNctBYg
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory       /var/lib/ldap
# Indices to maintain for this database
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub
# Replicas of this database
#replogfile /var/lib/ldap/openldap-master-replog
#replica host=ldap-1.example.com:389 starttls=critical
#     bindmethod=sasl saslmech=GSSAPI
#     authcId=host/ldap-master.example.com@EXAMPLE.COM
Konfigurasi yang sudah dimodifikasi (dalam huruf tebal)
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include         /etc/openldap/schema/core.schema
include         /etc/openldap/schema/cosine.schema
include         /etc/openldap/schema/inetorgperson.schema
include         /etc/openldap/schema/nis.schema
# Allow LDAPv2 client connections.  This is NOT the default.
allow bind_v2
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral       ldap://root.openldap.org
pidfile         /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
# Load dynamic backend modules:
# modulepath    /usr/lib/openldap
# Sample access control policy:
# access to *
#       by self write
#       by users read
#       by anonymous auth
# Beri hak user replicator agar bisa membaca (master-ldap) dan menulis (slave-ldap)
access to *
by dn.exact="cn=replicator,dc=my-domain,dc=com"   write
# Tambahkan pembatasan menjadi unlimited untuk user replicator
limits dn.exact="cn=replicator,dc=my-domain,dc=com" time.soft=unlimited time.hard=unlimited size.soft=unlimited size.hard=unlimited
#######################################################################
# ldbm and/or bdb database definitions
#######################################################################
database        bdb
suffix          "dc=my-domain,dc=com"
rootdn          "cn=Manager,dc=my-domain,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoided.  See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
# rootpw                secret
# rootpw                {crypt}ijFYNcSNctBYg
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd and slap tools.
# Mode 700 recommended.
directory       /var/lib/ldap
# Indices to maintain for this database
index objectClass                       eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                     eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub
# Replicas of this database
#replogfile /var/lib/ldap/openldap-master-replog
#replica host=ldap-1.example.com:389 starttls=critical
#     bindmethod=sasl saslmech=GSSAPI
#     authcId=host/ldap-master.example.com@EXAMPLE.COM
# Parameter Replika
replicationinterval 300
replogfile /var/lib/ldap/openldap-replica.log
replica host=slave-ldap:389  binddn="cn=replicator,dc=my-domain,dc=com"  bindmethod=simple   credentials=salam
Catatan  :
1. untuk melakukan replika, digunakan user replicator, yang mempunyai hak baca di master-ldap dan hak tulis di slave-ldap
2. replicationinterval adalah jeda waktu antar proses replikasi yang dilakukan secara otomatis (satuan detik)
3. replogfile adalah alamat file dari log perubahan database master-ldap, owner dari direktori harus ldap, jika bukan dapat menyebabkan kegagalan membuat file log ini.
4. replica adalah parameter untuk menulis perubahan ke database slave-ldap
Tahapan berikutnya yaitu :
  1. Backup database master-ldap dan restore ke database slave-ldap
  2. Ubah konfigurasi di slave-ldap, yaitu hapus bagian Parameter Replika dan ubah menjadi

    # Parameter Replika
    updatedn "cn=replicator,dc=my-domain,dc=com"
    updateref ldap://master-ldap:389
  3. Jalankan database slave-ldap dan restart database master-ldap
Disini persiapan replika sudah selesai, berikutnya adalah melakukan ujicoba perubahan datbase master-ldap yang harus dapat otomatis merubah database slave-ldap sesuai dengan interfal yang sudah ditentukan.
  1. Lakukan perubahan pada master-ldap, misalnya merubah businessCategory
  2. Setelah perubahan dilakukan, maka di master-ldap akan dibuat logfile replika yang berisi perubahan tersebut[root@master-ldap]# tail /var/lib/ldap/openldap-replica.log
    replica: slave-ldap:389
    time: 1359096882
    dn: uid=prayitna,dc=my-domain,dc=com
    changetype: modify
    replace: businessCategory
    businessCategory: ADATEST
    -
    replace: entryCSN
    entryCSN: 20130125065442Z#000000#00#000000
    -
    replace: modifiersName
    modifiersName: cn=Manager,dc=my-domain,dc=com
    -
    replace: modifyTimestamp
    modifyTimestamp: 20130125065442Z
    -
  3. Tunggu beberapa saat, saat replikasi dengan slurp dilakukan pada interval yang ditentukan, maka perubahan tersebut akan dikirim ke slave-ldap dan log file akan kembali kosong.
  4. Cek apakah ada perubahan di slave-ldap? seharusnya sudah berubah.

Leave a Reply

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*