一、前沿:
本文只是包含ldap的主從複製的配置解決方案,不包含HA功能,其中可以提供的一種解決方案就是LDAP+KeepAlived實現HA。
二、Master配置
在master上啓用添加syncprov模塊來實現主從複製功能點,通過ldif文件來增加syncprov模塊,無需重啓ldap server。
GX-BATCH-NN-01# vim mod_syncprov.ldif
#注意:ldap默認的ldif是存放在/etc/openldap/schema路徑下,如果你的*.ldif文件不在/etc/openldap/schema目錄下,執 行命令的時候使用絕對路徑(建議使用絕對路徑)。
文件內容:
create new
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib/openldap
olcModuleLoad: syncprov.la
Ldap由於scheam的控制,文件裏的屬性有嚴格的控制,錯誤的或者不存在的屬性將無法執行ldif文件,所以ldif文件的字體顏色會幫助我們配置ldif文件(屬性:綠色,屬性值:紅色)。
GX-BATCH-NN-01#ldapadd -Y EXTERNAL -H ldapi:/// -f /ldif/mod_syncprov.ldif
執行完界面提示內容:
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
GX-BATCH-NN-01# vim syncprov.ldif
文件內容:
create new
dn: olcOverlay=syncprov,olcDatabase={1}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
GX-BATCH-NN-01# ldapadd -Y EXTERNAL -H ldapi:/// -f /ldif/syncprov.ldif
執行完界面提示內容:
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={1}hdb,cn=config"
三、Slave配置
同樣,在slave上也需要配置syncrepl,因爲syncrepl實現的主從複製是單向的,即master的所有操作都會同步到slave上,slave無法同步到master上,爲了避免master與slave上的數據不一致,slave上禁止對ldap信息的增刪改操作,只允許查詢操作。因爲是單向的,故slave需要一些master的認證信息,以便從master同步數據
GX-BATCH-NN-02# vim syncrepl.ldif
文件內容:
create new
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
LDAP server's URI
provider=ldap://172.20.52.148:389/
bindmethod=simple
own domain name
binddn="cn=Manager,dc=asiainfo,dc=com"
directory manager's password
credentials=Ldap@123
searchbase="dc=asiainfo,dc=com"
includes subtree
scope=sub
schemachecking=on
type=refreshAndPersist
[retry interval] [retry times] [interval of re-retry][re-retry times]
retry="30 5 3003"
replication interval
interval=00:00:05:00
注意:一定要注意字體的顏色和上面一致,provider,bindmethod …… interval都是olcSyncRepl的屬性值,不是與olcSyncRepl同級別,故其爲紅色。
GX-BATCH-NN-02# vim ldapadd -Y EXTERNAL -H ldapi:/// -f /ldif/syncrepl.ldif
執行完界面提示內容:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}hdb,cn=config
四、測試
- 查看master/slave的監聽端口
GX-BATCH-NN-01#netstat -tnlp | grep 389 #master
GX-BATCH-NN-02#netstat -tnlp | grep 389 #slave
命令執行完成界面提示
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN -
tcp 0 0 :::389
- slave 中查看當前ldap用戶列表
GX-BATCH-NN-02#ldapsearch -x -b 'ou=People,dc=asiainfo,dc=com',就可以看到自動從master同步過來是數據
- 在master新增/刪除用戶,確認是否同步。首先,在master上,準備增加用戶的ldif腳本。
腳本內容:
create new
replace to your own domain namefor "dc=,dc=" section
dn: uid=asiainfo,ou=People,dc=asiainfo,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
cn: ASIAINFO
sn: TEST
userPassword: {SSHA}c63ddiyMRaL2UjVtQZHBCu0fbdmX996F #ssha加密後的值: suse
loginShell: /bin/bash
uidNumber: 1612
gidNumber: 1612
homeDirectory: /app11
dn: cn=asiainfo,ou=Group,dc=asiainfo,dc=com
objectClass: posixGroup
cn: ASIAINFO
gidNumber: 1612
memberUid:uid=asiainfo,ou=People,dc=asiainfo,dc=com
然後,在master上,導入ldif腳本:
GX-BATCH-NN-01# ldapadd -x -D cn=admin,dc=asiainfo,dc=com -W -f /tmp/ldap/ ldap_asiainfo-crm.ldif
執行完命令提示:
Adding new entry “uid=asiainfo,ou=People,dc=asiainfo,dc=com”
Adding new entry “cn=asiainfo,ou=Group,dc=asiainfo,dc=com”
在slave中查看是否同步完成
GX-BATCH-NN-02#ldapsearch -x -b 'ou=People,dc=asiainfo,dc=com'|grep asiainfo
執行完命令提示的內容裏包含了uid=asiainfo:
People, asiainfo.com
dn: ou=People,dc=asiainfo,dc=com
asiainfo, People, asiainfo.com
dn: uid=asiainfo,ou=People,dc=asiainfo,dc=com
uid: asiainfo
到此表示主從同步完成。
作者:蔣尐文
來源:CSDN
原文:https://blog.csdn.net/xiaowen_1990/article/details/79651099
版權聲明:本文爲博主原創文章,轉載請附上博文鏈接!