排除LDAP主机服务器故障的两种方法
分类:pc28.am

轻量级目录访问协议(LDAP) 允许你拥有一个主服务器 从服务器设置,拥有一旦发生故障时的容错功能或者分散工作量的功能。这拥有明显的优势。但是,它也隐藏了主服务器的一些问题。

大数据平台,LDAP和Kerberos的统一账户管理和认证是必不可少的。下面讲解下使用OpenLDAP来搭建LDAP服务器的过程。

OpenLDAP是一个开放源代码的软件,可以免费获取使用,其主页地址是: 6上安装OpenLDAP还需要libtool-ltdl-2.2.6-15.5.e16.i686.rpm文件支持。

如果你的主服务器关机,从服务器工作正常,进行ldapsearch搜索和其它查询是很好的。但是,如果你设法修改这个数据库(利用使用ldapadd命令),你将得到这样的错误的信息:ldap_add: Referral (10)

  1. 安装openldap软件包

安装:

referrals:

yum install openldap openldap-* -y

# rpm -ivh libtool-ltdl-2.2.6-15.5.e16.i686.rpm

ldaps://masterldap.example.com/uid=test,ou=People,

  1. 初始化配置文件,不要手动去创建slapd.conf,可能会由于格式问题导致问题

warning:libtool-ltdl-2.2.6-15.5.e16.i686.rpm:header V3 DSA signature:

dc=example,dc=com

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

NOKEY,key ID 37017186

从服务器不能修改这个数据库。因此,它设法重新指向这个主服务器,并且得到失败的结果。如果你现在使用ldapsearch搜索命令查询你新输入的内容,你会找不到那个内容。

  1. 初始化数据库配置文件

Preparing...                ########################[100%]

你可以通过如下方法证实这个诊断:使用ldapsearch -H ldaps://masterldap.example.com强制绑定这个主服务器。

cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG

     1:libtool-ltdl          ########################[100%]

下一步是找到引起故障的原因。把/etc/ldap/slapd.conf配置文件中的记录水平设置为1,然后重新启动slapd并且查看记录。

  1. 修改权限

#rpm  -ivh openldap-servers-2.4.23-26.e16.i686.rpm

两个常见的问题是:

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

warning:  openldap-servers-2.4.23-26.e16.i686.rpm:Header V3 RSA/SHA256

一个老的slapd线程没有恰当地关闭。用ps进行检查并且如果有必要的话关闭这个线程。

  1. slapd.conf配置文件如下

Signature, key ID fd431d51:NOKEY

一个alock问题。这个问题在记录中看起来是这样的:

# egrep -v "#|^$" /etc/openldap/slapd.conf
include        /etc/openldap/schema/corba.schema
include        /etc/openldap/schema/core.schema
include        /etc/openldap/schema/cosine.schema
include        /etc/openldap/schema/duaconf.schema
include        /etc/openldap/schema/dyngroup.schema
include        /etc/openldap/schema/inetorgperson.schema
include        /etc/openldap/schema/java.schema
include        /etc/openldap/schema/misc.schema
include        /etc/openldap/schema/nis.schema
include        /etc/openldap/schema/openldap.schema
include        /etc/openldap/schema/ppolicy.schema
include        /etc/openldap/schema/collective.schema
include        /etc/openldap/schema/kerberos.schema  <<<<<<<由于后面需要配合kerberos认证,这里增加kerberos.schema,参考第6步骤
allow bind_v2
pidfile        /var/run/openldap/slapd.pid
argsfile        /var/run/openldap/slapd.args
loglevel        4095
TLSCACertificatePath /etc/openldap/certs
TLSCertificateFile ""OpenLDAP Server""
TLSCertificateKeyFile /etc/openldap/certs/password
access to *
    by self write
    by users read
    by anonymous read
database config
access to *
        by dn.exact="gidNumber=0 uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by * none
database monitor
access to *
        by dn.exact="gidNumber=0 uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.exact="cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com" read
        by * none
database        bdb
suffix          "dc=testserver,dc=com"
checkpoint      1024 15
cachesize      10000
rootdn          "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"
rootpw          {SSHA}LPbWMTEOprpTvqjmxy/mTW i0IPrugJc    <<<<<<<<<<<<<<<参考第7步骤,生成加密密码
directory      /var/lib/ldap
index objectClass                      eq,pres
index ou,cn,mail,surname,givenname      eq,pres,sub
index uidNumber,gidNumber,loginShell    eq,pres
index uid,memberUid                    eq,pres,sub
index nisMapName,nisMapEntry            eq,pres,sub

Preparing...                          ########################[100%]

slapd[27069]: bdb_db_open: alock package is unstable

  1. 安装kerberos软件

     1:openldap-servers          ########################[100%]

slapd[27069]: backend_startup_one: bi_db_open failed! (-1)

yum install krb5* -y

#

要解决这个问题,你可以删除/var/lib/ldap/alock文件(或者检查在你的本地数据目录中的slapd.conf配置文件)。运行db_recover命令修复这个数据库,或者重新启动slapd,它应该能够自己恢复。你需要给它一点时间或者重新启动它。

查找kerberos.schema文件,并拷贝到/etc/openldap/schema/kerberos.schema

安装成功后,有关OpenLDAP服务器软件的几个重要文件分布如下:

要记住在完成上述操作之后把记录水平恢复到正常状态,否则,服务器的运行速度会很慢。此外,考虑使用监视软件捕捉这些隐藏的问题。

# cd /usr/share/doc/krb5-server-ldap-1.10.3/
# ls
60kerberos.ldif  kerberos.ldif  kerberos.schema

/etc/openldap/DB_CONFIG.example:数据库的例子配置

) 允许你拥有一个主服务器 从服务器设置,拥有一旦发生故障时的容错功能或者分散工作量的功能。这拥有明显的...

  1. 生成LDAP的root管理密码

/etc/openldap/schema:该目录预定义了许多模式

1
2 slappasswd -s 123456
{SSHA}L4uH7lVxwdS0/L/vspdseXORcneIWfeb

/etc/openldap/slapd.conf:OpenLDAP的主配置文件

  1. 检查配置文件是否有格式错误

/etc/rc.d/init.d/ldap:OpenLDAP的启动脚本

# slaptest -f /etc/openldap/slapd.conf
config file testing succeeded

/usr/sbin/slapd:OpenLDAP服务器进程文件

  1. 准备生成LDAP数据库结构

/usr/share/doc/openldap-servers-2.4.23:OpenLDAP的说明文件

先删除slapd.d的原有结构

OpenLDAP服务器运行时,还需要Berkeley DB数据库的支持,可以用以下命令查看一下系统中是否已经安装了该数据库的软件包:

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

#rpm -qa | grep db4

生成新的数据结构

db4-devel-4.3.29-9.fc6

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

db4-4.3.29-9.fc6

修改权限,这个很重要,不然后面会报错

db4-utils-4.3.29-9.fc6

chown -R ldap:ldap /etc/openldap/slapd.d

#

每次修改都需要重启ldap

如果列出上述三个rpm包,表明Berkeley DB数据库已经安装

service slapd restart

初始化配置

10. 测试LDAP的连接,这里足足让我纠结两周,无数次的安装,有的时候可以正常登陆,有的时候会报错,明确说认证错误(密码错误)。这个一直让我以为是密码部分的格式设置有问题。各种尝试都无法正常解决掉。最后突然发现,是rootdn的问题,而不是rootpw的问题。

#/etc/rc.d/init.d/slapd start

# ldapsearch -x -D "cn=admin,dc=testserver,dc=com" -h 10.24.103.17 -W -b 'ou=People,dc=testserver,dc=com'
Enter LDAP Password:
ldap_bind: Invalid credentials (49)

正在检查slapd的配置文件:bdb_db_open:Warning - NO DB_CONFIG file found in 

就是说,下面的命令中,要完整的复制sldap.conf中的“rootdn "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com"”条目信息,不能多,不能少。

directory  /var/lib/ldap: (2)

这样才能正常查询结果

Expect poor performance for suffix dc=my-domain,dc=com.

1 ldapsearch -x -D "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com" -h 10.24.103.17 -W

config file testing succeeded

11. LDAP创建成功之后,需要创建数据。由于我是迁移数据过来,只是将生产的ldap数据导出导入。

                                                                            [确定]

ldap数据备份的方式有两种:一种是通过ldapsearch ,一种是通过slapcat命令。很多人都是建议通过slapcat来完成,但是我测试一下,没有成功,就先使用ldapsearch导出,ldapadd导入的

启动 slapd:                                                             [确定]

/usr/sbin/slapcat > /tmp/liang/ldapdbak.ldif
/usr/sbin/slapadd -l  /tmp/liang/ldapdbak.ldif

#ps -eaf | grep ldap

  1. 导入数据命令

ldap     5316   1  0  17:30   ?       00:00:00     /usr/sbin/slapd -h ldap:///   -u ldap

ldapadd -x -D "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com" -h 10.24.103.17 -W -f ldapexport.ldif

#

  1. 查询数据,确认已经导入成功即可

可以看到,OpenLDAP服务器只有一个ldap用户运行的进程,另外还有一个警告,可以把/etc/openldap/DB_CONFIG.example文件复制到/var/lib/ldap目录。并改名为DB_CONGIG,即可消除该警告。

ldapsearch -LLL -x -D "cn=admin,ou=ldap,ou=admin,dc=testserver,dc=com" -W -b "dc=testserver,dc=com" '(uid=*)'

OpenLDAP默认监听TCP389号端口,可以输入以下命令查看该端口是否已经处于监听状态:

15. 在客户端安装ldap软件,我比较偷懒,全都安装了,实际只安装openldap-clients就可以了

#netstat -anp | grep :389

yum install openldap openldap-* -y

tcp       0         0  0.0.0.0:389               0.0.0.0"*          LISTEN           5316/slapd

  1. 设置LDAP客户端,客户端设置有几种方式

tcp       0         0  : : : 389                        : : :*            LISTEN           5316/slapd

---1. 通过图形化命令完成LDAP client设置

#

LANG=C authconfig-tui

由此可见,TCP389端口已经处于监听状态。为了使远程客户可以使用OpenLDAP服务器,需要主机防火墙开放上述端口:

图片 1

#iptables -I INPUT -p tcp --dport 389 -j ACCEPT

图片 2

或者可以清空防火墙的所有规则:

---2. 通过authconfig命令,配置客户端。由于是大数据平台运维,所以我是通过命令行实现的,这样比较方便批量处理。

#iptables -F

authconfig --enablemkhomedir
--disableldaptls
--enablemd5
--enableldap
--enableldapauth
--ldapserver=ldap://10.24.103.17
--ldapbasedn="dc=testserver,dc=com"
--enableshadow
--update

上述完成后,OpenLDAP服务器已经能正常运行了。

  1. 然后在client上,root用户su - username,可以发现,已经配置成功了。

看了很多人的blog,很简单的步骤,“yum安装-->sldap.conf的配置-->启动-->OK”,但是对于我来说,研究了2周多啊(工作空闲时间),真心很崩溃。即使一个小问题,自己也无法自行发现(理解问题)。所以,很多事情看似很简单,甚至于不屑于。做做试试,才能深深体会,理想和现实的差距。

-----Update on 2018-2-25---------

最近发现连接同一个LDAP的不同client,使用同一个用户登录,一个client就可以正常登陆,另一个显示密码错误。百思不得其解。最后通过LDAP图形端,在两个client server都开启,发现选项有变化。修改之后问题解决。

LANG=C authconfig-tui

本文永久更新链接地址

图片 3

本文由pc28.am发布于pc28.am,转载请注明出处:排除LDAP主机服务器故障的两种方法

上一篇:十大服务器维护错误,服务器管理易犯十大错误 下一篇:没有了
猜你喜欢
热门排行
精彩图文