目 录CONTENT

文章目录

OpenLDAP高可用

简中仙
2023-05-25 / 0 评论 / 1 点赞 / 121 阅读 / 0 字 / 正在检测是否收录...
温馨提示:
本文最后更新于2024-01-03,若内容或图片失效,请留言反馈。 本文如有错误或者侵权的地方,欢迎您批评指正!

一、OpenLDAP的高可用

OpenLDAP的高可用可以通过多种方式实现

主从同步(Master-Slave Synchronization):在主从同步模式下,主服务器负责处理所有写操作,并将这些操作复制到从服务器。从服务器仅处理读操作,并保持与主服务器的数据同步。为了实现主从同步,您需要确保主服务器和从服务器的OpenLDAP配置完全一致,包括目录结构、条目和权限等。您还需要在主服务器上配置适当的复制规则和过滤器,以指定哪些数据需要复制到从服务器。

双主镜像(Dual-Master Replication):在双主镜像模式下,两个服务器都配置为主服务器,并且它们之间相互复制数据。当一个服务器出现故障时,另一个服务器可以继续提供服务,并且数据仍然保持一致。为了实现双主镜像模式,您需要确保两个服务器的OpenLDAP配置完全一致,并配置适当的复制规则和过滤器。此外,您还需要使用一种负载均衡机制来将客户端请求分发到两个服务器上,例如使用NGINX+keepalived。

OpenLDAP 不管是主从同步还是双主镜像模式都需要满足以下六点

  • OpenLDAP 服务器之间要保持时间同步
  • OpenLDAP 软件包版本保持一致
  • OpenLDAP 节点之间域名可以相互解析
  • 配置OpenLDAP 同步复制,需要提供完全一样的配置及目录树信息
  • 数据条目保持一致
  • 额外的schema文件保持一致

二、主从同步

1、主节点配置

添加syncprov模块

cat >mod_syncprov.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 mod_syncprov.ldif

生成syncprov.ldif 文件

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

注:

  • olcSpCheckpoint: 100 10 表示同步的满足条件,当满足修改100个条目或者1分钟主动进行推送一次;
  • olcSpSessionLog: 100 会话日志条目的最大数量
ldapadd -Y EXTERNAL -H ldapi:/// -f mod_syncprov.ldif

2、从节点配置

生成syncrepl.ldif 文件

cat > syncrepl.ldif<< EOF
dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://192.168.1.10:389/
  bindmethod=simple
  binddn="cn=admin,dc=daemon,dc=com"
  credentials=Admin@123#!
  searchbase="dc=daemon,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="5 5 300 +"
  attrs="*,+"
  interval=00:00:00:3
EOF 
参数说明
providerldap master的地址
bindmethod加密方式
binddn为域的基本信息,注这里一定要用管理员进行登录,否则同步不到用户的密码
credentialsldap管理员的密码
searchbase选择要同步的独立域,根节点
scope设置所有的条目匹配,这里是子树
schemachecking启用模式检查
type同步模式为refreshAndPersist, refreshOnly 模式下后续操作由客户端轮询完成
retry指定重试的时间间隔,这里是5分钟内重试5次,300秒后继续尝试
attrs指定要同步的属性,这里是所有属性(+表示包括 operational 和结构性属性)
interval指定同步的时间间隔,这里是每3秒同步一次,倒数第二个是分钟以此类推

导入配置

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

三、双主镜像

1、第一主节点

添加syncprov模块

cat >mod_syncprov.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 mod_syncprov.ldif

生成syncprov.ldif 文件

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

开启镜像同步

cat > syncrepl.ldif<< EOF
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 0

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://192.168.1.10:389
  bindmethod=simple
  binddn="cn=admin,dc=daemon,dc=com"
  credentials=Admin@123#!
  searchbase="dc=daemon,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="5 5 300 +"
  interval=00:00:00:3
-
add: olcMirrorMode
olcMirrorMode: TRUE

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

导入配置

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

2、第二主节点

添加syncprov模块

cat >mod_syncprov.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 mod_syncprov.ldif

生成syncprov.ldif 文件

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

开启镜像同步

cat > syncrepl.ldif<< EOF
dn: cn=config
changetype: modify
replace: olcServerID
olcServerID: 1

dn: olcDatabase={2}hdb,cn=config
changetype: modify
add: olcSyncRepl
olcSyncRepl: rid=001
  provider=ldap://192.168.1.20:389
  bindmethod=simple
  binddn="cn=admin,dc=daemon,dc=com"
  credentials=Admin@123#!
  searchbase="dc=daemon,dc=com"
  scope=sub
  schemachecking=on
  type=refreshAndPersist
  retry="5 5 300 +"
  interval=00:00:00:3
-
add: olcMirrorMode
olcMirrorMode: TRUE

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

导入配置

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

评论区