当你在使用 LDAP 目录为用户目录的时候,请考虑下面的一些限制和建议。
在你的 LDAP 目录中优化用户和用户组数量
连接 LDAP 服务器能为你的用户管理提供灵活高效的解决方案。为了达到优化的性能,后台同步程序将会从 LDAP 上查找和下载数据同步到你本地的 Confluence 服务器数据库上同时还会定时的更新数据以保持 Confluence 的数据与 LDAP 上的数据是一致的。
在对用户进行同步,拷贝,缓存的时候用户,用户组和用户组成员的数量将会决定系统同步所需要的时间。我们推荐最大用户的使用数量和同步方法在下面描述:
推荐影响连接的 LDAP 目录:
- Microsoft Active Directory
- 所有其他的 LDAP 目录服务器
下面的的 LDAP 配置不会对同步产生影响:
- 使用 LDAP 授权的内部目录
- LDAP 目录,但是配置为 仅用授权,用户第一次登录后拷贝用户(Authentication Only, Copy User On First Login)
基于你用户,用户组和用户组成员的数量,请选择下面的 LDAP 目录服务器配置解决方案。
你的环境 | 推荐配置 |
---|---|
最多 10,000 (一万)用户,1000(1千)用户组和每一个用户组中 20 个用户 | 选择 'LDAP' 或 'Microsoft Active Directory' 目录类型。你可以使用完全同步选项。你的 Confluence 应用将会把 LDAP 服务器上的数据完全复制保存到本地数据库中。 |
超过上面的配置 | 使用 LDAP 过滤器来减少 LDAP 用户和用户组数据同步的时候可见和下载的数据量。 |
我们的测试结果
我们对从我们内部网络中从 AD 服务器上同步 10,000 用户,1000 用户组和 200,000 的用户组成员进行了测试。
我们发现初始化同步将要花费大概 5 分钟。后续的增量同步,指对 AD 服务器上有修改的用户信息同步的话只需要几秒钟就可以完成了。
请注意,影响用户同步效率和时间的一些因素如下:
- 用户数量大小:使用 LDAP 过滤器来最小化的满足你的需求。
- LDAP 服务器类型: 我们支持在 AD 中修改的查找,所以后续同步使用 AD 的服务器将会明显快于使用 LDAP 的服务器。
- 网络技术情况:连接你 LDAP 服务器的网络情况越好,你的同步效率将会越高。
- 数据库性能: 正如我们所描述的,同步 LDAP 服务器用户信息等于在本地数据库中缓存 LDAP 用户信息,你的数据库性能将会影响整个同步的效率。
- JVM heap 大小: 如果你的 heap 大小被设置为过小的话,你的 Java 虚拟机将会在 LDAP 同步的时候进行大量的内存垃圾回收操作,这个将会影响你的同步性能。
不支持冗余(Redundant) LDAP
LDAP 连接不支持 2 个或者更多的 LDAP 冗余配置服务器(冗余配置服务器:当一个服务器宕机后,另一个服务器将会自动上线)。
有关 AD 的一些特殊说明
当应用程序对使用 Active Directory (AD) 的 LDAP 服务器进行同步的时候,同步的任务只对 LDAP 最近修改的数据进行同步而不是对整个数据库进行同步。因为是增量同步,在第一次完整同步完成后,后续的同步效率就非常高而且同步时间也非常短。
在另外一个方面,这个同步方法也会有一些限制:
- 从 Scope 外移动或者重命名对象将会在 AD 中导致问题:如果你从 AD 中移动对象到 scope 外,将会导致缓存和服务器上的用户数据不一致。我们不建议你使用外部 LDAP 目录界面来移动对象到 scope 外的子树。如果你对 LDAP 服务器进行了结构上的修改,我们建议你手动同步 LDAP 服务器来保持数据的完整性。
- 不支持在 AD 服务器之间同步:Microsoft Active Directory 在不同实例之间不会复制 uSNChanged 属性。基于这个原因,我们不支持在连接 AD 服务器之间进行同步(你可以定义多个 AD 服务器,然后在 Confluence 中配置多个 AD 服务器)。
- 不支持配置在负载均衡后的 AD 同步:针对 2 个不同的 AD 服务器,Microsoft Active Directory 在不同实例之间不会复制 uSNChanged 属性。基于这个原因 AD 服务器不能配置负载均衡,因为 2 个 AD 的实例的名字是不一样的。你可以在你本地配置一个 AD 服务器而避免使用负载均衡。
- 当你从备份中恢复 AD 后,你必须重启你的 Confluence 服务器: 在一个 AD 服务器的备份和恢复过程中,uSNChanged 时间戳将会被设置为备份的时间。为了避免冲突和混乱,你需要在 AD 服务器进行备份和恢复后刷新你本地 Confluence 服务器上的缓存。
- 获得 AD 删除的对象,你需要管理员权限:Active Directory 存储删除的对象在一个特殊的容器中,这个容器被称为 cn=Deleted 对象。在默认的情况下,访问这个对象,你需要具有管理员权限,因此在同步删除用户的时候,你也需要有管理员权限和管理员的用户名和密码才可以访问到。可选的是,你可以修改 cn=Deleted 对象容器的权限。如果你希望这这样做,请参考 this Microsoft KB article 中的文章。
- 连接 AD 使用的 DN 用户名必须具有查看 uSNChanged 属性的权限:同步任务依赖 uSNChanged 属性来找到相关的修改。因此你必须正确配置 AD 的安全用户组配置,来让这个属性能够在 LDAP 对象和子树中存在。