生产环境OpenLDAP主从集群

1、背景

在很多组织中,需要对用户和系统进行统一的身份认证和授权管理。为了实现这一目标,通常会使用LDAP(轻量级目录访问协议)来构建集中化的身份认证和授权服务。而在生产环境中,为了保证高可用性和可扩展性,需要构建OpenLDAP主从集群来提供稳定的身份认证服务。

2、环境

在开始部署之前,需要准备以下环境:

  • 操作系统:Centos7
  • OpenLDAP版本:OpenLDAP: slapd 2.4.44
  • 服务器数量:2台(1台主服务器和1台从服务器)
  • 网络环境:两台服务器应在同一局域网内,确保网络连接稳定

3、主节点安装

清参考下方链接
https://blog.csdn.net/heian_99/article/details/138963912

在这里插入图片描述

4、从节点安装

假设master节点的地址为192.168.102.20。对于master节点,完全参照前述章节操作并配置好。

对于slave节点,也参照前述章节安装并配置,但只到执行ldapdomain.ldif文件后就行。也就是设置了管理员用户账号就行,不用添加部门或其它人员信息。另外,phpLDAPadmin可以安装。

1、配置master节点

在master节点上,我们需要导入相关的信息。

创建syncprov_mod.ldif文件:

cat > syncprov_mod.ldif << "EOF"
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulePath: /usr/lib64/openldap
olcModuleLoad: syncprov.la
EOF

执行:

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

创建syncprov.ldif文件:

cat > syncprov.ldif << "EOF"
dn: olcOverlay=syncprov,olcDatabase={2}hdb,cn=config
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpCheckpoint: 1 1
olcSpSessionLog: 1024
EOF

执行:

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

2、配置slave节点

在slave节点上配置主从。

创建rp.ldif文件:

cat > rp.ldif << "EOF"
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001provider=ldap://192.168.102.20:389bindmethod=simplebinddn="cn=Manager,dc=fujfu,dc=com"credentials=examplePasswordsearchbase="dc=fujfu,dc=com"scope=subschemachecking=ontype=refreshAndPersistretry="30 5 300 3"attrs="*,+"interval=00:00:02:00
EOF

provider表示master的地址,其他的都是些基础信息。需要注意的是认证用户一定要使用超级管理员,如果使用普通用户连接master的话,slave将不会同步用户的密码字段信息。credentials是管理员的密码。
执行:

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

除此之外,为了优化openldap的查询速度,我们添加了相关字段属性的索引。

cat > index.ldif << "EOF"
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: uid eq,pres
olcDbIndex: uniqueMember eq,pres
olcDbIndex: uidNumber,gidNumber eq,pres
olcDbIndex: member,memberUid eq,pres
olcDbIndex: entryUUID eq
olcDbIndex: entryCSN eq
EOF

执行:

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

3、验证主从正确性

slave机器上配置完毕后,无需重启master机器和slave机器的slapd服务。

在slave机器上查看openldap日志,如下:

journalctl -u slapd -n 100 -f

在这里插入图片描述
通过上图,我们可以很明显的看到slave机器上slapd服务没有报错,而且已经在同步相关openldap数据。

现在切换到master机器上查看openldap日志,如下:

journalctl -u slapd -n 100 -f

在这里插入图片描述
通过上图我们也可以发现master没有报错,而且也看到slave机器已经在同步信息了。

现在我们再使用phpLDAPadmin工具,登录slave查看相关信息,如下:
在这里插入图片描述

通过上图,我们可以看到slave节点上已经有账号信息了。这也就说明OpenLDAP的master-slave已经在正常同步数据。

4、测试

可测试如下两点:
1、在master节点上修改用户字段信息,slave节点上应能同步到修改信息。
2、在slave节点修改用户字段信息,应该无法操作。因为我们采用的主从模式中,slave节点是自读的。

如果测试无问题,说明我们的主从的确正常运行。
LDAP查看命令
附ldap查看配置命令:
ldapsearch -Q -LLL -Y EXTERNAL -H ldapi:/// -b cn=config
ldapsearch -x cn=test -b dc=local,dc=cn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/30908.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Ubuntu server 24 (Linux) 安装lua + 卸载软件

1 apt 安装 # sudo apt update #查看可安装的lua版本 sudo apt-get install luaversion # sudo apt-get install lua5.3 #查看版本 testiZbp1g7fmjea77vsqc5hmmZ:/data/soft$ lua -v Lua 5.3.6 Copyright (C) 1994-2020 Lua.org, PUC-Rio2 Ubuntu卸载软件 #查找lua已安装…

python安装包中的.dist-info作用

在使用pip install 包名 进行python第三方库的时候&#xff0c;安装完库之后通常会出现一个库名&#xff0c;还有一个.dist-info的文件&#xff0c;以安装yolov8所依赖的框架ultralytics为例&#xff0c;成功安装后会出现以下文件夹&#xff1a; 第一个ultralytics是概该框架包…

for循环 绘制Echarts图表之后,点击 添加图表向前插入图表遇到实例未更新

一、问题及预期 for循环 绘制图表之后&#xff0c;点击 添加图表&#xff0c; 应该展示空表的初始状态&#xff0c;但是展示的是上一个图表正常有数据的图表 二、复盘 采用index 作为下标去渲染图表实例导致点击【添加图表】按钮的时候向前添加的下标为0 &#xff0c;和原来…

【Gin框架基础使用附带各种小案例和简易登录模块的实现】

Gin框架基础使用附带各种小案例和整个登录模块的实现 前言&#xff1a; Gin框架介绍使用示例安装Gin框架使用代码接收参数的方法 简易登录模块Gin的边角料 前言&#xff1a; Gin框架介绍 Gin框架功能&#xff1a; 在介绍Gin框架之前我们要先明白Gin框架要完成那些功能&#x…

css记录:三维变换之transform

CSS 的 transform 属性用于对元素进行 2D 或 3D 转换。这些转换包括旋转、缩放、倾斜和移动等。在 3D 变换中&#xff0c;我们可以创建更为复杂和动态的效果&#xff0c;让用户体验更为丰富。 transform 属性 transform 是一个简写属性&#xff0c;用于设置以下 2D 和 3D 转换…

【Android】构建 Android Automotive OS:适合初学者的指南

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 目录 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌…

vue脚手架 vuex模块化和四大辅助函数的结合使用

目录 01 四大辅助函数结合vuex模块化的使用 02 event-bus事件总线的使用 01 四大辅助函数结合vuex模块化的使用 mapState 在映射模块化带有命名空间的使用步骤: 方式一:(重要) ...mapState(模块名1,[该模块的变量1,该模块的变量2....]) ...mapState(模块名2,[该模块的变量1,该…

深入探究RTOS的IPC机制----邮箱

阅读引言&#xff1a; 因为将来工作需要&#xff0c; 最近在深入学习OS的内部机制&#xff0c;我把我觉得重要的、核心的东西分享出来&#xff0c; 希望对有需要的人有所帮助&#xff0c; 阅读此文需要读友有RTOS基础&#xff0c; 以及一些操作系统的基础知识&#xff0c; 学习…

行列式和矩阵的区别

目录 一、行列式 1. 行列式的定义 2. (全)排列 3. 逆序数 二、矩阵 1. 矩阵的定义 三、行列式和矩阵的区别 四、参考书目 一、行列式 1. 行列式的定义 2. (全)排列 3. 逆序数 二、矩阵 1. 矩阵的定义 三、行列式和矩阵的区别 四、参考书目 同济大学数学系. 工程数学…

【LeetCode面试经典150题】105. 从前序与中序遍历构造二叉树

一、题目 105. 从前序与中序遍历序列构造二叉树 - 力扣&#xff08;LeetCode&#xff09;给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 二、思路 …

Dynamics 365 on-premise 隐藏高级查找导出按钮

提示 着急可以直接看结果代码部分 背景 Dynamics 365 on-premise中有个高级查找的功能,查询的结果支持导出,如下图 业务反馈这个有数据安全风险,要修改显示规则。 一开始想着能用RibbonWorkbench改,就很爽快得答应了业务。结果用RibbonWorkbench改不了。 反复尝试 既…

Linux远程管理日志

实验介绍 本实验旨在实现主机将日志远程发送到堡垒机或远程服务器上&#xff0c;实现通过一台机器管理整个网络内的主机的效果。 准备两台虚拟机作为生产主机和管理机&#xff0c;保证网络通畅&#xff0c;展示如下&#xff1a; 关闭firewalld&#xff0c;通过配置rsyslog&a…

Sklearn之朴素贝叶斯应用

目录 sklearn中的贝叶斯分类器 前言 1 分类器介绍 2 高斯朴素贝叶斯GaussianNB 2.1 认识高斯朴素贝叶斯 2.2 高斯朴素贝叶斯建模案例 2.3 高斯朴素贝叶斯擅长的数据集 2.3.1 三种数据集介绍 2.3.2 构建三种数据 2.3.3 数据标准化 2.3.4 朴素贝叶斯处理数据 2.4 高斯…

Treeselect是介绍及使用(梳理了我使用这个组件遇到的大部分问题)

介绍&#xff1a; Treeselect是一款基于Vue.js的树形选择器组件&#xff0c;可以快速地实现树形结构的选择功能。 这里梳理了我使用这个组件遇到的大部分问题 安装依赖&#xff1a; 首先&#xff0c;你需要在你的项目中安装Treeselect的依赖。这通常可以通过npm或yarn等来完…

基于STM32和人工智能的智能农业监测系统

目录 引言环境准备智能农业监测系统基础代码实现&#xff1a;实现智能农业监测系统 4.1 数据采集模块4.2 数据处理与分析4.3 控制系统4.4 用户界面与数据可视化应用场景&#xff1a;智能农业管理与优化问题解决方案与优化收尾与总结 1. 引言 智能农业监测系统通过结合STM32嵌…

Linux - 输入输出

一、输出格式 echo //末尾自带换行 -n //取消自带换行 -e //支持转移符 常见转义符 \n换行 \t制表符 printf // 格式化输出字符串 %-10s // %s代表字符串 -10 左对齐容纳10个字符 二、输入输出重定向 file descriptors &#x…

Java集合底层源码剖析-Vector和Stack

文章目录 概述Vector成员变量关键方法添加元素 (add, addElement)删除元素 (remove)注意事项 Stack类定义与继承压栈 (push)弹栈 (pop)查看栈顶元素 (peek)源码解析总结 概述 在Java中&#xff0c;Stack 类是一个基于 Vector 实现的经典栈数据结构。由于 Vector 类本身是线程安…

Python | Leetcode Python题解之第155题最小栈

题目&#xff1a; 题解&#xff1a; class MinStack:def __init__(self):self.stack []self.min_stack [math.inf]def push(self, x: int) -> None:self.stack.append(x)self.min_stack.append(min(x, self.min_stack[-1]))def pop(self) -> None:self.stack.pop()sel…

AD域离线破解新思路:Trustroasting和TimeRoasting

简介 近期Tom Tervoort发表了白皮书《TIMEROASTING, TRUSTROASTING AND COMPUTER SPRAYING》并在Github发布了名为Timeroast的工具包&#xff0c;其中介绍了几种新的攻击思路TimeRoasting、Trustroasting和计算机账户密码喷洒&#xff0c;本篇文章主要对TimeRoasting和Trustro…

从零开始:使用ChatGPT快速创作引人入胜的博客内容

随着科技的飞速发展&#xff0c;人工智能逐渐渗透到我们生活的各个领域。无论是商业、教育还是娱乐&#xff0c;AI技术都在以惊人的速度改变着我们。特别是在内容创作领域&#xff0c;人工智能正发挥着越来越重要的作用。今天&#xff0c;我将和大家分享如何从零开始&#xff0…