服务规划:
IP | 系统 | 服务 | 角色 |
172.17.26.202 | centos7 | LDAP | 主 |
172.17.26.207 | centos7 | LDAP | 从 |
172.17.26.208 | centos7 | LDAP | 主 |
说明:
此架构是一套双主一从的架构;
1、先在202上运行一个ldap服务,然后在207上也运行一个ldap服务,配置让207作为从节点,去同步202的数据,此时202是主,207是从;
2、在208上运行一个ldap服务,让208和202配置为双主,此时在202或者208上操作,207都能同步到;
3、模拟202服务故障,然后修改207去同步208的数据,验证数据;
一、LDAP服务搭建
1、安装服务
yum -y install openldap openldap-servers openldap-clients compat-openldap 说明: openldap: #OpenLDAP配置文件、库和文档 openldap-servers: #服务器进程及相关命令、迁移脚本和相关文件 openldap-clients: #客户端进程及相关命令,用来访问和修改 OpenLDAP 目录 compat-openldap: #与主从配置相关
2、复制数据库模板
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG chown -R ldap:ldap /var/lib/ldap/DB_CONFIG
3、启动服务
systemctl enable slapd systemctl start slapd
#查看
netstat -ntlp |grep 389
4、使用 slappasswd 命令生成管理员(admin)密码
编写 LDIF(一种LDAP 专用的数据交换格式)文件并通过ldapadd命令将管理员密码导入到 LDAP配置文件中:
[root@202 ~]#slappasswd #回车,输入密码即可,生成的密文密码要记下来
[root@202 ~] ~$ vim chrootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}GDdMN3vBiNHs4fEcDaey6nCdILiY3GYd #这里的密码就是上一步生成的
导入:
ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
5、向 LDAP 中导入一些基本的 Schema
这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性;
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
6、配置 LDAP 的根域(以 dc=abc,dc=com 为例)及其管理域
[root@202 ~] ~$ vim chdomain.ldif #用你自己的域名代替"dc=***,dc=***"语句块 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=Manager,dc=abc,dc=com" read by * none dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcSuffix olcSuffix: dc=abc,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify replace: olcRootDN olcRootDN: cn=Manager,dc=abc,dc=com dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcRootPW olcRootPW: {SSHA}GDdMN3vBiNHs4fEcDaey6nCdILiY3GYd dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcAccess olcAccess: {0}to attrs=userPassword,shadowLastChange by dn="cn=Manager,dc=abc,dc=com" write by anonymous auth by self write by * none olcAccess: {1}to dn.base="" by * read olcAccess: {2}to * by dn="cn=Manager,dc=abc,dc=com" write by * read
导入:
ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
7、创建组织、角色
创建一个叫做 abc company 的组织,并在其下创建一个 Manager 的组织角色(该角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元;
[root@202 ~] ~$ vim basedomain.ldif dn: dc=abc,dc=com objectClass: top objectClass: dcObject objectClass: organization o: abc Company dc: abc dn: cn=Manager,dc=abc,dc=com objectClass: organizationalRole cn: Manager dn: ou=People,dc=abc,dc=com objectClass: organizationalUnit ou: People dn: ou=Group,dc=abc,dc=com objectClass: organizationalRole cn: Group导入:
#输入上面设置的管理员密码(明文) ldapadd -x -D cn=Manager,dc=abc,dc=com -W -f basedomain.ldif通过以上的所有步骤,我们就设置好了一个 LDAP 目录树: 其中基准 dc=abc,dc=com 是该树的根节点, 其下有一个管理域 cn=Manager,dc=abc,dc=com 和两个组织单元 ou=People,dc=abc,dc=com 及 ou=Group,dc=abc,dc=com
8、添加测试用户
[root@202 ~]# cat tom.ldif dn: uid=tom,ou=People,dc=abc,dc=com cn: dsj mail: [email protected] objectclass: inetOrgPerson objectclass: top sn: tom userpassword: Tom_6688 #添加 ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -f tom.ldif #查询 ldapsearch -x -b "dc=abc,dc=com" -H ldap://127.0.0.1 |grep "tom" #删除 ldapdelete -x -W -D 'cn=Manager,dc=abc,dc=com' "uid=tom,ou=People,dc=abc,dc=com"
至此,单台的LDAP服务已搭建完成;
因为我这里要做双主一从,上述步骤我在202 207 208三台主机上都执行了一遍;
主从、双主下面开始配置;
二、主从配置
1、先让202做主节点,在202节点配置
添加syncprov模块:
[root@202 ~]# vim syncprov_mod.ldif dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib64/openldap olcModuleLoad: syncprov.la #导入 ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif
同步的一些信息:
[root@202 ~]# vim syncprov.ldif dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpSessionLog: 100 #导入 ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
2、207做从节点,配置
207上的前期安装、配置等工作,已经在步骤“一”中完成了;
[root@207 ~]# vim rp.ldif dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://172.17.26.202:389/ #去同步202的数据 bindmethod=simple binddn="cn=Manager,dc=abc,dc=com" #此处是配置一个同步账号,此账号是202节点上的 credentials=xxxx #此处填写上面账号的明文密码 searchbase="dc=local,dc=cn" scope=sub schemachecking=on type=refreshAndPersist retry="30 5 300 3" interval=00:00:05:00
#导入
ldapadd -Y EXTERNAL -H ldapi:/// -f rp.ldif
3、主从验证
在202上执行上面添加用户、删除用户的操作,观察207上是不是也有同步的现象;
三、双主配置
此时202节点是主,207节点是从;
下面配置208和202作为双主,208上的前期安装、配置等工作,已经在步骤“一”中完成了;;
1、208节点先添加syncprov模块
[root@208 ~]# vim syncprov_mod.ldif dn: cn=module,cn=config objectClass: olcModuleList cn: module olcModulePath: /usr/lib64/openldap olcModuleLoad: syncprov.la #导入 ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif
同步的一些信息:
[root@208 ~]# vim syncprov.ldif dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config objectClass: olcOverlayConfig objectClass: olcSyncProvConfig olcOverlay: syncprov olcSpSessionLog: 100 #导入 ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
2、在202、208两个主节点上,执行下列配置
(1)202节点配置(注意注释项的内容)
[root@202 ~]# vim master202.ldif # create new dn: cn=config changetype: modify replace: olcServerID # specify uniq ID number on each server olcServerID: 0 #202的id设置为0 dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://172.17.26.208:389/ #202节点去同步208的数据 bindmethod=simple binddn="cn=Manager,dc=abc,dc=com" #同步用的账号 credentials=xxxxxx #明文密码 searchbase="dc=abc,dc=com" 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
导入:
ldapmodify -Y EXTERNAL -H ldapi:/// -f master202.ldif
(2)208节点配置(注意注释项的内容)
[root@208 ~]# vim master208.ldif # create new dn: cn=config changetype: modify replace: olcServerID # specify uniq ID number on each server olcServerID: 1 #202的id设置为1 dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://172.17.26.202:389/ #208节点去同步202的数据 bindmethod=simple binddn="cn=Manager,dc=abc,dc=com" #同步用的账号 credentials=xxxxxxx #明文密码 searchbase="dc=abc,dc=com" 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
导入:
ldapmodify -Y EXTERNAL -H ldapi:/// -f master208.ldif
至此,双主一从架构部署完成;
四、最后验证
先在202节点添加、删除一个用户,观察207 208节点的现象;
模拟故障,停止202节点的服务,手动修改207去同步208的数据,如下:
[root@207 ~]# vim rp.ldif dn: olcDatabase={2}hdb,cn=config changetype: modify add: olcSyncRepl olcSyncRepl: rid=001 provider=ldap://172.17.26.208:389/ #这里的地址改为208即可 bindmethod=simple binddn="cn=Manager,dc=abc,dc=com" credentials=xxxx searchbase="dc=local,dc=cn" scope=sub schemachecking=on type=refreshAndPersist retry="30 5 300 3" interval=00:00:05:00
#导入
ldapadd -Y EXTERNAL -H ldapi:/// -f rp.ldif
然后在208节点添加一个用户,观察207节点的现象;
然后再把202节点的服务启动,观察添加的用户是否已经存在了;
标签:dn,202,cn,dc,abc,主从,openLDAP,ldif,双主 From: https://www.cnblogs.com/weiyiming007/p/17172022.html