ldap作为一个比较关键的服务,单点肯定是有问题的,除了一般的主从,更好的选择是双主,也就是有两个ldap服务器,并且实时同步,然后前面通过负载均衡进行调用。其中一台挂了,负载均衡自动将其踢掉,并不影响整个服务的使用。这就是配置双主的目的。当然作为一个读多写少的服务,主从也是很不错的~


因为新式的配置文件的目录结构和以前的有点不一样,踩了不少坑才明白了其内在逻辑。正在有效的配置文件放在`/etc/openldap/slapd.d/`目录下,被分成多个,而且如果有不同的新的配置,此目录的配置文件也会新添加。所以管理此目录还是有一定难度的。因此openldap提供了一个巧妙的方式。我们依然配置熟悉的`slapd.conf`文件,然后通过命令吧`slapd.conf`转换为`slapd.d`的目录结构。这玩意儿研究了两天才明白。。。


话不多说,开始配置双主。yum安装的话,默认情况下`/etc/openldap/`目录下没有`slapd.conf`文件,不过可以从其他地方copy。

`cp /usr/share/openldap-servers/slapd.conf.obsolete /etc/openldap/slapd.conf`

然后修改此配置文件,以下只显示修改的地方

```

vim /etc/openldap/slapd.conf


modulepath /usr/lib/openldap #去掉前面的井号即可

modulepath /usr/lib64/openldap #同上

moduleload syncprov.ld #次模块就是用来实现主从和双主的~


index entryCSN,entryUUID eq

```

两台服务器上面的配置一样,后面的配置有点区别。

服务器a:

```

serverID 2  #双活的ID要不同哦

overlay syncprov

syncrepl rid=001   #此id两台要一致

provider=ldap://ip_address   #服务器b的ip地址

type=refreshAndPersist

searchbase="dc=xxx,dc=com"   #设置从根开始搜索

schemachecking=off

bindmethod=simple

binddn="cn=admin,dc=xxx,dc=com" #此用户要存在哟,此处用了管理用户

credentials=1234     #不知道是管理用户密码,还是同步的密码,所以就写成管理用户密码了。

retry=“60 +”

mirrormode on

```


服务器b:

```

serverID 1

syncrepl rid=001   #此id两台要一致

provider=ldap://ip_address   #服务器a的ip地址

type=refreshAndPersist

searchbase="dc=xxx,dc=com"   #设置从根开始搜索

schemachecking=off

bindmethod=simple

binddn="cn=admin,dc=xxx,dc=com" #此用户要存在哟,此处用了管理用户

credentials=1234     #不知道是管理用户密码,还是同步的密码,所以就写成管理用户密码了。

retry=“60 +”

mirrormode on

```


基本的配置以及设置完毕,接下来就是把slap.conf 生成sladp.d目录。

1、删除slapd.d目录里面的内容

`rm -rf /etc/openldap/slapd.d/*`

2、生成目录啦~

`slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d`

提示`config file testing succeeded`表示成功啦~

3、修改新生成文件的权限

```

chown -R ldap.ldap /etc/openldap

chown -R ldap.ldap /var/lib/ldap

```

4、重启slapd

`service slapd restart`