搭建ldap双主模式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搭建ldap双主模式相关的知识,希望对你有一定的参考价值。
一.安装OpenLDAP yum install openldap openldap-clients openldap-servers
安装完直接启动
```
systemctl start slapd
```
设置管理员密码 ```
slappasswd -h SSHA
```
然后会让你输入一个明文密码,返回给你一个加密的密码,记住这个返回的密码
使用ldapsearch命令查询管理员的dn:
ldapsearch -LLL -Y EXTERNAL -H ldapi:/// -b cn=config "olcRootDN=cn=Manager,dc=my-domain,dc=com" dn olcRootDN olcRootPW
这里返回的dn是olcDatabase=2hdb,cn=config,密码等信息也都一并返回。这里有用的是dn和密码的加密方式,比如这里是SSHA,dn是后面修改的Entry DN,而知道密码的加密方式就可以使用该加密方式生成新密码。
使用ldapmodify修改条目
vim chrootpw.ldif
#这是第1步获取的管理员dn
dn: olcDatabase=2hdb,cn=config
changetype: modify
replace: olcSuffix
#你想要改成的域名的后缀
olcSuffix: dc=xinniu,dc=com
#olcSuffix这几行一定要加,否则修改之后会出错,后面重启openldap都会失败
dn: olcDatabase=2hdb,cn=config
changetype: modify
replace: olcRootDN
#你想要改成的域名
olcRootDN: cn=admin,dc=xinniu,dc=com
dn: olcDatabase=2hdb,cn=config
changetype: modify
replace: olcRootPW
#这里就是刚才保存下来的那个加密后的密码
olcRootPW: SSHAuYnICxla0NrUC5b/ha4i1JeOTCoUchV+
如图:
使用下面的命令来修改管理员条目:
ldapmodify -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
如果出现:
modifying entry "olcDatabase=2bdb,cn=config"
导入基本数据结构
我们需要向 LDAP 中导入一些基本的 Schema。这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/collective.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/corba.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/core.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/duaconf.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/dyngroup.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/java.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/misc.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/openldap.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/pmi.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -D "cn=config" -f /etc/openldap/schema/ppolicy.ldif
开启ldap日志
mkdir -p /var/log/slapd
chown ldap:ldap /var/log/slapd/
touch /var/log/slapd/slapd.log
chown ldap . /var/log/slapd/slapd.log
echo "local4.* /var/log/slapd/slapd.log" >> /etc/rsyslog.conf
到此就设定好了管理员的密码。可以用客户端去管理openldap了
打算使用phpldapadmin来管理openldap,这个工具使用的人较多,网上文档多,出现问题容易解决。
二.安装phpldapadmin(ldap管理工具)
首先安装Apache和PHP:
yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml
然后安装phpldapadmin:
yum -y install phpldapadmin
httpd与phpldapadmin进行集成:
修改配置文件:
[root@localhost ~]# vim /etc/phpldapadmin/config.php
#397行取消注释,398行添加注释
$servers->setValue(‘login‘,‘attr‘,‘dn‘);
// $servers->setValue(‘login‘,‘attr‘,‘uid‘);
这里需要修改,如果不修改,phpldapadmin会去用uid去搜索条目,不会用dn去搜索,导致报密码错误。
[root@localhost ~]# phpldapadmin的ip过滤规则默认是拒绝所有ip访问,先去修改一下规则,我们才可以访问
vim /etc/httpd/conf.d/phpldapadmin.conf
##这是Apache2.2和以前的修改方法
// 修改配置
把下面的Deny from all 改为Allow from all
##这是apache2.4和以后的修改方法
#允许172.16.10.16访问
Require ip 172.16.10.16
#允许172.16这个网段访问
Require ip 172.16.0.0/16
#允许所有ip访问
Require all granted
我们可以根据自己需要修改来
修改完之后启动:
systemctl restart httpd
界面:
登陆
用户名,默认是 cn=Manager,dc=my-domain,dc=com(这个也可以改的,仿照修改密码的步骤)
密码就输入刚开始设置的密码
登陆进去后,我的管理界面报这个信息:
This base cannot be created with PLA
显示结果如下:
经过查询,原因是根结点需要初始化后才能使用,最终处理如下:
1、创建一个initroot.ldif文件,为创建初始化根节点做准备工作,如下所示:
dn: dc=xinniu,dc=com
#域名的后缀
o: ldap
objectclass: dcObject
objectclass: organization
2、执行ldapadd -f initroot.ldif -x -D cn=admin,dc=xinniu,dc=com -W 输入之前配置OpenLDAP的密码后,即可完成创建LDAP根节点,如下图所示:
完成以上操作后,再回到phpldapadmin页面,可以看到,已经正常出现了根节点,并可以创建相关OU、Group、Account等对象,如下图所示:
到这里就搭建好了一台openldap+phpldapadmin的服务器了,在另外一台也按照此步骤操作搭建好另一台。
三.配置双主复制功能,在主1和主2上执行下面的步骤
ldap双主复制功能的实现依赖于syncprov模块,这个模块位于/usr/lib64/openldap目录下
1.mod_syncprov.ldif
[root@server1] vim mod_syncprov.ldif
# create new
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
导入配置
[root@server1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif
2.syncprov.ldif
[root@server1] vim syncprov.ldif
# create new
dn: olcOverlay=syncprov,olcDatabase=2hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100
导入配置
[root@server1 ~]# ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif
在主1和主2上执行下面的步骤,只需要替换olcServerID和provider的值
[root@server1] ~/ldif$ vim master01.ldif
# create new
dn: cn=config
changetype: modify
replace: olcServerID
# specify uniq ID number on each server
olcServerID: 1
# 唯一值,主2上替换为2
dn: olcDatabase=2hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
provider=ldap://basic-server-2:389/
##此处为主2服务器地址,主2此处相应地上替换为主1服务器地址
bindmethod=simple
binddn="cn=admin,dc=xinniu,dc=com"
credentials=bigdata123!
#管理员的明文密码
searchbase="dc=xinniu,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=2hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
导入配置
root@SERVER ~]# ldapmodify -Y EXTERNAL -H ldapi:/// -f master01.ldif
四.验证
这部完成之后,我们在master1的管理界面上创建一个条目,再打开master2的管理界面,如果可以看到我们刚才创建的条目,那么就说明双主已经配置成功了。
以上是关于搭建ldap双主模式的主要内容,如果未能解决你的问题,请参考以下文章
RocketMQ-双主双从集群+DashBorad搭建(云服务器)