APP下载

高可用LDAP校园网统一身份认证设计与实现

2019-12-24倪叶青

价值工程 2019年35期
关键词:负载均衡

倪叶青

摘要:高校数字化校园网建设中,通过OpenLDAP实现用户信息、身份的统一存储、检索是统一身份认证的常见场景。由于高校用户数量多,用户并发数较大,需要考虑通过OpenLDAP的syncrepl同步机制实现数据统一,辅以相应acl安全设置,搭配前端nginx负载均衡等设备实现校园统一身份认证的高可用性服务。

Abstract: In the construction of digital campus network in colleges and universities, the unified storage and retrieval of user information and identity through OpenLDAP is a common scenario for unified identity authentication. Due to the large number of college users and the large number of concurrent users, it is necessary to consider to realize data synchronization through the syncrepl synchronization mechanism of OpenLDAP, supplemented by the corresponding acl security settings, and realize the high-availability service for campus unified identity authentication with devices such as front-end nginx load balancing.

关键词:OpenLDAP;高可用;syncrepl;负载均衡

Key words: OpenLDAP;high availability;syncrepl;load balancing

中图分类号:TP202                                        文献标识码:A                                  文章编号:1006-4311(2019)35-0284-03

0  引言

在目前高校数字化校园网建设中,统一身份认证已经成为了必不可少的基础服务之一,实现用户信息、密码、身份的统一存储、统一检索、统一管理是统一身份认证的基本功能要求。使用轻量目录访问协议(LDAP:Light Directory Access Protocol)产品提供的目录服务实现统一身份认证服务是大家的常用选择,而OpenLDAP就是其中之一。

1  OpenLDAP簡介

LDAP是由密歇根大学研发的一种的目录访问协议,其中数据以对象(Object)目录方式组织,对象由可视为键、值对映射关系的属性(attribute)信息组成。LDAP服务具有远高于关系数据库的数据查询性能,但写入性能较差,修改操作也不支持事务机制,所以LDAP服务更适合具有大量数据读取、查询操作,而写操作较少的业务场景。

LDAP具有X.500和LDAP两个标准,其典型产品包括OpenLDAP、MicroSoft AD,ApacheDS等;其中OpenLDAP是一种基于X.500标准并支持TCP/IP网络协议的开源软件实现。

目前OpenLDAP2.4默认后端服务器已经修改为MDB(Memory-Mapped Database,内存映射数据库),用户也可使用传统的Berkeley DB,甚至Mysql等传统关系数据库。其支持的操作主要有查询操作(ldapsearch),更新操作(ldapupdate),增加操作(ldapadd),删除操作(ldapdelte)等。

在OpenLDAP2.4版本中,默认支持配置数据库(cn=config)进行动态配置,也可通过传统的配置(slapd.conf)文件方式进行配置。

2  OpenLDAP同步模式

OpenLDAP目前采用syncrepl作为同步复制引擎。Syncrepl以slapd线程形式常驻消费者进程中,使消费者LDAP服务器保持有DIT片段(目录信息树)影子拷贝,使用LDAP内容同步协议(LDAP Content Synchronization protocol)作为服务器之间数据传输协议定期或根据更新下拉目录树内容来保持LDAP数据的同步。

LDAP内容同步协议(RFC4533)采用refreshOnly(刷新)和refreshAndPersist(刷新并保持)两种同步机制,两种同步机制均由客户端服务器发起请求,所不同的是同步完成后进行的操作。在refreshOnly机制,消费者服务器(客户端)采用拉(pull)模式同步,相关请求信息不必维护和跟踪,通过请求本身的cookie来实现同步。在refreshAndPersist机制,生产者服务器(服务端)采用推(push)模式同步,服务端维护对请求了一个持久性搜索的而消费者服务器的跟踪,并且当提供者复制内容修改的时候向他们发生必要的更新,服务端负责发送相应的改变数据,而客户端负责接受并处理本地ldap条目。Cookie是服务端计算(查询本地条目)的依据,在每种模式中,都涉及到如何计算数据的变化,包括:添加的数据、修改的数据以及删除的数据。Ldap的每个条目包含了时间信息,包括生成时间戳(createTimestamp)和修改时间戳(modifyTimestamp)。对于添加和修改的数据,服务端根据客户端传送来的cookie(包含时间信息)计算得到,并将这些条目信息与客户端进行同步。

OpenLDAP服务器间要实现同步,首要要实现6点基本要求:①OpenLDAP服务器之间要求保持时间同步。②服务器上安装的OpenLDAP软件包版本要求一致。③各OpenLDAP服务节点之间域名可互相解析。④各OpenLDAP服务器需提供相同的配置及DIT(目录信息树)信息。⑤各OpenLDAP服务器数据条目需保持一致。⑥各服务器上Schema文件需保持一致。

OpenLDAP 2.4版本目前主要拥有5种同步模式。

①Syncrepl同步(全量)复制模式。Syncrepl同步模式下slave(从)服务器将以pull(拉)模式从master(主)服务器同步目录树。当主服务器中某些条目修改属性时,从服务器会整体同步这些条目,修改所有条目信息。

②Delta-syncrepl replication 基于日志(增量)同步模式。相对Syncrepl全量同步模式带来的低效问题,通过基于changelog日志同步,从服务器可根据日志进行相应的修改操作,在保证主服务器与从服务器数据一致的同时,提高数据同步效率,减少同步资源消耗。这种同步模式下,对服务器main DB和changelog DB都要做好备份、恢复工作,以保证数据一致性。

③N-Way Multi-Master replication 多主多路同步模式。N-Way Multi-Master replication实现了多台主(master)服务器之间进行LDAP目录信息树同步的目标,服务器可部署在不同网络,实现高可用性的LDAP服务器,进行故障切换,更好的提供了LDAP服务器冗余性,避免了单点故障。

④MirrorMode replication 镜像同步模式。镜像同步模式实现多服务器间的高可用性和单台主服务器持续保证服务的混合配置,可视作为双机热备工作模式。镜像同步模式最多只允许两台主服务之间互相以push(推)模式进行数目录树同步,通过前端服务器的切换,当一台主服务器发生故障时,另一台服务器可即时切换,但同时只会对一台服务器进行写操作,故不能视为多主机模式。本文以此为例介绍OpenLDAP服务器间的同步。(图3)

⑤Syncrepl Proxy Mode 代理同步模式。代理同步模式用来替代传统的slurpd同步机制,解决了需要人为干涉同步数据不一致的问题,解决了在增加节点时需要停机的问题等。

3  OpenLDAP的负载均衡实现

OpenLDAP目前采用syncrepl实现了服务器之间的目录树信息同步,提供了服务的高可用性,但不管是N-Way Multi-Master replication 多主多路同步模式还是MirrorMode replication 镜像同步模式,均还需要前端负载均衡服务配合,以实现真正的性能拓展。

本文以nginx作为负载均衡服务器,以keepalived作为状态监测服务器进行示例说明;如条件允许,也可以使用LVS或F5硬件负载均衡设备进行相应配置。

nginx.conf配置文件说明:

Keepalived配置文件说明:

4  OpenLDAP的安全设置等相关配置

作为学校统一身份认证基础设施的OpenLDAP服务,存有大量师生用户的敏感信息,由于使用户面广,对接应用系统众多,必须重视OpenLDAP服务的安全防护工作。首先必须对OpenLDAP服务器管理员账号和密码进行修改,并保证足够的密码强壮度,并且一定要以密文形式进行保持和传输。

其次由于LDAP往往对接了很多信息化应用系统,难于按理想要求进行定期密码修改,故需要进行通过ACL列表等方式进行安全控制。如:

通过该设置,就限制了只有本机和192.168.0.0/24地址段的用户可对rootdn进行访问。同时配合防火墙等安全设备控制,提供LDAP校园网统一身份认证的高可用安全服务。

参考文献:

[1]OpenLDAP Software 2.4 Administrator's Guide. [EB/OL]. http://www.openldap.org.

[2]郭大勇.Linux/UNIX OpenLDAP實战指南[M].北京:人民邮电出版社,2016:174-227.

[3]章松,刘春波.基于LDAP的高可用目录服务器的设计与实现.[J]软件,2015,36(12):146-148,157.

猜你喜欢

负载均衡
异构环境下改进的LATE调度算法