Centos 7 下安装LDAP 双主同步
Centos 7 下安装LDAP 双主同步
标签(空格分隔): LDAP
安装说明:
从OpenLDAP2.4.23版本开始所有配置数据都保存在slapd.d目录下的cn=config文件夹中,不再使用slapd.conf作为配置文件
有两种配置方式,一种是通过修改旧版配置文件slapd.conf,再用slaptest -f /etc/openldap/slapd.conf -F /etc/openldap/slapd.d/导入到数据库中,这种方式非常麻烦,不建议使用。
一种是通过编辑ldif文件,再用ldapadd命令导入到数据库中,这种方式是动态配置,不需要重新启动服务端slapd进程。
本文采用第二种方式,这种方式网上文档比较少,不好弄,本人花了10几天才算搞了个半懂,在这记录下来,希望能给有需要的人一些帮助
如果非要使用第一种方法,centos7系统yum安装后没有slapd.conf.obsolete文件,可以选择从centos6上复制过来
官方文档: https://www.openldap.org/doc/admin24/slapdconf2.html
安装环境
centos 7.5
ldap主1服务器:VECS05855 10.111.30.24
ldap主2服务器:VECS05856 10.111.30.25
OpenLDAP2.4.44
root账号下执行所有命令
一,安装步骤(两台机器均执行)
1,安装ldap
yum install -y openldap openldap-servers openldap-clients compat-openldap
备注(仅仅说明,不需要执行):
#可以通过rpm -ql <package name>,来查看每个安装包都有哪些文件
openldap: #OpenLDAP配置文件、库和文档
openldap-servers: #服务器进程及相关命令、迁移脚本和相关文件
openldap-clients: #客户端进程及相关命令,用来访问和修改 OpenLDAP 目录
compat-openldap: #与主从配置相关
安装过程中会自动创建ldap用户和ldap组(确认安装完毕)
root@VECS05855:~# grep ldap /etc/passwd
ldap:x:55:55:OpenLDAP server:/var/lib/ldap:/sbin/nologin
root@VECS05855:~# grep ldap /etc/group
ldap:x:55:
root@VECS05855:~#
2、 复制数据库模板并更改权限
cp /usr/share/openldap-servers/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
chown ldap. /var/lib/ldap/DB_CONFIG
3、启动ldap,并设置为开机启动。 ldap服务端进程名称为slapd
systemctl enable slapd && systemctl start slapd && systemctl status slapd
验证已经启动
root@VECS05855:~# netstat -tunlp |grep slapd
tcp 0 0 0.0.0.0:389 0.0.0.0:* LISTEN 19473/slapd
tcp6 0 0 :::389 :::* LISTEN 19473/slapd
4、使用 slappasswd 命令生成密码
这一步生成管理员密码,注意两台机器的上明文密码一样,密文密码不一样。
root@VECS05855:~# slappasswd
New password:
Re-enter new password:
{SSHA}csl6iL5aVUWP1+UUnN/FhTkUKilET2+J
编写 LDIF(一种LDAP 专用的数据交换格式)文件,并通过ldapadd命令将管理员密码导入到 LDAP配置文件中。
root@VECS05855:~# vim chrootpw.ldif
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}csl6iL5aVUWP1+UUnN/FhTkUKilET2+J
导入
root@VECS05855:~# ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={0}config,cn=config"
5、导入基本数据结构
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/ppolicy.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif
ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/dyngroup.ldif
6、配置 LDAP 的根域(以 dc=hellobike,dc=com 为例)及其管理域:
root@VECS05855:~# vim chdomain.ldif
dn: olcDatabase={1}monitor,cn=config
changetype: modify
replace: olcAccess
olcAccess: {0}to *
by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
by dn.base="cn=admin,dc=hellobike,dc=com" read
by * none
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=hellobike,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=admin,dc=hellobike,dc=com
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}csl6iL5aVUWP1+UUnN/FhTkUKilET2+J
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange
by dn="cn=admin,dc=hellobike,dc=com" write
by anonymous auth
by self write
by * none
olcAccess: {1}to dn.base=""
by * read
olcAccess: {2}to *
by dn="cn=admin,dc=hellobike,dc=com" write
by * read
导入
root@VECS05855:~# ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}monitor,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
modifying entry "olcDatabase={2}hdb,cn=config"
7、在上述基础上,我们来创建一个叫做 hellobike company 的组织
root@VECS05855:~# vim basedomain.ldif
dn: dc=hellobike,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: hellobike Company
dc: hellobike
dn: cn=admin,dc=hellobike,dc=com
objectClass: organizationalRole
cn: admin
dn: ou=People,dc=hellobike,dc=com
objectClass: organizationalUnit
ou: People
dn: ou=Group,dc=hellobike,dc=com
objectClass: organizationalRole
cn: Group
导入
[root@test1] ~$ ldapadd -x -D cn=admin,dc=hellobike,dc=com -W -f basedomain.ldif
Enter LDAP Password: #输入上面设置的管理员密码(明文)
adding new entry "dc=hellobike,dc=com"
adding new entry "cn=admin,dc=hellobike,dc=com"
adding new entry "ou=People,dc=hellobike,dc=com"
adding new entry "ou=Group,dc=hellobike,dc=com"
通过以上的所有步骤,我们就设置好了一个 LDAP 目录树:其中基准 dc=hellobike,dc=com 是该树的根节点,其下有一个管理域 cn=admin,dc=hellobike,dc=com 和两个组织单元 ou=People,dc=hellobike,dc=com 及 ou=Group,dc=hellobike,dc=com。
二、配置双主复制功能,在主1和主2上执行均下面的步骤
1. 启用 syncprov 模块
root@VECS05855:~# vim syncprov_mod.ldif
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
导入执行该文件
root@VECS05855:~# ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
2,启用 OpenLDAP 的双主同步
创建 configrep.ldif 文件。
configrep.ldif
root@VECS05855:~# vim configrep.ldif
### Update Server ID with LDAP URL ###
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1 ldap://VECS05855
olcServerID: 2 ldap://VECS05856
### Enable replication ###
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
### Adding details for replication ###
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl:
rid=001
provider=ldap://VECS05855
binddn="cn=admin,dc=hellobike,dc=com"
bindmethod=simple
credentials=Bi@#admin
searchbase="dc=hellobike,dc=com"
type=refreshAndPersist
retry="5 5 300 5"
timeout=1
olcSyncRepl:
rid=002
provider=ldap://VECS05856
binddn="cn=admin,dc=hellobike,dc=com"
bindmethod=simple
credentials=Bi@#admin
searchbase="dc=hellobike,dc=com"
type=refreshAndPersist
retry="5 5 300 5"
timeout=1
-
add: olcMirrorMode
olcMirrorMode: TRUE
然后在两台服务器上分别执行这个 ldap_sync.ldif 文件即可。
ldapmodify -Y EXTERNAL -H ldapi:/// -f configrep.ldif
至此,dc=hellobike,dc=com 下的内容便可以在两个服务器上同步了。
如果其他需要ldap 的客户端为centos6 :
authconfig --enableldap --ldapserver=ldap://VECS08934 --ldapbasedn=dc=hellobike,dc=com --updateall --enablemkhomedir --enablesssd --enablesssdauth
测试可以启动sssd 进程。
如果其他需要ldap 的客户端为centos7:
则只需要安装sssd(yum install -y sssd)
[domain/default]
cache_credentials = True
ldap_search_base =dc=hellobike,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://VECS08934
ldap_id_use_start_tls = False
ldap_tls_cacertdir = /etc/openldap/certs
[sssd]
config_file_version = 2
services = nss, pam
domains = default
debug_level = 5
[pam]
[nss]
homedir_substring = /home
参考:https://blog.csdn.net/fanren224/article/details/79707206
http://v.colinlee.fish/posts/openldap-speedy-tutorial-replication.html
Centos 7 下安装LDAP 双主同步的更多相关文章
- otter双主同步安装与配置
otter是阿里的开源数据同步项目,资源地址就不用说了哈,网上找,阿里云论坛关于单方向同步的配置已经很清楚了,理论上说,双主同步也不复杂,但是毕竟 是数据库,比较重要,配置双主的时候,总觉得心里没底, ...
- win10下安装centos7双系统
国庆最后一天了,闲来无事装个双系统,用虚拟机的linux总有些不方便. window下安装linux双系统有两中方法: 1.U盘安装 (我采用的方法,后面详述) 2.EasyBCD工具安装 (使用Ea ...
- c#实例化继承类,必须对被继承类的程序集做引用 .net core Redis分布式缓存客户端实现逻辑分析及示例demo 数据库笔记之索引和事务 centos 7下安装python 3.6笔记 你大波哥~ C#开源框架(转载) JSON C# Class Generator ---由json字符串生成C#实体类的工具
c#实例化继承类,必须对被继承类的程序集做引用 0x00 问题 类型“Model.NewModel”在未被引用的程序集中定义.必须添加对程序集“Model, Version=1.0.0.0, Cu ...
- MySQL热机双备之双主同步复制配置
此配置方案来源于csdn前辈博客,奈何找不到出处了,抱拳!!! 1. MySQL同步机制概述 MySQL支持单向.异步复制,复制过程中一台服务器充当主服务器,一台或多台服务器充当从服务器,双主同步要 ...
- 在Docker下搭建MySQL双主双重集群(单机展示,与多机原理一致)
前言 Docker的安装部署&在Docker下MySQL的安装与配置 https://www.cnblogs.com/yumq/p/14253360.html 在Docker进行单机主从复制M ...
- CentOS linux下安装和配置Apache+SVN(用浏览器http方式访问SVN目录)
在CentOS linux下安装SVN,我们可以进行以下步骤: 第一步:安装CentOS Linux操作系统,并在CentOS安装进行的同时,自定义安装这一步,一定要勾选Subversion(在“开发 ...
- CentOS 6 下安装Python 3
可以下载各个版本的python:https://www.python.org/ftp/python/ 配置安装 下载最新的安装包(截止2013/11/05),还是3.3.2版本. #wget http ...
- CentOS 7 下安装 LEMP 服务(nginx、MariaDB/MySQL 和 php)
原文 CentOS 7 下安装 LEMP 服务(nginx.MariaDB/MySQL 和 php) LEMP 组合包是一款日益流行的网站服务组合软件包,在许多生产环境中的核心网站服务上起着强有力的作 ...
- Linux(CentOS)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因
原文:Linux(CentOS)系统下安装好apache(httpd)服务后,其他电脑无法访问的原因 今天试了下在虚拟机上利用CentOS系统的yum命令安装好了httpd(apache2.4.6), ...
随机推荐
- [C#.net]使用Thread.Sleep界面卡死的问题解决方法
很多初学者在写C#程序的时候,需要程序等待某个时间,但是又不想用比较繁琐的线程等操作,因此用Thread.Sleep()函数,但是这个函数在等待过程中会操作界面的卡死,那么,如何能保证既不卡死又能达到 ...
- WEBAPI 最近更新项目时 服务器总是提示:An error has occurred.
解决办法: 在webconfig中设置 <system.web><customErrors mode="Off"/></system.web> ...
- Qt 中使用Java代码获取安卓设备的MAC地址(安卓9.0)
public String GetDeviceMAC() { String strMacAddr = null; try { // 获得IpD地址 InetAddress ip = getLocalI ...
- ZROI Day1 比赛解题报告
ZROI Day1 比赛解题报告 版权原因不提供题面相关信息 序 前天晚上搞得比较晚,然后早上做题很没状态,刚看到T1发现没什么思路就有点慌,赶紧看了看T2,T3, 发现T3暴力很好打,T2想了一想可 ...
- JS可以做很多事情
JS可以做很多事情,例如: 使用JavaScript可以做很多事情,使网页更具互动性,并为网站用户提供更好.更令人兴奋的体验.JavaScript允许您创建一个活动的用户界面,当用户在页面之间导航时, ...
- 在线预览(pptx、ppt、pps、docx、doc、xlsx、xls)
http://view.officeapps.live.com/op/view.aspx?src=<文档位置> 示例文档https://www.dujin.org/file/ppt/duj ...
- C++ 新特性 笔记 2 右值引用
C ++ Rvalue引用说明 以下内容,主要是上述链接的摘要 介绍 Rvalue引用是C ++的一个特性,它是随C ++ 11标准添加的.使右值参考有点难以理解的是,当你第一次看到它们时,不清楚它们 ...
- Hadoop_11_HDFS的流式 API 操作
对于MapReduce等框架来说,需要有一套更底层的API来获取某个指定文件中的一部分数据,而不是一整个文件 因此使用流的方式来操作 HDFS上的文件,可以实现读取指定偏移量范围的数据 1.客户端测试 ...
- Linux系统组成和获取命令帮助4
Linux文件系统: 1.文件名名称严格区分字符大小写 2.文件可以使用除/以外任意字符 3.文件名长度不能超过255字符 4.以.开头的文件为 ...
- QTP(9)
常用的Windows控件 WinEdit---Set "数据值" SetSecure "加密数值" WinButton---Click WinComboBox- ...