为了实现ldap服务器的高可用,接下来就配置ldap服务器的复制。
本文参考:
1) 按照文档操作总是不能成功,在主ldap服务器端修改了数据后不能自动同步到从ldap服务器。考虑可能是slapd.conf未使用bdb数据库。修改slapd.conf文件
database bdb
service ldap restart,提示如下报错:unrecognized database type(bdb)
2) 安装openssl0.98e
下载
安装
tar zxvf openssl-0.9.8e.tar.gz
cd openssl-0.9.8e
./config shared zlib
make
make test
make install
mv /usr/bin/openssl /usr/bin/openssl.OFF
mv /usr/include/openssl /usr/include/openssl.OFF
ln -s /usr/local/ssl/bin/openssl /usr/bin/openssl
ln -s /usr/local/ssl/include/openssl /usr/include/openssl
配置库文件搜索路径
echo "/usr/local/ssl/lib" >> /etc/ld.so.conf
ldconfig -v
查看openssl的版本号,以验正是否安装正确
openssl version -a
使用putty访问linux机器的时候,提示“Incoming packet was garbled on decryption”,重新安装openssl-0.9.8g.tar.gz即可
3)二、安装cyrus-sasl-2.1.22
下载cyrus-sasl-2.1.22到/usr/local/src
tar zxvf cyrus-sasl-2.1.22.tar.gz
cd cyrus-sasl-2.1.22
./configure --prefix=/usr/local/sasl2 --enable-login --with-openssl=/usr/local/ssl
make
make install
配置库文件搜索路径
echo "/usr/local/sasl2/lib" >> /etc/ld.so.conf
echo "/usr/local/sasl2/lib/sasl2" >> /etc/ld.so.conf
ldconfig -v
把Redhat9.0原有的sasl库文件改名或删除,并将相关符号链接指向新安装SASL的库文件
cd /usr/lib
mv libsasl2.a libsasl2.a.OFF
mv libsasl2.la libsasl2.la.OFF
mv libsasl2.so libsasl2.so.OFF
mv libsasl2.so.2.0.10 libsasl2.so.2.0.10.OFF
mv libsasl2.so.2 libsasl2.so.2.OFF
ln -s /usr/local/sasl2/lib/* /usr/lib
ln -s /usr/local/sasl2/lib/sasl2 /usr/lib/sasl2
ln -s /usr/local/sasl2/lib/libsasl2.so.2.0.22 /usr/lib/libsasl2.so.2
ln -s /usr/local/sasl2/lib/libsasl2.so /usr/lib/libsasl2.so
后续编译openldap的时候如果提示:Cyrus SASL library located but is incompatible,就需要把cyrus-sasl重装一遍
后续编译openldap的时候提示:configure:error:could not locate cyrus SASL
cp /usr/local/sasl2/include/sasl /usr/include/sasl/
cp /usr/local/sasl2/include/sasl /usr/include/
4)安装BerkeleyDB
开始下载的是db-5.1.19.tar.gz,在编译的时候提示无法识别的BerkeleyDB version。重新下载BerkeleyDB至/usr/local/src
tar zxvf db-4.5.20.tar.gz
cd db-4.5.20/build_unix
../dist/configure --prefix=/usr/local/BerkeleyDB
make
make install
5)安装openldap-2.3.32
下载相关软件至/usr/local/src
tar zxvf openldap-stable-20070110.tgz
cd openldap-2.3.32
env CPPFLAGS="-I/usr/local/BerkeleyDB/include -I/usr/local/sasl2/include" LDFLAGS="-L/usr/local/BerkeleyDB/lib -L/usr/local/sasl2/lib -L/usr/local/sasl2/lib/sasl2" ./configure --enable-bdb --prefix=/usr/local/openldap --sysconfdir=/etc/openldap --enable-passwd --enable-wrappers --disable-ipv6 --enable-spasswd --enable-crypt --enable-modules --enable-accesslog=yes
提示报错:configure: error: Berkeley DB version mismatch
解决方法:
cp /usr/local/BerkeleyDB.4.2/include/* /usr/include/
cp /usr/ local/BerkeleyDB.4.2/lib/* /usr/lib
然后在进入openldap目录进行
./configure --enable-bdb --libdir=/usr/local/BerkeleyDB/lib --includedir=/usr/local/BerkeleyDB/include --prefix=/usr/local/openldap --sysconfdir=/etc/openldap --enable-passwd --enable-wrappers --disable-ipv6 --enable-spasswd --enable-crypt --enable-modules --enable-accesslog=yes
make depend
make
make test
make install
cp /usr/local/openldap/var/openldap-data/DB_CONFIG.example /usr/local/openldap/var/openldap-data/DB_CONFIG
安装完毕后配置文件分布如下:
/etc/openldap/openldap: ldap.conf.slapd.conf,schema等文件
/usr/local/openldap:
/libexec:slapd,slurpd ldap主程序和复制程序
/sbin:slappasswd: 修改管理员密码
/bin:ldapsearch,ldapmodify,ldapadd,ldapdelete:元素操作程序
/var/openldap-data/:数据存放位置
/var/openldap-slurp/replica:同步数据存放位置
通过ldapadd批量添加元素的时候提示如下报错:
ldap_add: Invalid syntax (21)
additional info: objectclass: value #1 invalid per syntax
修改slapd.conf
inclue schema/core.schema 已有
schema/cosine.schema 新增
schema/inetorgperson.schema 新增
schema/nis.schema 新增
要清空数据,直接手工删除openldap-data下所有文件,重新拷贝DB_CONFIG
依照上面的步骤配置从ldap服务器
6)在主ldap服务器上启动slapd和slurpd -d 256,有如下报错:
Error:Malformed "replica" line in slapd config file
warning:failed to add replica ignoring replica
检查原因是slapd.conf中下面的语句前要有空格,很奇怪
replogfile /var/lib/ldap/replog.log(这句话没有太多意义,同步数据都在/var/openldap-slurp/replica)
replica host=*.*.*.*:389
(空格) binddn="cn=root,dc=syroidmanor.com,dc=com"
(空格) bindmethod=simple
(空格) credentials=root的明文密码
在从ldap服务器上启动slapd,修改slapd.conf文件
updatedn "cn=root,dc=syroidmanor.com,dc=com"
updateref
这样就可以正常复制了
在client的/etc/ldap.conf文件中Host master slave配置两台ldap服务器,就可以实现高可用
其实也可以配置双向复制
阅读(1565) | 评论(0) | 转发(0) |