基于OpenLDAP_MirrorMode的OpenLDAP高可用
浏览量:72
1、主机规划

2、示意图

3、基础环境准备
#关闭selinux和防火墙 sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config && sestatus /bin/systemctl disable firewalld.service && /bin/systemctl stop firewalld.service #配置阿里源 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo yum clean all && yum list
4、安装依赖包和下载软件包
#安装依赖 sudo yum -y install libtool-ltdl libtool-ltdl-devel gcc openssl openssl-devel cyrus-sasl* libdb* sasl* sudo mkdir /data/ -p sudo chown -R operation:operation /data/ cd /data/ wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap-release/openldap-2.4.45.tgz wget http://download.oracle.com/berkeley-db/db-4.6.21.tar.gz
二、 安装Berkeley DB和openldap
编译安装openldap需要数据库的支持,openldap的数据库支持Berkeley DB,Oracle,Mysql,MariaDB,GDBM等数据库。默认openldap采用Berkeley DB,并且openldap对数据库有一定的要求,openldap 2.4的软件为例,需要Berkeley DB 4.4版本以上.
2.1 编译安装Berkeley DB
tar -xf db-4.6.21.tar.gz -C /data cd /data/db-4.6.21/build_unix/ && mkdir /data/BerkeleyDB ../dist/configure --prefix=/data/BerkeleyDB make && make install echo "/data/BerkeleyDB/lib/" >> /etc/ld.so.conf ldconfig -v ln -sv /data/BerkeleyDB/include /usr/include/BerkeleyDB
2.2 编译安装openldap
tar -xf openldap-2.4.45.tgz -C /data cd /data/openldap-2.4.45/ ./configure --prefix=/data/openldap --enable-syslog --enable-modules --enable-debug --with-tls CPPFLAGS=-I/data/BerkeleyDB/include/ LDFLAGS=-L/data/BerkeleyDB/lib/ --enable-ldap --enable-relay --enable-accesslog --enable-auditlog --enable-syncprov --with-cyrus-sasl --enable-spasswd make depend make && make install echo "/data/openldap/lib/" >> /etc/ld.so.conf ldconfig -v ln -sv /data/openldap/include/ /usr/include/ldap ln -s /data/openldap/bin/* /usr/local/bin/ ln -s /data/openldap/sbin/* /usr/local/sbin/
2.3 配置openldap
配置openldap的方法有两种
* 通过修改配置文件实现配置
* 通过配置数据库的形式完成配置(slapd.d下的数据库配置文件),属于动态配置不需要重启slapd进程,此配置文件在cn=config目录下的LDIF的配置文件 。此文件不建议手动修改,用ldap命令生成。
这里,我们将通过第一种通过修改配置文件实现的方式来演示。
2.3.1 创建用户(假如以ldap用户启动)
sudo useradd ldap
2.3.1 创建rootdn密码
sudo /usr/local/sbin/slappasswd
New password:
Re-enter new password:
{SSHA}COM7SL18KzRv+ZI4iYC7lVZdiYrie0PX2.3.3 创建相关目录及授权
mkdir /data/openldap/{data,log,var} -p
cp /data/openldap/etc/openldap/DB_CONFIG.example /data/openldap/data/DB_CONFIG
chown -R ldap:ldap /data/openldap/
chmod 700 -R /data/openldap/data2.3.4 修改配置文件
$ vi /data/openldap/etc/openldap/slapd.conf
include /data/openldap/etc/openldap/schema/core.schema
include /data/openldap/etc/openldap/schema/collective.schema
include /data/openldap/etc/openldap/schema/corba.schema
include /data/openldap/etc/openldap/schema/cosine.schema
include /data/openldap/etc/openldap/schema/duaconf.schema
include /data/openldap/etc/openldap/schema/dyngroup.schema
include /data/openldap/etc/openldap/schema/inetorgperson.schema
include /data/openldap/etc/openldap/schema/java.schema
include /data/openldap/etc/openldap/schema/misc.schema
include /data/openldap/etc/openldap/schema/nis.schema
include /data/openldap/etc/openldap/schema/openldap.schema
include /data/openldap/etc/openldap/schema/ppolicy.schema
pidfile /data/openldap/var/run/slapd.pid
argsfile /data/openldap/var/run/slapd.args
loglevel 256
logfile /data/openldap/log/slapd.log
moduleload syncprov.la
disallow bind_anon
database mdb
maxsize 1073741824
directory /data/openldap/data
suffix "dc=iopst,dc=com"
rootdn "cn=www,dc=iopst,dc=com"
access to dn.subtree="ou=huyu,ou=group,dc=iopst,dc=com"
by group.exact="cn=admin,ou=huyu,ou=group,dc=iopst,dc=com" write
access to * by * read
rootpw {SSHA}04W6/rxm3B4Re/uI+ecU12GWCm5+aUmOZ
index objectclass eq
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
serverID 1
syncrepl rid=1
provider=ldap://10.148.170.129:389
bindmethod=simple
binddn="cn=www,dc=iopst,dc=com"
credentials=123456
searchbase="dc=iopst,dc=com"
schemachecking=off
type=refreshAndPersist
retry="60 +"
syncrepl rid=2
provider=ldap://10.148.170.130:389
bindmethod=simple
binddn="cn=www,dc=iopst,dc=com"
credentials=123456
searchbase="dc=iopst,dc=com"
schemachecking=off
type=refreshAndPersist
retry="60 +"
mirrormode on
mirrormode on注意: 两个服务器的配置文件有两个地方不一致
1)serverID不一致
2)provider=ldap://:port 不一致
2.3.5 开启日志功能
通过修改配置文件开启日志功能 sudo vim /etc/rsyslog.d/slapd.conf local4.* /data/openldap/log/openldap.log sudo systemctl restart rsyslog
2.3.6 启动ldap
sudo /data/openldap/libexec/slapd -u ldap
三、PHPLDAPadmin安装
3.1 安装工具
yum -y install httpd php php-ldap php-gd php-mbstring php-pear php-bcmath php-xml yum -y install epel-release yum --enablerepo=epel -y install phpldapadmin
3.2 修改配置文件
vim /etc/phpldapadmin/config.php
修改如下:
$servers->setValue('login','attr','dn');
//$servers->setValue('login','attr','uid');
vi /etc/httpd/conf.d/phpldapadmin.conf
#Apache2.4
Require local
Require all granted
#Apache 2.2
Order Deny,Allow
Deny from all
Allow from all3.3 启动httpd
systemctl start httpd
3.4 访问http://10.148.170.129 && http://10.148.170.130
四、数据同步演示


现在在10.148.170.129创建一个OU名为t1

可以看到已经同步到10.148.170.130,现在我们在10.148.170.130上创建一个OU名为t2

四、问题处理
4. 1、 This base cannot be created with PLA.(如果导入用户恢复无需操作)
1)添加一个base.ldif文件,里面的dc和配置文件里的保持一致即可 dn: dc=iopst,dc=cn o: ldap objectclass: dcObject objectclass: organization 2)然后执行命令导入数据库 ldapadd -f base.ldif -x -D cn=www,dc=iopst,dc=cn -W 然后会提示输入密码,添加成功会提示增加了一个新的节点 Enter LDAP Password: adding new entry "dc=iopst,dc=cn" 3)在 phpldapadmin 控制面板刷新下,发现根节点已经变成了可以编辑的状态了。
五、数据导出与导入
#导出 /data/openldap/bin/ldapsearch -LLL -x -w admin@123 -D "cn=www,dc=iopst,dc=com" -b "dc=iopst,dc=com" > backup_data2.ldif #导入 /data/openldap/bin/ldapadd -x -D "cn=www,dc=iopst,dc=cn" -w "admin@123" -f backup_data.ldif

神回复
发表评论:
◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。