我正在尝试在两个 openldap 服务器之间设置主主复制。为此,第一步让我配置这两个文件:
/etc/hosts
,需要包含服务器(本身和第二台服务器)的 baseDN 的 DNS:
192.168.150.1 my.server1.org
192.168.150.2 my.server2.org
/etc/default/slapd
,需要包含服务器自己的FQDN,以便将未来的serverID与URI匹配:
SLAPD_SERVICES="ldap:/// ldapi:/// ldap://my.server1.org"
配置 SLAPD_SERVICES 变量并重新启动 slapd 服务后,出现以下错误:daemon: listen(ldap://my.server1.org, 5) failed errno=98 (address already un use)
。注意:服务处于活动状态(未处于失败状态)
所有 LDAP 命令(例如“ldapsearch -x”)都返回相同的错误:ldap_sasl_bind(SIMPLE): Can't contact LDAP server (-1)
我尝试通过列出服务器上正在运行的所有使用该地址的进程来查找原因my.server1.org
:
lsof -i |grep my.server1.org
nmdb 377 root 25u IPv4 17535 0t0 UDP my.server1.org:netbios-ns
nmdb 377 root 27u IPv4 17537 0t0 UDP my.server1.org:netbios-dgm
注意:杀死 netbios 的 PID 并不能解决问题
如您所见,没有第二个 slapd/openldap 服务正在运行。
我自己或在互联网上都找不到解决方案,因此我在这里发布了我的问题。
编辑1:根据@naxto asenjo 的请求,以下是该命令的结果ss --listening --processes --numeric |egrep "389|636"
:
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
u_str LISTEN 0 128 /run/containerd/containerd.sock.ttrpc 14758 users:(("containerd",pid=389, fd=6)) *O
u_str LISTEN 0 128 /run/containerd/containerd.sock.ttrpc 14758 users:(("containerd",pid=389, fd=7)) *O
编辑 2:我尝试将 SLAPD_SERVICES 和 /etc/hosts 中的值更改为我从未使用过的新 FQDN(ldap 数据库仍为 my.server1.org)。重新启动 slapd 后,我收到相同的错误,“地址已被使用”(对于新的 FQDN)。/etc/hosts 和 SLAPD_SERVICES 似乎遇到冲突?如果我不编辑 /etc/hosts 文件,我会收到错误“名称解析暂时失败”。
答案1
离开该项目一段时间后我找到了解决方案。
在我的 SLAPD_SERVICES 变量中,使用了两个 FQDN 地址:ldap:///
并且ldap://my.server1.org/
都使用了:389
端口。
SLAPD_SERVICES="ldap:/// ldapi:/// ldap://my.server1.org"
如果您想解决冲突,您可以删除其中一个地址或更改其中一个的端口。
SLAPD_SERVICES="ldap://:3389/ ldapi:/// ldap://my.server1.org"
or
SLAPD_SERVICES="ldapi:/// ldap://my.server1.org"