1. LDAP [Part 1] - Giới thiệu về LDAP
Giới thiệu và tìm hiểu về LDAP.
Nơi chứa các tài liệu tham khảo của dịch vụ Cloud365.
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ụ.
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)
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"
Lưu ý:
Lưu ý file cấu hình:
olcServerID
: Độc nhất, định danh cho node LDAP. Với Master 94, mình định nghĩa olcServerID: 2
. với Master 96, mình định nghĩa olcServerID: 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"
Lưu ý file cấu hình:
olcServerID
: Độc nhất, định danh cho node LDAP. Với Master 94, mình định nghĩa olcServerID: 2
. với Master 96, mình định nghĩa olcServerID: 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"
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
echo '
dn: cn=thanhbaba,ou=Tests,dc=nhanhoa,dc=local
objectClass: person
objectClass: inetOrgPerson
mail: thanhbaba@test.com
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: thanhbaba@test.com
cn: thanhbaba
sn: thanhbaba
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
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: thanhbaba2@test.com
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: thanhbaba2@test.com
cn: thanhbaba2
sn: thanhbaba2
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
[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: thanhbaba2@test.com
cn: thanhbaba2
sn: thanhbaba2
# search result
search: 2
result: 0 Success
# numResponses: 2
# numEntries: 1
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.
https://www.server-world.info/en/note?os=CentOS_7&p=openldap&f=6
Thực hiện bởi cloud365.vn
Chuỗi bài viết về LDAP và tích hợp LDAP với các phần mềm nguồn mở khác.
Giới thiệu và tìm hiểu về LDAP.
Cài đặt OpenLDAP trên CentOS 7
Hướng dẫn cài đặt phpldapadmin trên CentOS 7
Xác thực SSH với LDAP
Tích hợp LDAP với Pfsense
OpenVPN Pfsense đối với user được tích hợp từ LDAP
Tích hợp LDAP với phpIPAM
Tích hợp LDAP với Check_MK
Tích hợp LDAP với Graylog
Hướng dẫn triển khai LDAP Master - Master trên CentOS 7
Hướng dẫn triển khai LDAP Master - Slave trên CentOS 7
Hướng dẫn cấu hình Keepalive cho mô hình LDAP Master Master
Hướng dẫn triển khai LDAP Multi-Master Haproxy Pacemaker trên CentOS 7
Hướng dẫn backup và restore trên CentOS 7