Tổng quan
Trong bài blog này, mình sẽ hướng dẫn các bạn cách cấu hình LDAP ở chế độ Master Master. Mô hình Master Master áp dụng trong trường hợp tải cao, yêu cầu ghi vào LDAP nhiều mà trong khi với mô hình Master Slave bạn chỉ có thể ghi duy nhất vào node Master. Với chế độ Master Master, người dùng có thể ghi vào bất kỳ Master nào thuộc cụm LDAP. Đồng thời, giải pháp Master Master LDAP sẽ cải thiện hiệu năng GHI vào LDAP, tăng tính sẵn sàng cho dịch vụ.
Mô hình

Chuẩn bị
- Cài đặt 2 node LDAP với IP như sau
HOSTNAME ldap_94 (Master)
CPU 2 core
RAM 2 GB
Disk vda: os
Network eth0: Network access (10.10.10.94)
HOSTNAME ldap_96 (Master)
CPU 2 core
RAM 2 GB
Disk vda: os
Network eth0: Network access (10.10.10.96)
Cài đặt
Bổ sung config tại tất cả các node
Kích hoạt module syncprov
cat > mod_syncprov.ldif << EOF
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
EOF
ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif
Kết quả
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"
Cho phép module syncprov hoạt động trên DB LDAP
cat > syncprov.ldif << EOF
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
EOF
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
Kết quả
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"
Tại node Master 94
Lưu ý:
- Trong mô hình mình có 2 node, Master 94 và Master 96
- Tại Node Master 94 sẽ khai báo cấu hình cho phép nhân bản dữ liệu lên node Master 96 (master96.ldif)
- Tại Node Master 96 sẽ khai báo cấu hình cho phép nhân bản dữ liệu lên node Master 94 (master94.ldif)
Lưu ý file cấu hình:
olcServerID: Độc nhất, định danh cho node LDAP. Với Master 94, mình định nghĩaolcServerID: 2. với Master 96, mình định nghĩaolcServerID: 1)provider: Định nghĩa IP + Port của Note LDAP kết nối tới (ở đây là node Master 96)
Cấu hình
cat > master96.ldif << EOF
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
provider=ldap://10.10.10.96:389/
bindmethod=simple
binddn="cn=Manager,dc=nhanhoa,dc=local"
credentials=Cloud365a@123
searchbase="dc=nhanhoa,dc=local"
scope=sub
schemachecking=on
type=refreshAndPersist
retry="30 5 300 3"
interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
EOF
ldapmodify -Y EXTERNAL -H ldapi:/// -f master96.ldif
Kết quả
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"
Tại node Master 96
Lưu ý file cấu hình:
olcServerID: Độc nhất, định danh cho node LDAP. Với Master 94, mình định nghĩaolcServerID: 2. với Master 96, mình định nghĩaolcServerID: 1)provider: Định nghĩa IP + Port của Note LDAP kết nối tới (ở đây là node Master 94)
cat > master94.ldif << EOF
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 2
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
provider=ldap://10.10.10.94:389/
bindmethod=simple
binddn="cn=Manager,dc=nhanhoa,dc=local"
credentials=Cloud365a@123
searchbase="dc=nhanhoa,dc=local"
scope=sub
schemachecking=on
type=refreshAndPersist
retry="30 5 300 3"
interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
EOF
ldapmodify -Y EXTERNAL -H ldapi:/// -f master94.ldif
Kết quả
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
adding new entry "olcOverlay=syncprov,olcDatabase={2}hdb,cn=config"
Kiểm tra
Thêm dữ liệu vào node master 94
Thêm dữ liệu vào node Master 94
echo '
dn: ou=Tests,dc=nhanhoa,dc=local
ou: Tests
objectclass: organizationalUnit' > test_structure.ldif
ldapadd -x -D cn=Manager,dc=nhanhoa,dc=local -W -f test_structure.ldif
Kết quả
adding new entry "ou=Tests,dc=nhanhoa,dc=local"
Kiểm tra dữ liệu trên node Master 96
ldapsearch -x -h 10.10.10.96 -b "dc=nhanhoa,dc=local" -s sub "(objectclass=person)"
Kết quả
[root@ldap_96 ~]# ldapsearch -x -h 10.10.10.96 -b "dc=nhanhoa,dc=local" -s sub "(objectclass=organizationalUnit)"
# extended LDIF
#
# LDAPv3
# base <dc=nhanhoa,dc=local> with scope subtree
# filter: (objectclass=organizationalUnit)
# requesting: ALL
#
# People, nhanhoa.local
dn: ou=People,dc=nhanhoa,dc=local
objectClass: organizationalUnit
ou: People
# Group, nhanhoa.local
dn: ou=Group,dc=nhanhoa,dc=local
objectClass: organizationalUnit
ou: Group
# Tests, nhanhoa.local
dn: ou=Tests,dc=nhanhoa,dc=local
ou: Tests
objectClass: organizationalUnit
# search result
search: 2
result: 0 Success
# numResponses: 4
# numEntries: 3
Thêm dữ liệu vào node master 96
Thêm dữ liệu vào node Master 96
echo '
dn: cn=thanhbaba,ou=Tests,dc=nhanhoa,dc=local
objectClass: person
objectClass: inetOrgPerson
mail: [email protected]
userPassword:: b3BlbnN0YWNr
cn: thanhbaba
sn: thanhbaba' > user_test_thanhbaba.ldif
ldapadd -x -D cn=Manager,dc=nhanhoa,dc=local -W -f user_test_thanhbaba.ldif
Kết quả
adding new entry "cn=thanhbaba,ou=Tests,dc=nhanhoa,dc=local"
Kiểm tra dữ liệu trên node Master 94
[root@ldap_94 ~]# ldapsearch -x -h 10.10.10.94 -b "dc=nhanhoa,dc=local" -s sub "(objectclass=person)"
# extended LDIF
#
# LDAPv3
# base <dc=nhanhoa,dc=local> with scope subtree
# filter: (objectclass=person)
# requesting: ALL
#
# thanhbaba, Tests, nhanhoa.local
dn: cn=thanhbaba,ou=Tests,dc=nhanhoa,dc=local
objectClass: person
objectClass: inetOrgPerson
mail: [email protected]
cn: thanhbaba
sn: thanhbaba
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Tắt node Master 94, ghi dữ liệu vào Master 96
Tại node Master 94
[root@ldap_94 ~]# init 0
Tại node Master 96
echo '
dn: cn=thanhbaba2,ou=Tests,dc=nhanhoa,dc=local
objectClass: person
objectClass: inetOrgPerson
mail: [email protected]
userPassword:: b3BlbnN0YWNr
cn: thanhbaba2
sn: thanhbaba2' > user_test_thanhbaba2.ldif
ldapadd -x -D cn=Manager,dc=nhanhoa,dc=local -W -f user_test_thanhbaba2.ldif
Kết quả
adding new entry "cn=thanhbaba2,ou=Tests,dc=nhanhoa,dc=local"
Kiểm tra
[root@ldap_96 ~]# ldapsearch -x -h 10.10.10.96 -b "dc=nhanhoa,dc=local" -s sub "(cn=thanhbaba2)"
# extended LDIF
#
# LDAPv3
# base <dc=nhanhoa,dc=local> with scope subtree
# filter: (cn=thanhbaba2)
# requesting: ALL
#
# thanhbaba2, Tests, nhanhoa.local
dn: cn=thanhbaba2,ou=Tests,dc=nhanhoa,dc=local
objectClass: person
objectClass: inetOrgPerson
mail: [email protected]
cn: thanhbaba2
sn: thanhbaba2
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Bật node Master 94, kiểm tra dữ liệu đồng bộ
[root@ldap_94 ~]# ldapsearch -x -h 10.10.10.94 -b "dc=nhanhoa,dc=local" -s sub "(cn=thanhbaba2)"
# extended LDIF
#
# LDAPv3
# base <dc=nhanhoa,dc=local> with scope subtree
# filter: (cn=thanhbaba2)
# requesting: ALL
#
# thanhbaba2, Tests, nhanhoa.local
dn: cn=thanhbaba2,ou=Tests,dc=nhanhoa,dc=local
objectClass: person
objectClass: inetOrgPerson
mail: [email protected]
cn: thanhbaba2
sn: thanhbaba2
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
Tổng kết
Như vậy trong bài viết này mình đã triển khai mô hình LDAP master-master. Tuy nhiên còn một mô hình triển khai LDAP phổ biến khác đó là mô hình LDAP maste-slave. Vậy sự khác nhau giữa hai mô hình này là thế nào? Cách triển khai ra sao? Lợi ích của mô hình master-slave đem lại là gì? Mời các bạn theo dõi bài viết tiếp theo của mình.
Cảm ơn các bạn đã theo dõi.
Tài liệu tham khảo
https://www.server-world.info/en/note?os=CentOS_7&p=openldap&f=6
Thực hiện bởi cloud365.vn









Add Comment