首页 > 其他分享 >openLDAP主从&双主架构部署

openLDAP主从&双主架构部署

时间:2023-03-02 17:25:22浏览次数:48  
标签:dn 202 cn dc abc 主从 openLDAP ldif 双主

服务规划:

IP 系统 服务 角色
172.17.26.202 centos7 LDAP
172.17.26.207 centos7 LDAP
172.17.26.208 centos7 LDAP

说明:

此架构是一套双主一从的架构;

1、先在202上运行一个ldap服务,然后在207上也运行一个ldap服务,配置让207作为从节点,去同步202的数据,此时202是主,207是从;

2、在208上运行一个ldap服务,让208和202配置为双主,此时在202或者208上操作,207都能同步到;

3、模拟202服务故障,然后修改207去同步208的数据,验证数据;

 

一、LDAP服务搭建

1、安装服务

yum -y install openldap openldap-servers openldap-clients  compat-openldap

说明:
openldap:         #OpenLDAP配置文件、库和文档
openldap-servers: #服务器进程及相关命令、迁移脚本和相关文件
openldap-clients: #客户端进程及相关命令,用来访问和修改 OpenLDAP 目录
compat-openldap:  #与主从配置相关

 

2、复制数据库模板

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

chown -R ldap:ldap /var/lib/ldap/DB_CONFIG

 

3、启动服务

systemctl enable slapd
systemctl start slapd

#查看
netstat -ntlp |grep 389

 

4、使用 slappasswd 命令生成管理员(admin)密码

 编写 LDIF(一种LDAP 专用的数据交换格式)文件并通过ldapadd命令将管理员密码导入到 LDAP配置文件中:

[root@202 ~]#slappasswd   #回车,输入密码即可,生成的密文密码要记下来

[root@202 ~] ~$ vim chrootpw.ldif 
dn: olcDatabase={0}config,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}GDdMN3vBiNHs4fEcDaey6nCdILiY3GYd   #这里的密码就是上一步生成的

 导入:

ldapadd -Y EXTERNAL -H ldapi:/// -f chrootpw.ldif

 

5、向 LDAP 中导入一些基本的 Schema

 这些 Schema 文件位于 /etc/openldap/schema/ 目录中,schema控制着条目拥有哪些对象类和属性;

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/cosine.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/nis.ldif

ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/openldap/schema/inetorgperson.ldif

 

6、配置 LDAP 的根域(以 dc=abc,dc=com 为例)及其管理域

[root@202 ~] ~$ vim  chdomain.ldif
#用你自己的域名代替"dc=***,dc=***"语句块

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=Manager,dc=abc,dc=com" read by * none

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcSuffix
olcSuffix: dc=abc,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
replace: olcRootDN
olcRootDN: cn=Manager,dc=abc,dc=com

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcRootPW
olcRootPW: {SSHA}GDdMN3vBiNHs4fEcDaey6nCdILiY3GYd

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {0}to attrs=userPassword,shadowLastChange by
  dn="cn=Manager,dc=abc,dc=com" write by anonymous auth by self write by * none
olcAccess: {1}to dn.base="" by * read
olcAccess: {2}to * by dn="cn=Manager,dc=abc,dc=com" write by * read

 导入:

ldapmodify -Y EXTERNAL -H ldapi:/// -f chdomain.ldif

 

7、创建组织、角色

 创建一个叫做 abc company 的组织,并在其下创建一个 Manager 的组织角色(该角色内的用户具有管理整个 LDAP 的权限)和 People 和 Group 两个组织单元;

[root@202 ~] ~$ vim basedomain.ldif 
dn: dc=abc,dc=com
objectClass: top
objectClass: dcObject
objectClass: organization
o: abc Company
dc: abc

dn: cn=Manager,dc=abc,dc=com
objectClass: organizationalRole
cn: Manager

dn: ou=People,dc=abc,dc=com
objectClass: organizationalUnit
ou: People

dn: ou=Group,dc=abc,dc=com
objectClass: organizationalRole
cn: Group
 导入:
#输入上面设置的管理员密码(明文)
ldapadd -x -D cn=Manager,dc=abc,dc=com -W -f basedomain.ldif  
   通过以上的所有步骤,我们就设置好了一个 LDAP 目录树:  其中基准 dc=abc,dc=com 是该树的根节点,  其下有一个管理域 cn=Manager,dc=abc,dc=com 和两个组织单元 ou=People,dc=abc,dc=com 及 ou=Group,dc=abc,dc=com  

8、添加测试用户

[root@202 ~]# cat tom.ldif 
dn: uid=tom,ou=People,dc=abc,dc=com
cn: dsj
mail: [email protected]
objectclass: inetOrgPerson
objectclass: top
sn: tom
userpassword: Tom_6688


#添加
ldapadd -x -D "cn=Manager,dc=abc,dc=com" -W -f tom.ldif

#查询
ldapsearch -x -b "dc=abc,dc=com" -H ldap://127.0.0.1 |grep "tom"

#删除
ldapdelete -x -W -D 'cn=Manager,dc=abc,dc=com' "uid=tom,ou=People,dc=abc,dc=com"

 至此,单台的LDAP服务已搭建完成;

 因为我这里要做双主一从,上述步骤我在202  207  208三台主机上都执行了一遍;

 主从、双主下面开始配置;

 

二、主从配置

1、先让202做主节点,在202节点配置

 添加syncprov模块:

[root@202 ~]# vim syncprov_mod.ldif 
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la


#导入
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif

 

同步的一些信息:

[root@202 ~]# vim syncprov.ldif 
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100


#导入
 ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif

 

2、207做从节点,配置

207上的前期安装、配置等工作,已经在步骤“一”中完成了;

[root@207 ~]# vim rp.ldif 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://172.17.26.202:389/   #去同步202的数据
  bindmethod=simple
  binddn="cn=Manager,dc=abc,dc=com"  #此处是配置一个同步账号,此账号是202节点上的
  credentials=xxxx   #此处填写上面账号的明文密码
  searchbase="dc=local,dc=cn"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00

#导入
ldapadd -Y EXTERNAL -H ldapi:/// -f rp.ldif

 

3、主从验证

在202上执行上面添加用户、删除用户的操作,观察207上是不是也有同步的现象;

 

三、双主配置

此时202节点是主,207节点是从;

下面配置208和202作为双主,208上的前期安装、配置等工作,已经在步骤“一”中完成了;;

1、208节点先添加syncprov模块

[root@208 ~]# vim syncprov_mod.ldif 
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la


#导入
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov_mod.ldif

 

同步的一些信息:

[root@208 ~]# vim syncprov.ldif 
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpSessionLog: 100


#导入
ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov.ldif

 

2、在202、208两个主节点上,执行下列配置

(1)202节点配置(注意注释项的内容)

[root@202 ~]# vim master202.ldif 
# create new
dn: cn=config
changetype: modify
replace: olcServerID
# specify uniq ID number on each server
olcServerID: 0     #202的id设置为0

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://172.17.26.208:389/   #202节点去同步208的数据
  bindmethod=simple
  binddn="cn=Manager,dc=abc,dc=com"  #同步用的账号
  credentials=xxxxxx    #明文密码
  searchbase="dc=abc,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

 导入:

ldapmodify -Y EXTERNAL -H ldapi:/// -f master202.ldif

 

(2)208节点配置(注意注释项的内容)

[root@208 ~]# vim master208.ldif 
# create new
dn: cn=config
changetype: modify
replace: olcServerID
# specify uniq ID number on each server
olcServerID: 1     #202的id设置为1

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://172.17.26.202:389/    #208节点去同步202的数据
  bindmethod=simple
  binddn="cn=Manager,dc=abc,dc=com"      #同步用的账号
  credentials=xxxxxxx     #明文密码
  searchbase="dc=abc,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00
-
add: olcMirrorMode
olcMirrorMode: TRUE

dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov

 导入:

ldapmodify -Y EXTERNAL -H ldapi:/// -f master208.ldif

 

至此,双主一从架构部署完成;

 

四、最后验证

先在202节点添加、删除一个用户,观察207  208节点的现象;

 

模拟故障,停止202节点的服务,手动修改207去同步208的数据,如下:

[root@207 ~]# vim rp.ldif 
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://172.17.26.208:389/  #这里的地址改为208即可
  bindmethod=simple
  binddn="cn=Manager,dc=abc,dc=com"
  credentials=xxxx
  searchbase="dc=local,dc=cn"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="30 5 300 3"
  interval=00:00:05:00


#导入
ldapadd -Y EXTERNAL -H ldapi:/// -f rp.ldif

 

然后在208节点添加一个用户,观察207节点的现象;

然后再把202节点的服务启动,观察添加的用户是否已经存在了;

 

标签:dn,202,cn,dc,abc,主从,openLDAP,ldif,双主
From: https://www.cnblogs.com/weiyiming007/p/17172022.html

相关文章

  • mysql主从故障跳过错误
    mysql主从故障跳过错误1.从库报错21,22,23,25无法执行Retrieved_Gtid_Set:265c6c2a-86ca-11ed-b07a-0242ac120002:1-25Executed_Gtid_Set:265c6c2a-86ca-11ed-b07a-0242......
  • Redis主从复制原理
    1.当从服务器连接上主服务器后,主服务器向从服务器发送进行数据同步消息2.主服务器接到从服务器发送的数据同步的消息,把主服务器数据持久化,复制rdb文件发送给从服务器,从服......
  • PostgreSQL 主从搭建
    PostgreSQL体系结构本地内存本地内存是服务器进程独占的内存结构,每个postgresql子进程都会分配一小块相应内存空间,随着连接会话的增加而增加,它不属于实例的一部分work_mem:用......
  • redis主从复制原理
    小码今天去面试。面试官:给我介绍一下Redis集群,小码:啊,平时开发用的都是单机Redis,没怎么用过集群了。面试官:好的,出门右转不谢。小码内心困惑:在小公司业务量也不大,单机的......
  • 本地虚拟机centos7通过docker安装主从redis3.2
    1、下载redisdocker镜像dockerpullredis:3.22、在home下建立mydata目录在/home/mydata/redis下面建立两个目录conf与data3、docker运行主从dockerrun-p6379:6379--n......
  • 本地虚拟机centos7通过docker安装主从mysql5.7.21
    1、下载mysql镜像dockerpullmysql:5.7.212、在home下建立mydata目录在/home/mydata/mysql下面建立两个目录conf与data3、docker运行起来两个服务器的服务dockerrun-p3......
  • LDAP Admin连接AD域与OpenLdap
    LDAPAdmin版本:1.8.3域为kittlen.com账号为:administrator21.128为AD域所在地址21.127为OpenLdap所在地址Username填写方式不同如果连接进去无法进行用户的添加操作,可以选......
  • MySQL主从复制报错:Fatal error: The slave I/O thread stops because master and slav
    报错信息:Fatalerror:TheslaveI/OthreadstopsbecausemasterandslavehaveequalMySQLserverUUIDs;theseUUIDsmustbedifferentforreplicationtowork......
  • Redis:五、主从复制
    @目录一、主从复制的概念二、主从复制基础用法2.1工作流程(1)建立连接2.2工作流程(2)数据同步2.3工作流程(3)命令传播三、主从复制实例四、主从复制常见问题五、主从复制的......
  • Mysql、(八) 主从复制
    @目录一、MySQL主从复制步骤二、主从复制的配置主机的配置从机的配置其它操作一、MySQL主从复制步骤Master将改变记录到二进制日志(binarylog)。这些记录过程叫做二......