LDAP HA 配置

news2024/11/23 3:25:00

目录

  • 1 LDAP 高可用
    • 1.1 介绍
    • 1.2 安装
      • 1、环境
      • 2、全量数据同步
      • 3、配置LDAP的HA
      • 4、测试
  • 总结

1 LDAP 高可用

1.1 介绍

LDAP的主从同步模式有5种:
在这里插入图片描述

MirrorMode为ldap ha比较主流的一种模式,本文基于MirrorMode模式进行部署。
在这里插入图片描述
如果想要主从LDAP是同一个IP,也就是在高可用的基础上实现负载均衡,可以通过安装Keepalived来实现。

1.2 安装

配置OpelLdap HA要满足如下前提条件:
1、两台服务器之间要保持时钟同步
2、软件包版本一致
3、节点之间域名可以相互解析
4、完全一样的配置及目录树信息(除了server id和provider不同外)
5、两台服务器均已完成LDAP。如果没有安装,可以参考文章:Ubuntu下安装LDAP , openldap的简介、安装

1、环境

主:172.16.1.202 ldap.localdomain.com
从:172.16.1.201 ldapslave.localdomain.com

# 以下在两个服务器上都要执行
# 1、将静态主机名添加到每个服务器以确保它们是可解析的
cat /etc/hosts
172.16.1.202 ldap.localdomain.com
172.16.1.201 ldapslave.localdomain.com

# 2、NTP同步 主从之间的时间同步非常重要
### 有自己的NTP之后使用ntpdate命令即可
### 注意:ntp 和 chrony 不能同时使用

apt install chrony -y

cat > /etc/chrony/chrony.conf << EOF
confdir /etc/chrony/conf.d
pool ntp.aliyun.com iburst
pool ntp.tencent.com iburst
keyfile /etc/chrony/chrony.keys
driftfile /var/lib/chrony/chrony.drift
ntsdumpdir /var/lib/chrony
logdir /var/log/chrony
maxupdateskew 1.0
rtcsync
makestep 1 -1
leapsectz Asia/Shanghai
bindcmdaddress 127.0.0.1
EOF

systemctl restart chrony.service
systemctl enable chrony.service


##配置时区
timedatectl set-timezone Asia/Shanghai
date

# 3、安装,为了解决安装后出现的关于时区的问题
sudo apt-get install language-pack-en

2、全量数据同步

在配置HA模式之前可以使用此步骤进行全量信息同步。也可以不执行此步骤,配置完HA之后会自动同步

# 在主服务器上执行
## 1、复制配置文件
### 在主服务器上运行以下命令以创建 OpenLDAP 数据库的副本:
slapcat -b cn=config -l openldap-config.ldif
## 或者
slapcat -n 0 -l openldap-config.ldif
### 创建 OpenLDAP 数据的备份
slapcat -n 1 -l openldap-data.ldif
## 或者
slapcat -l openldap-data.ldif
### 将配置文件复制到消费者服务器
scp {openldap-data.ldif,openldap-config.ldif} root@ip:/root/ldap


# 在从服务器上执行
## 2、恢复配置
### 将 LDAP 数据库和数据复制到使用者后,就可以恢复它们了。确保 LDAP 配置目录为空。
rm -rf /etc/ldap/slapd.d/*
rm -rf /var/lib/ldap/*
### 恢复 LDAP 数据库:
cd /root/ldap && sudo slapadd -b cn=config -l openldap-config.ldif -F /etc/ldap/slapd.d/
# 或者
cd /root/ldap && sudo slapadd -n 0 -l openldap-config.ldif -F /etc/ldap/slapd.d/
### 恢复 OpenLDAP 数据:
cd /root/ldap && sudo slapadd -n 1 -l openldap-data.ldif -F /etc/ldap/slapd.d/
### 设置配置文件的正确文件所有权:
sudo chown -R openldap:openldap /etc/ldap/slapd.d/ /var/lib/ldap/

## 重启服务
systemctl restart slapd

3、配置LDAP的HA

### 需要在两个服务器上都执行
# 1、添加syncprov 模块
## 首先确认模块可用
sudo slapcat -n 0 | grep -i modulepath
##### 输出
olcModulePath: /usr/lib/ldap

cat >> mod_syncprov.ldif << EOF
dn:cn=module,cn=config
objectClass:olcModuleList
cn:module
olcModulePath:/usr/lib/ldap/
olcModuleLoad:syncprov.la
EOF

ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.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{0},cn=config"

# 2、配置syncprov复制设置
cat >> syncprov-options.ldif << EOF
dn: olcOverlay=syncprov,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSyncProvConfig
olcOverlay: syncprov
olcSpNoPresent: TRUE
olcSpCheckpoint: 100 10
olcSpSessionlog: 100
EOF
### 将更改应用到数据库:
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f syncprov-options.ldif
###### 输出
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcOverlay=syncprov,olcDatabase={1}mdb,cn=config"

# 3、启用数据库索引
## 启用entryUID和entryCSN索引以提高数据库性能和扫描速度。
cat >> indexing.ldif <<EOF
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcDbIndex
olcDbIndex: entryCSN eq
-
add: olcDbIndex
olcDbIndex: entryUUID eq
EOF
# 将配置应用
ldapadd -Y EXTERNAL -H ldapi:/// -f indexing.ldif
###### 输出
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"

# 4、在使用者上配置 OpenLDAP 复制
### 我们需要配置消费者服务器,通过启用 olcSyncrepl 并使用正确的配置进行设置,以从提供者服务器获取更新。
### 因为是想要两个LDAP互相同步数据,所以需要在两个服务器上都进行设置
###### 这里一定要注意:使用下面的配置文件的时候要把注释删除,否则会报错
### 主:
cat >> enable-syncrepl.ldif << EOF
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1      #此处两节点不同

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncrepl: 
  rid=001 
  provider=ldap://172.16.1.201:389      #此处为另一个主节点的ip和端口号
  binddn="cn=admin,dc=localdomain,dc=com"     # 根据自己的用户修改
  bindmethod=simple
  credentials="admin@123"              #此处是该节点的rootpw,此处只能用明文,也就是上面提到的admin 用户的密码
  searchbase="dc=localdomain,dc=com"     # 根据自己的用户修改
  type=refreshAndPersist 
  timeout=0 
  network-timeout=0 
  retry="60 +"

-
add: olcMirrorMode
olcMirrorMode: TRUE
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: entryCSN eq
EOF
### 更新数据库
ldapadd -Y EXTERNAL -H ldapi:/// -f enable-syncrepl.ldif
###### 输出
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

modifying entry "olcDatabase={1}mdb,cn=config"


### 从:
cat enable-syncrepl.ldif
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 2  

dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcSyncrepl
olcSyncrepl: 
  rid=001 
  provider=ldap://172.16.1.202:389
  binddn="cn=admin,dc=localdomain,dc=com" 
  bindmethod=simple
  credentials="admin@123" 
  searchbase="dc=localdomain,dc=com" 
  type=refreshAndPersist 
  timeout=0 
  network-timeout=0 
  retry="60 +"

-
add: olcMirrorMode
olcMirrorMode: TRUE
-
add: olcDbIndex
olcDbIndex: entryUUID eq
-
add: olcDbIndex
olcDbIndex: entryCSN eq
### 更新数据库
ldapadd -Y EXTERNAL -H ldapi:/// -f enable-syncrepl.ldif
######## 输出
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "cn=config"

modifying entry "olcDatabase={1}mdb,cn=config"

# 5、重启服务
systemctl restart slapd

4、测试

# 主服务器上创建用户
cat test-user.ldif 
######### 内容如下:
dn: uid=usertest,ou=People,dc=localdomain,dc=com
cn: usertest
gidnumber: 10050
homedirectory: /home/usertest
loginshell: /bin/bash
objectclass: inetOrgPerson
objectclass: posixAccount
objectclass: shadowAccount
shadowinactive: 7
shadowlastchange: 0
shadowmax: 60
shadowmin: 1
shadowwarning: 7
sn: Doe
uid: usertest
uidnumber: 10050
userpassword: {SSHA}2qq2GDAoJngANJ+oEDgZEDJDsOt4QpEF

dn: cn=usertest,ou=Groups,dc=localdomain,dc=com
cn: usertest
gidnumber: 10050
memberuid: usertest
objectclass: posixGroup
# 添加条目
ldapadd -x -D cn=admin,dc=localdomain,dc=com -W -f test-user.ldif 
#### 输出
Enter LDAP Password: 
adding new entry "uid=usertest,ou=People,dc=localdomain,dc=com"

adding new entry "cn=usertest,ou=Groups,dc=localdomain,dc=com"


# 主服务器上查看
ldapsearch -LLL -x -D 'cn=admin,dc=localdomain,dc=com' -W -b 'dc=localdomain,dc=com'
Enter LDAP Password: 

dn: cn=usertest,ou=Groups,dc=localdomain,dc=com
cn: usertest
gidNumber: 10050
memberUid: usertest
objectClass: posixGroup

dn: uid=usertest,ou=People,dc=localdomain,dc=com
cn: usertest
gidNumber: 10050
homeDirectory: /home/usertest
loginShell: /bin/bash
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
shadowInactive: 7
shadowLastChange: 0
shadowMax: 60
shadowMin: 1
shadowWarning: 7
sn: Doe
uid: usertest
uidNumber: 10050
userPassword:: e1NTSEF9MnFxMkdEQW9KbmdBTkorb0VEZ1pFREpEc090NFFwRUY=

### 从服务器上查看
ldapsearch -LLL -x -D 'cn=admin,dc=localdomain,dc=com' -W -b 'dc=localdomain,dc=com'
Enter LDAP Password: 

dn: cn=usertest,ou=Groups,dc=localdomain,dc=com
cn: usertest
gidNumber: 10050
memberUid: usertest
objectClass: posixGroup

dn: uid=usertest,ou=People,dc=localdomain,dc=com
cn: usertest
gidNumber: 10050
homeDirectory: /home/usertest
loginShell: /bin/bash
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
shadowInactive: 7
shadowLastChange: 0
shadowMax: 60
shadowMin: 1
shadowWarning: 7
sn: Doe
uid: usertest
uidNumber: 10050
userPassword:: e1NTSEF9MnFxMkdEQW9KbmdBTkorb0VEZ1pFREpEc090NFFwRUY=


### 另一个服务器上创建,重复上述操作

总结

关于 LDAP HA有以下需要注意的:

  • 本篇文章主要通过 MirrorMode 来实现的 HA,使用该方式配置的高可用模式,主从服务器可以实现用户等信息同步。
  • 也可以通过keepalived来实现 LDAP HA,这种方式和Nginx的高可用方式类似,优点是实现了负载均衡,主从都可以通过同一个VIP来访问。但是有个问题是:两个服务器的用户等信息无法自动同步需要另外想办法解决。
  • 如果想要实现高可用的同时实现负载均衡,就可以把以上两种方式结合起来使用。此处没有介绍 keepalived来实现 LDAP HA。可以参考 Nginx的高可用。

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

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

相关文章

QT QPrinter无弹窗后台打印

最近遇到一个打印相关的问题,就是如何通过代码设定打印的相关信息,然后一键打印出来呢,不通过系统的打印设置界面(下图所示)进行设置内容,直接实现打印? 网上找到的一般的打印都如下所示,都是通过了QPrintDialog进行弹出系统打印设置,然后再进行打印,才完成打印,类…

所有即将登陆iPhone 16的Apple智能功能以及预期发布时间

苹果即将在9月9日的“Glowtime”&#xff08;闪耀时刻&#xff09;发布会上揭示和&#xff0c;这是本年度最值得期待的iPhone。 据悉&#xff0c;今年的iPhone将推出更大的屏幕、更快的芯片、更好的摄像头、新的颜色以及更多的内部升级。但是&#xff0c;除了这些硬件提升外&a…

如何进行匈牙利匹配

1 问题提出 在做目标检测的指标评价时,模型会输出一系列目标结果,而标注的GT又会有一些结果,如何将预测值和GT标注真值进行匹配呢?这个时候就可以使用匈牙利匹配来解决问题! For example: 2 匈牙利匹配使用流程 构建代价矩阵 可以根据PRED和GT中心点距离或者颜色特征的…

消防指挥中心控制台:守护安全的关键枢纽

在消防应急救援的战场上&#xff0c;嘉德立消防指挥中心控制台犹如一座坚实的堡垒&#xff0c;发挥着至关重要的作用。它是消防指挥的核心枢纽&#xff0c;连接着无数的信息与行动&#xff0c;为保护人民生命财产安全提供了强大的保障。 一、重要地位与作用 消防指挥中心控制台…

爆火AI教学视频Grant Sanderson作者是谁?

Grant Sanderson 是一位著名的数学教育家和 YouTube 频道 3Blue1Brown 的创始人。他于 2015 年毕业于斯坦福大学&#xff0c;获得数学学士学位。在斯坦福大学期间&#xff0c;他不仅专注于数学&#xff0c;还涉猎了计算机科学领域。 毕业后&#xff0c;Sanderson 加入了 Khan A…

小白看八字排盘需要的基础知识

我们在看生辰八字的时候比较专业的大师都会先根据命主的八字排盘起卦得出命盘卦象&#xff0c;然后再进行分析&#xff0c;今天我们来教大家认识八字命盘&#xff0c;小白看八字排盘需要学习哪些基础知识&#xff1f; 什么是八字排盘 八字排盘&#xff0c;顾名思义就是将一个…

图分类!!!

deepwalk 使用图中节点与节点的共现关系来学习节点的向量表示。那么关键的问题就是如何来描述节点与节点的共现关系&#xff0c;DeepWalk给出的方法是使用随机游走(RandomWalk)的方式在图中进行节点采样,RandomWalk是一种可重复访问已访问节点的深度优先遍历算法。给定当前访问…

Kafka--高吞吐量消息中间件

文章目录 Kafka特点和优势Kafka特点Kafka优势Kafka角色分区和副本的优势Kafka写入流程 Kafka部署单机集群部署1.环境准备ZooKeeper2.配置文件说明3.各节点部署Kafka4.启动服务5.确保服务启动 Kafka读写数据创建Topic获取Topic验证Topic详情生成Topic消费Topic删除 Topic Kafka特…

IP网络广播服务平台upload接口存在任意文件上传漏洞

免责声明&#xff1a;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该文章仅供学习用途使用。 漏洞描述 …

解决常见 Android 问题的 9 大 Android 手机修复软件

许多人发现 Android 手机或平板电脑上的 Android 操作系统起初运行良好&#xff0c;但随着时间的推移&#xff0c;可能会出现各种 Android 系统问题。您可能会遇到一些问题&#xff0c;例如系统速度变慢、启动无响应、挂起错误、界面冻结、短信停滞、应用程序崩溃等。好吧&…

具体函数的卡诺图填入

目录 用卡诺图表示逻辑函数 基本步骤 例子1 例子2 例子3 用卡诺图表示逻辑函数 基本步骤 例子1 由真值表得卡诺图。 在函数值为1的地方在卡诺图上画上1。 例子2 例子3 非标准与或式&#xff0c;要找到公共部分。 将AB所在的那一行填上1。 将A非D的那个部分也填上1。 再…

平价蓝牙耳机哪个牌子好?四款宝藏机型独家推荐

在如今这个科技迅速发展的时代&#xff0c;蓝牙耳机已成为我们日常生活中不可或缺的一部分&#xff0c;尤其是对于那些寻求性价比的消费者来说&#xff0c;平价蓝牙耳机市场是一个充满选择的广阔天地&#xff0c;那么平价蓝牙耳机哪个牌子好&#xff1f;面对繁多的品牌和机型&a…

为什么有人说 PMP 是水证,它的含金量到底怎么样?

关于 PMP 证书是否值得考&#xff1f;有没有价值这个问题争议一直很大。 网传 pmp 培训机构的通过率高达 97%&#xff0c;很多人考了吐槽PMP没用&#xff0c;是“水证”&#xff0c;但是每年考 PMP 的人不减反增&#xff0c;大家可以想一下&#xff0c;这是为什么呢&#xff1…

如何选择?速卖通卖家必知的真人测评与自养号测评对比

速卖通平台上的真人测评和自养号测评各有其优缺点&#xff0c;选择哪种方式更好取决于卖家的具体需求和资源情况。 真人测评 优点&#xff1a; 1. 高权重和可信度&#xff1a;真实用户的账号权重较高&#xff0c;其评价在平台上具有更高的可信度和影响力&#xff0c;能够显著…

海纳百川林宇川:别怕,这个时候应该勇敢加贪婪

海纳百川作为一家资产管理公司&#xff0c;不仅致力于产生自身的利润&#xff0c;还通过其创始人林宇川的领导和战略布局&#xff0c;展现了其正规与专业性。林宇川凭借其丰富的华尔街投行高管经验&#xff0c;以及对国际资本市场的深入了解&#xff0c;为海纳百川的发展奠定了…

Microbiome | 基因组所张江/湖北大学张凤娟揭示菌群在植物抵御害虫中的作用

新型昆虫病原菌假单胞菌的富集增强了柳树对柳蓝叶甲的抗性 2024年9月9日&#xff0c;中国农业科学院农业基因组研究所张江、王海涛、湖北大学张凤娟等团队在Microbiome在线联合发表了题为 “Enrichment of novel entomopathogenic Pseudomonas species enhances willow resista…

HTML5中元素的拖放详解

第11章 HTML5中元素的拖放 只要为元素添加draggable属性&#xff0c;就可实现元素的拖放 11.1 拖放基础 11.1.1 使用JavaScript代码实现拖放 1.功能描述 H5页面中&#xff0c;添加两个div,divFrame包含divTitle&#xff0c;用鼠标移到divTitle上时&#xff0c;按下鼠标左键…

大模型LLM:合成训练样本的数据分布问题

近几天在研究大模型LLM数数问题时&#xff0c;使用合成数据集来训练LLM“统计字符串&#xff08;100个单词以内&#xff09;中字母的个数”的能力&#xff0c;基于Word进行分词。原始的合成代码在生成随机字符串时&#xff0c;采用如下代码&#xff1a; # self.words为常见英文…

盘古信息:做新能源行业数字化转型升级的领航员

随着全球能源转型的加速与可持续发展目标的明确&#xff0c;新能源行业正步入一个前所未有的广阔发展空间。然而&#xff0c;在迅猛发展的浪潮中&#xff0c;新能源行业也面临着诸多挑战&#xff0c;为应对当前市场环境&#xff0c;新能源行业正积极寻求数字化转型的突破路径&a…

低代码 + BI 数字化转型如何助力制造业供应链协同?

引言 在当今快速变化的商业环境中&#xff0c;制造业面临着前所未有的挑战和机遇。全球化竞争、消费者需求的快速变化、技术创新的加速以及不断增加的成本压力&#xff0c;都要求制造企业不断提高其供应链的效率和灵活性。供应链协同作为一种先进的管理理念和实践&#xff0c;…