基于OpenLDAP_MirrorMode的OpenLDAP高可用

本文涉及的产品
日志服务 SLS,月写入数据量 50GB 1个月
简介: 背景: 某客户做用户中心项目。使用OpenLDAP做为存储用户信息。LDAP是一款轻量级目录访问协议(Lightweight Directory Access Protocol,简称LDAP),属于开源集中账号管理架构的实现,且支持众多系统版本,被广大互联网公司所采用。

背景:

某客户做用户中心项目。使用OpenLDAP做为存储用户信息。LDAP是一款轻量级目录访问协议(Lightweight Directory Access Protocol,简称LDAP),属于开源集中账号管理架构的实现,且支持众多系统版本,被广大互联网公司所采用。目录服务是一种特殊的数据库系统,对于数据的读取、浏览、搜索有很好的效果。同时做为用户中心,数据库的高可用显得尤为重要。在客户生产环境中使用的是客户的负载均衡设备,基于思杰的硬件负载均衡设备,后端配置的是OpenLDAP_MirrorMode,相当于Mysql的双主模式,后面某一台服务器出现问题,负载均衡会将后端的服务器剔除,另一台仍能提供服务,如下图所示
1
实验环境:
操作系统: centos 7.2
服务器A:10.10.1.134
服务器B:10.10.1.132

一:环境准备

  • 下载软件:
    mkdir /home/admin/openldap && cd /home/admin/openldap

wget ftp://ftp.openldap.org/pub/OpenLDAP/openldap- release/openldap-2.4.23.tgz
wget http://download.oracle.com/berkeley-db/db-4.6.21.tar.gz

  • 关闭selinux
    sed -i '/SELINUX/s/enforcing/disabled/' /etc/selinux/config && sestatus
  • 防火墙关闭
    /bin/systemctl disable firewalld.service && /bin/systemctl stop firewalld.service
  • 配置yum源为阿里云yum源
    wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #从阿里云镜像网站下载yum源配置文件到yum目录中

sed -i 's/$releasever/7/g' /etc/yum.repos.d/CentOS-Base.repo #修改版本号为redhat7
yum clean all #清空yum缓存
yum list #生成列表

  • 安装openldap环境所需要的依赖包。
    yum -y install libtool-ltdl libtool-ltdl-devel gcc openssl openssl-devel cyrus-sasl-lib.x86_64 cyrus-sasl-devel.x86_64 cyrus-sasl-plain.x86_64 cyrus-sasl-md5.x86_64 cyrus-sasl-ldap.x86_64

二:安装openldap和Berkeley DB

1. 写在安装之前:

  • 编译安装openldap需要数据库的支持,openldap的数据库支持
    Berkeley DB,Oracle,Mysql,MariaDB,GDBM等数据库。默认openldap采用Berkeley DB,并且openldap对数据库有一定的要求,openldap 2.4的软件为例,需要Berkeley DB 4.4版本以上,所以在编译安装openldap源码包时需要先下载安装Berkeley DB

2.编译安装Berkeley DB

  • tar -xf db-4.6.21.tar.gz -C /usr/local/src
  • cd /usr/local/src/db-4.6.21/build_unix/ && mkdir /usr/local/BDB
  • ../dist/configure --prefix=/usr/local/BDB
  • make && make install
  • echo "/usr/local/BDB/lib/" > /etc/ld.so.conf.d/bdb.conf
  • ldconfig -v
  • ln -sv /usr/local/BDB/include /usr/include/BDB

3. 编译安装openldap

  • tar -xf openldap-2.4.23.tgz -C /usr/local/src/
  • cd /usr/local/src/openldap-2.4.23/
  • ./configure --prefix=/usr/local/openldap --enable-syslog --enable-modules --enable-debug --with-tls CPPFLAGS=-I/usr/local/BDB/include/ LDFLAGS=-L/usr/local/BDB/lib/ --enable-ldap --enable-relay --enable-accesslog --enable-auditlog --enable-syncprov --with-cyrus-sasl --enable-spasswd
  • make depend
  • make && make install
  • echo "/usr/local/openldap/lib/" > /etc/ld.so.conf.d/ldap.conf
  • ldconfig -v
  • ln -sv /usr/local/openldap/include/ /usr/include/ldap
  • ln -s /usr/local/openldap/bin/* /usr/local/bin/
  • ln -s /usr/local/openldap/sbin/* /usr/local/sbin/

三:配置openldap

1 配置openldap的方法有两种:

  • 通过修改配置文件实现配置
  • 通过配置数据库的形式完成配置(slapd.d下的数据库配置文件),属于动态配置不需要重启slapd进程,
    此配置文件在cn=config目录下的LDIF的配置文件 。此文件不建议手动修改,用ldap命令生成。

2配置rootdn密码(optional)

  • /usr/local/openldap/bin/slappasswd
    此密码记住,后面配置openldap会用到。

3 创建用户ldap

  • useradd ldap

4创建数据目录以及日志文件

  • mkdir /data/openldap/{data,log,var} -p
  • cd /data/openldap/var/
  • mkdir run

5 修改权限:

  • cp /usr/local/openldap/etc/openldap/DB_CONFIG.example /data/openldap/data/DB_CONFIG
  • chown -R ldap:ldap /data/openldap/data
  • chmod 700 -R /data/openldap/data

6修改openldap配置文件

编辑配置文件vim slapd.conf
include /usr/local/openldap/etc/openldap/schema/core.schema
include /usr/local/openldap/etc/openldap/schema/collective.schema
include /usr/local/openldap/etc/openldap/schema/corba.schema
include /usr/local/openldap/etc/openldap/schema/cosine.schema
include /usr/local/openldap/etc/openldap/schema/duaconf.schema
include /usr/local/openldap/etc/openldap/schema/dyngroup.schema
include /usr/local/openldap/etc/openldap/schema/inetorgperson.schema
include /usr/local/openldap/etc/openldap/schema/java.schema
include /usr/local/openldap/etc/openldap/schema/misc.schema
include /usr/local/openldap/etc/openldap/schema/nis.schema
include /usr/local/openldap/etc/openldap/schema/openldap.schema
include /usr/local/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 # 需要数据同步需要开启此模块
database bdb
directory /data/openldap/data
suffix "dc=boe,dc=com"
rootdn "cn=Manager,dc=boe,dc=com"
rootpw {SSHA}eJtr5umAo23PqTKATU/X6D8swJ9yIlSx #用slappasswd命令生成的密码
index objectclass,entryCSN,entryUUID eq
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
serverID 2
syncrepl rid=123
provider=ldap://对端服务器ip
bindmethod=simple
binddn="cn=Manager,dc=boe,dc=com"
credentials=密码(管理员密码,这里是Manager的密码)
searchbase="dc=boe,dc=com"
schemachecking=off
type=refreshAndPersist
retry="60 +"
mirrormode on
两个服务器的配置文件有两个地方不一致
1)serverID不一致
2)provider=ldap://对端的ip

7开启日志功能

  • 通过修改配置文件开启日志功能
  1. /etc/rsyslog.d/slapd.conf

local4.* /data/openldap/log/openldap.log
重启rsyslog和slapd
service rsyslog restart

  • 通过修改数据库配置文件开启
  1. /root/loglevel.ldif << EOF

dn: cn=config
changetype: modify
replace: olcLogLevel
olcLogLevel: stats
EOF
ldapadd -x -D "cn=Manager,dc=boe,dc=com" -f ./loglevel.ldif -w secret

四:配置phpldpadmin工具

1 安装和配置LDAP管理工具PHPldapadmin

  • 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

2 修改配置文件

  • vim /etc/phpldapadmin/config.php +398
    397行取消注释,398行添加注释

$servers->setValue('login','attr','dn');

  • vi /etc/httpd/密码 d/phpldapadmin.conf
    Apache 2.4

Require all granted (修改此处)
Order Deny,Allow
Deny from all
Allow from 127.0.0.1
Allow from ::1

3 设置开机自启并启动Apache

[root@localhost ~]# systemctl enable httpd
[root@localhost ~]# systemctl start httpd
启动openldap
/usr/local/openldap/libexec/slapd
访问用http://ip/phpldapadmin访问如图
111
222
在10.10.1.132上创建了一个OU名为testou,会发现10.10.1.132会自动同步到本地,如图:
333
444
两服务器日志如下:
555
666
以上结果得知,在镜像模式下,当其中一台服务器增加操作OU时,另一台也会同步增加,两台服务器均可进行读写操作,任何一台信息发生变化,都会以推的方式进行通知。

wuque
+关注
目录
打赏
0
0
0
1
32434
分享
相关文章
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
仅用3分钟,百炼调用满血版Deepseek-r1 API,享受百万免费Token。阿里云提供零门槛、快速部署的解决方案,支持云控制台和Cloud Shell两种方式,操作简便。Deepseek-r1满血版在推理能力上表现出色,尤其擅长数学、代码和自然语言处理任务,使用过程中无卡顿,体验丝滑。结合Chatbox工具,用户可轻松掌控模型,提升工作效率。阿里云大模型服务平台百炼不仅速度快,还确保数据安全,值得信赖。
188613 32
深度评测 | 仅用3分钟,百炼调用满血版 Deepseek-r1 API,百万Token免费用,简直不要太爽。
用DeepSeek,就在阿里云!四种方式助您快速使用 DeepSeek-R1 满血版!更有内部实战指导!
DeepSeek自发布以来,凭借卓越的技术性能和开源策略迅速吸引了全球关注。DeepSeek-R1作为系列中的佼佼者,在多个基准测试中超越现有顶尖模型,展现了强大的推理能力。然而,由于其爆火及受到黑客攻击,官网使用受限,影响用户体验。为解决这一问题,阿里云提供了多种解决方案。
23392 37
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
零门槛,轻松体验阿里云 DeepSeek-R1 满血版:快速部署,立享超强推理能力
DeepSeek-R1 是阿里云推出的先进推理模型,专为解决复杂任务设计,尤其在数学推理、代码生成与修复、自然语言处理等领域表现出色。通过阿里云的“零门槛”解决方案,用户无需编写代码即可快速部署 DeepSeek-R1,大幅简化了部署流程并提升了使用效率。该方案提供了详尽的文档和可视化界面,使开发者能轻松上手。DeepSeek-R1 支持多种模型尺寸,适用于不同场景,如智能客服、代码自动化生成、数学问题求解和跨领域知识推理。尽管存在对高自定义需求支持有限、云端依赖性等不足,但对于希望快速验证模型效果的用户而言,阿里云的这一解决方案仍然是高效且经济的选择。
1893 29
零门槛、百万token免费用,即刻拥有DeepSeek-R1满血版,还有实践落地调用场景等你来看
DeepSeek 是热门的推理模型,能在少量标注数据下显著提升推理能力,尤其擅长数学、代码和自然语言等复杂任务。本文涵盖四种部署方案,可以让你快速体验云上调用 DeepSeek-R1 满血版的 API 及部署各尺寸模型的方式,无需编码,最快 5 分钟、最低 0 元即可实现
本地部署DeepSeek模型
要在本地部署DeepSeek模型,需准备Linux(推荐Ubuntu 20.04+)或兼容的Windows/macOS环境,配备NVIDIA GPU(建议RTX 3060+)。安装Python 3.8+、PyTorch/TensorFlow等依赖,并通过官方渠道下载模型文件。配置模型后,编写推理脚本进行测试,可选使用FastAPI服务化部署或Docker容器化。注意资源监控和许可协议。
1653 10
DeepSeek-R1满血版上线阿里云,新用户专享100万token额度,5分钟快速部署!
DeepSeek是当前AI领域的热门话题,尤其其大模型备受关注。由于网页版访问时常超时,推荐使用阿里云百炼的API调用方式快速体验。此方法仅需五分钟,提供100万免费Token,有效期至2025年7月26日。用户可通过注册阿里云账户、开通服务、创建API-Key、安装并配置ChatBox客户端等步骤轻松上手。测试结果显示,DeepSeek-R1在回答问题、解释数学概念及编写代码等方面表现优异。部署成本低、操作简便,是体验DeepSeek的理想选择。
DeepSeek-R1满血版上线阿里云,新用户专享100万token额度,5分钟快速部署!
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
DeepSeek R1 + LobeChat + Ollama:快速本地部署模型,创建个性化 AI 助手
3577 117
手把手教你使用 Ollama 和 LobeChat 快速本地部署 DeepSeek R1 模型,创建个性化 AI 助手
如何在通义灵码里用上DeepSeek-V3 和 DeepSeek-R1 满血版671B模型?
除了 AI 程序员的重磅上线外,近期通义灵码能力再升级全新上线模型选择功能,目前已经支持 Qwen2.5、DeepSeek-V3 和 R1系列模型,用户可以在 VSCode 和 JetBrains 里搜索并下载最新通义灵码插件,在输入框里选择模型,即可轻松切换模型。
1164 14
满血 DeepSeek 免费用?附联网搜索&prompt编写教程!暨第三方 API 平台全面横评
满血 DeepSeek 免费用!支持联网搜索!创作声明:真人攥写-非AI生成,Written-By-Human-Not-By-AI
1236 8
满血 DeepSeek 免费用?附联网搜索&prompt编写教程!暨第三方 API 平台全面横评

热门文章

最新文章