Dalam panduan ini, kami akan mengonfigurasi replikasi Multi-master server OpenLDAP di CentOS 7 / RHEL 7 . Pengaturan replikasi Multi-Master ini untuk mengatasi batasan replikasi Master-Slave biasa di mana hanya server master yang melakukan perubahan di direktori LDAP .
BACA:Cara mengonfigurasi OpenLDAP Master-Slave Replication
Dalam replikasi Multi-Master, dua atau lebih server bertindak sebagai master dan semua ini berwenang untuk setiap perubahan di direktori LDAP. Kueri dari klien didistribusikan ke beberapa server dengan bantuan replikasi.
Lingkungan
Untuk replikasi Multi-Master, kita akan menggunakan tiga OpenLDAP server. Detailnya ada di bawah.
ldpsrv1.itzgeek.local (192.168.12.10) ldpsrv2.itzgeek.local (192.168.12.20) ldpsrv3.itzgeek.local (192.168.12.30)
Instal LDAP
Instal paket LDAP di semua server Anda.yum -y install openldap compat-openldap openldap-clients openldap-servers openldap-servers-sql openldap-devel
Mulai layanan LDAP dan aktifkan untuk memulai otomatis saat boot sistem.
systemctl start slapd.service systemctl enable slapd.service
Mengonfigurasi Pencatatan LDAP
Konfigurasikan syslog untuk mengaktifkan logging LDAP.
echo "local4.* /var/log/ldap.log" >> /etc/rsyslog.conf systemctl restart rsyslog
Mengonfigurasi Replikasi Multi-Master OpenLDAP
Salin contoh file konfigurasi database ke /var/lib/ldap direktori dan perbarui izin file. Anda harus melakukan langkah-langkah di bawah ini pada semua server OpenLDAP Anda kecuali dinyatakan lain.
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown ldap:ldap /var/lib/ldap/*
Kami akan mengaktifkan modul syncprov.
vi syncprov_mod.ldif
Salin dan tempel baris di bawah ini ke syncprov_mod.ldif di atas berkas.
dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib64/openldap olcModuleLoad: syncprov.la
Sekarang kirim konfigurasi ke server LDAP.
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif
Keluaran:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "cn=module,cn=config"
Aktifkan Replikasi Konfigurasi
Ubah olcServerID di semua server . Misalnya, untuk ldpsrv1, setel olcServerID ke 1, untuk ldpsrv2, setel olcServerID ke 2 dan untuk ldpsrv3, setel ke 3.
vi olcserverid.ldif
Salin dan tempel teks di bawah ini ke dalam file di atas.
dn: cn=config changetype: modify add: olcServerID olcServerID: 1
Perbarui konfigurasi di server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcserverid.ldif
Keluaran:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config"
Kita perlu membuat sandi untuk replikasi konfigurasi LDAP.
slappasswd
Keluaran:
New password: Re-enter new password: {SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C
Anda harus membuat kata sandi di setiap server dengan menjalankan perintah slappasswd.
Tetapkan kata sandi untuk database konfigurasi.
vi olcdatabase.ldif
Salin dan tempel teks di bawah ini ke dalam file di atas. Anda harus memasukkan sandi yang Anda buat pada langkah sebelumnya pada file ini.
dn: olcDatabase={0}config,cn=config add: olcRootPW olcRootPW: {SSHA}MAfw/QNizKx4NxueW7CpCSN6jeDB5Z+C
Perbarui konfigurasi di server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabase.ldif
Keluaran:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={0}config,cn=config"
Sekarang kita akan mengatur replikasi konfigurasi di semua server.
vi configrep.ldif
Salin dan tempel teks di bawah ini ke dalam file di atas.
### Update Server ID with LDAP URL ### dn: cn=config changetype: modify replace: olcServerID olcServerID: 1 ldap://ldpsrv1.itzgeek.local olcServerID: 2 ldap://ldpsrv2.itzgeek.local olcServerID: 3 ldap://ldpsrv3.itzgeek.local ### Enable Config Replication### dn: olcOverlay=syncprov,olcDatabase={0}config,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov ### Adding config details for confDB replication ### dn: olcDatabase={0}config,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://ldpsrv1.itzgeek.local binddn="cn=config" bindmethod=simple credentials=x searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 olcSyncRepl: rid=002 provider=ldap://ldpsrv2.itzgeek.local binddn="cn=config" bindmethod=simple credentials=x searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 olcSyncRepl: rid=003 provider=ldap://ldpsrv3.itzgeek.local binddn="cn=config" bindmethod=simple credentials=x searchbase="cn=config" type=refreshAndPersist retry="5 5 300 5" timeout=1 - add: olcMirrorMode olcMirrorMode: TRUE
Sekarang kirim konfigurasi ke server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f configrep.ldif
Keluaran:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "cn=config" adding new entry "olcOverlay=syncprov,olcDatabase={0}config,cn=config" modifying entry "olcDatabase={0}config,cn=config"
Aktifkan Replikasi Basis Data
Pada saat ini, semua konfigurasi LDAP Anda telah direplikasi. Sekarang, kita akan mengaktifkan replikasi data aktual, yaitu database pengguna. Lakukan langkah-langkah di bawah ini pada salah satu node karena node lainnya sedang dalam replikasi.
Kita perlu mengaktifkan syncprov untuk database hdb.
vi syncprov.ldif
Salin dan tempel teks di bawah ini ke dalam file di atas.
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config changetype: add objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov
Perbarui konfigurasi di server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
Keluaran:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"
Siapkan replikasi untuk database hdb.
vi olcdatabasehdb.ldif
Salin dan tempel konten di bawah ini ke file di atas. Anda mungkin mendapatkan kesalahan untuk olcSuffix, olcRootDN, dan olcRootPW jika Anda sudah memilikinya di konfigurasi Anda. Hapus entri, jika tidak diperlukan.
dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=itzgeek,dc=local - replace: olcRootDN olcRootDN: cn=ldapadm,dc=itzgeek,dc=local - replace: olcRootPW olcRootPW: {SSHA}xtbbtC/1pJclCPzo1n3Szac9jqavSphk - add: olcSyncRepl olcSyncRepl: rid=004 provider=ldap://ldpsrv1.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 olcSyncRepl: rid=005 provider=ldap://ldpsrv2.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 olcSyncRepl: rid=006 provider=ldap://ldpsrv3.itzgeek.local binddn="cn=ldapadm,dc=itzgeek,dc=local" bindmethod=simple credentials=x searchbase="dc=itzgeek,dc=local" type=refreshOnly interval=00:00:00:10 retry="5 5 300 5" timeout=1 - add: olcDbIndex olcDbIndex: entryUUID eq - add: olcDbIndex olcDbIndex: entryCSN eq - add: olcMirrorMode olcMirrorMode: TRUE
Setelah Anda memperbarui file, kirim konfigurasi ke server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f olcdatabasehdb.ldif
Keluaran:
SASL/EXTERNAL authentication started SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth SASL SSF: 0 modifying entry "olcDatabase={2}hdb,cn=config"
Buat perubahan pada olcDatabase={1}monitor.ldif file untuk membatasi akses monitor hanya ke root LDAP (ldapadm ) pengguna, bukan kepada orang lain.
# vi monitor.ldif dn: olcDatabase={1}monitor,cn=config changetype: modify replace: olcAccess olcAccess: {0}to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external, cn=auth" read by dn.base="cn=ldapadm,dc=itzgeek,dc=local" read by * none
Setelah Anda memperbarui file, kirim konfigurasi ke server LDAP.
ldapmodify -Y EXTERNAL -H ldapi:/// -f monitor.ldif
Tambahkan skema LDAP.
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
Buat base.ldif file untuk domain Anda.
# vi base.ldiff dn: dc=itzgeek,dc=local dc: itzgeek objectClass: top objectClass: domain dn: cn=ldapadm ,dc=itzgeek,dc=local objectClass: organizationalRole cn: ldapadm description: LDAP Manager dn: ou=People,dc=itzgeek,dc=local objectClass: organizationalUnit ou: People dn: ou=Group,dc=itzgeek,dc=local objectClass: organizationalUnit ou: Group
Bangun struktur direktori.
ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f base.ldif
Keluaran:
Enter LDAP Password: adding new entry "dc=itzgeek,dc=local" adding new entry "cn=ldapadm ,dc=itzgeek,dc=local" adding new entry "ou=People,dc=itzgeek,dc=local" adding new entry "ou=Group,dc=itzgeek,dc=local"
Uji replikasi LDAP
Mari buat LDAP pengguna yang disebut “ldaptest “ di salah satu server master Anda, untuk melakukannya, buat .ldif file di ldpsrv1.itzgeek.local (dalam kasus saya).
[root@ldpsrv1 ~]# vi ldaptest.ldif
Perbarui file di atas dengan konten di bawah ini.
dn: uid=ldaptest,ou=People,dc=itzgeek,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldaptest uid: ldaptest uidNumber: 9988 gidNumber: 100 homeDirectory: /home/ldaptest loginShell: /bin/bash gecos: LDAP Replication Test User userPassword: {crypt}x shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7
Tambahkan pengguna ke server LDAP menggunakan ldapadd perintah.
[root@ldpsrv1 ~]# ldapadd -x -W -D "cn=ldapadm,dc=itzgeek,dc=local" -f ldaptest.ldif
Keluaran:
Enter LDAP Password: adding new entry "uid=ldaptest,ou=People,dc=itzgeek,dc=local"
Telusuri “ldaptest ” di server master lain (ldpsrv2.itzgeek.local ).
[root@ldpsrv2 ~]# ldapsearch -x cn=ldaptest -b dc=itzgeek,dc=local
Keluaran:
# extended LDIF # # LDAPv3 # base <dc=itzgeek,dc=local> with scope subtree # filter: cn=ldaptest # requesting: ALL # # ldaptest, People, itzgeek.local dn: uid=ldaptest,ou=People,dc=itzgeek,dc=local objectClass: top objectClass: account objectClass: posixAccount objectClass: shadowAccount cn: ldaptest uid: ldaptest uidNumber: 9988 gidNumber: 100 homeDirectory: /home/ldaptest loginShell: /bin/bash gecos: LDAP Replication Test User userPassword:: e2NyeXB0fXg= shadowLastChange: 17058 shadowMin: 0 shadowMax: 99999 shadowWarning: 7 # search result search: 2 result: 0 Success # numResponses: 2 # numEntries: 1
Sekarang, setel kata sandi untuk pengguna yang dibuat di ldpsrv1.itzgeek.local dengan membuka ldpsrv2.itzgeek.local . Jika Anda dapat mengatur kata sandi, itu berarti replikasi berfungsi seperti yang diharapkan.
[root@ldpsrv2 ~]# ldappasswd -s password123 -W -D "cn=ldapadm,dc=itzgeek,dc=local" -x "uid=ldaptest,ou=People,dc=itzgeek,dc=local"
Dimana,
-s tentukan kata sandi untuk nama pengguna
-x nama pengguna yang kata sandinya diubah
-D Nama khusus untuk diautentikasi ke server LDAP.
Dalam topologi replikasi Master-Slave, Anda tidak dapat mengatur kata sandi untuk pengguna LDAP di server budak.Ekstra
Konfigurasikan klien LDAP untuk mengikat ke server master baru juga.
authconfig --enableldap --enableldapauth --ldapserver=ldpsrv1.itzgeek.local,ldpsrv2.itzgeek.local,ldpsrv3.itzgeek.local --ldapbasedn="dc=itzgeek,dc=local" --enablemkhomedir --update
Itu saja.