一、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
参数 | 说明 |
---|---|
provider | ldap master的地址 |
bindmethod | 加密方式 |
binddn | 为域的基本信息,注这里一定要用管理员进行登录,否则同步不到用户的密码 |
credentials | ldap管理员的密码 |
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
评论区