openldap适合大型生产部署吗?

在大约1年的时间里,我们一直在使用ubuntu 10.04LTS上的openldap来authentication大约20个IT用户,一切运行良好(LDAP服务器上的操作基本上局限于使用apache directory studio创build/删除用户)。

最近(6个月前),我们也开始实施openldap (openldap-2.4.21 / debian)作为我们网站的外部authentication系统,该系统正在从外部CMS迁移到我们正在开发的新平台Drupal CMS 。 我们有一个45K的用户数据库,事情一直没有顺利。 我们遇到的问题是:
– 备份恢复后,ldap崩溃,需要恢复 。
– ldap恢复工具无法恢复某些occassions上的ldap数据库
消耗100%的CPU,而在网站上没有validation活动。

由于内部缺乏资源和知识,所以我们到目前为止所做的一切就是find保持LDAP运行的方法,而不必真正调查这些问题(使用db_recover在崩溃时重新启动它, db_recover根据需要恢复数据库,以及slapcatdb_recover失败时重新创build数据库)。

最近我们进行了一轮采访,聘请了一名高级基础设施工程师来帮助我们完成各种各样的工作。 我们遇到的问题。 有几位候选人证实他们在大型生产环境中曾经或曾经听说过有关openldap问题,也从来没有想出一个单独的稳定的独立openldap服务器,而是必须提出冗余部署(复制,负载均衡,自动恢复/重启例程)来保持ldap运行。 有些候选人甚至认为openldap只是不适合生产环境,而是使用Novel eDirectory等替代品。

问:如果您有数千用户在生产环境中处理ldap的经验,您是否有共享的事实certificateopenldap确实对这样的设置不稳定,并且确实推荐使用其他ldap服务器?

我使用OpenLDAP,支持大约10,000名活跃用户的用户,他们全天都依赖它。 问题很less。 许多服务依赖于它,用于身份validation和其他事情。

但是,我们在负载均衡器后面有4个只读副本(从属/消费者),一个隐藏主节点和一个热备份主节点。 曾经是2台前端服务器,但是在某些高峰时段(当4000人左右的用户拼命试图在同一时间内),我们遇到了负载问题。 所有对LDAP的写入权限都是通过我们的代码。

那个设备和操作系统都是老的,我们正在用一个新的设置replace它,这个设置将会只返回到2个副本(那不是做太多其他的事情)和一对主机之间的“镜像模式”复制一个HAconfiguration。 再次,问题是罕见的。

我们以前有复制失败的一些问题,但这主要来自我们使用slurpd而不是syncrepl。 另外,服务器的不正常closures可能会破坏数据。

按照我的经验,在大规模生产环境中运行OpenLDAP的关键是:

  1. 好好理解LDAP和OpenLDAP的人。 最好不止一个人。
  2. 有人理解所有其他直接相关的基础设施部分。
  3. 了解OpenLDAP复制如何工作的人。
  4. BerkeleyDB选项 (或者你使用的任何后端)的合理理解,因为默认是不正确的。
  5. 高度可用的奴隶 。 超过1.更好:真正的负载平衡。
  6. **主动 – 被动主人(主动 – 主动主人复制本质上是棘手的)
  7. 我们每个小时将LDAP数据备份到LDIF,并在磁盘上保留几天的数据。 (整个服务器每晚备份一次)
  8. 我们有脚本来快速将一个破坏的奴隶带回到一个干净的当前数据副本
  9. 我们有脚本可以从LDIF备份(通过slapadd)快速恢复损坏的主服务器
  10. 我们可以快速切换到备用主站 。 (脚本)
  11. 我们监视复制连接是否有效
  12. 我们监视所有从站上的复制ID是最新的
  13. 我们监视(不经常)从机的全部内容与主机匹配。

但基本上,如果它是你基础设施的关键部分,那么你的团队中的某个人应该很好地理解它。

附录 :根据请求,从我的openldap数据库目录DB_CONFIG文件。 有关详细信息,请参阅http://docs.oracle.com/cd/E17076_02/html/api_reference/C/configuration_reference.html

 set_cachesize 0 536870912 1 set_flags DB_TXN_NOSYNC set_flags DB_TXN_WRITE_NOSYNC set_lg_regionmax 268435456 set_lg_max 536870912 set_lg_bsize 134217728