|
前言
在众多大型企业、网络公司和ISP常会见到使用大规模的目录服务提供用户的入网验证与授权。这些服务依赖于LDAP协议,对LDAP服务端的性能、可用性和可靠性方面提出了较高要求。如何提升LDAP服务系统的整体性能,减小故障率提高可用性,避免数据丢失和系统宕机带来巨大损失,建设出能够支撑大规模目录服务的应用系统,是很多大型企业所需要的。
而MySQL集群具有响应时间快(毫秒级)、吞吐量大(每秒数万个事务以上)、优异的可靠性(亚秒级的自动快速故障切换)、良好的可扩展性(可在线扩充节点)等特点,非常适合LDAP的应用。
下面通过上海爱可生信息技术有限公司的一个实际案例来介绍下使用MySQL Cluster结合OpenLDAP实现高性能、高可用性和可靠性,具有灵活扩展能力的目录服务系统架构。
用户需求
北京歌华有线电视网络股份有限公司是北京最大的数字电视网络服务商,08年时歌华有线的数字电视用户已经拥有160多万,近两年的发展目前数字电视用户已经超过200万户。数字电视机顶盒在每次启动时都会验证用户信息,验证方式就是使用LDAP服务实现的,目前的LDAP目录服务系统已较难承载现有业务,而随着未来数字电视的快速普及未来数字电视用户会有大幅的增加,更无法对未来的用户增加而灵活的扩展系统资源以提升性能和可靠性。因此,歌华有线需要对现有的LDAP目录服务系统进行升级改造。
主要需求如下:
- 系统全年不间断运行,具有高可靠可用性,实时支持其在线业务;
- 系统具有大容量高负荷支撑能力,当性能达到系统瓶颈时,可以灵活的水平扩展;
- 从架构上解决高可用和负载均衡的问题,系统需稳定高效地支持大并发写操作;
- 系统能够支撑并发访问量1000+个每秒
- 系统设计支持数据存储数量5000+万条。
原有架构模式(BDB+OpenLDAP)

图1、原有架构方式
原有架构采用OpenLDAP主从复制的方式,后端数据库采用BDB。应用程序的LDAP请求首先发送给slave主机,Write请求通过updateref机制更新到master主机,再通过Replication机制使写回slave。
原有架构特点:
1、每台数据库主机必须有完整的数据,每台数据库主机都要处理每一个update操作,极大的增加了update的开销。
2、BDB是嵌入式数据库特点是小巧、快速、高性能,但扩展能力较弱,限制系统整体的扩展性。
3、OpenLDAP replicas机制灵活性差,multi-master和mirror模式,虽解决了单点故障,但结构复杂,节点直接同步开销较大,不适合大规模的目录服务。
上海爱可生信息技术有限公司按照歌华有线的需求为其制定了以MySQL Clusert为后端数据库,具有高性能、高可用和高可靠的且快速灵活扩展的解决方案。
新架构模式(MySQL Cluster+OpenLDAP)
MySQL Cluster是share-nothing式的内存数据库。通过使用无单点故障的并行服务器架构来提供超值的99.999%的高可用性,提供高性能和高吞吐量,可根据应用的成长需要,以线性方式逐步扩展应用的规模,而不必投资于昂贵的硬件,它具有一个灵活的分布式体系结构,它在性能、可靠性和安全性上达到了完美的平衡。
新的架构后端采用MySQL Cluster存储数据的容器,通过OpenLDAP提供的ndb-backend与数据库交互存取数据,每一个OpenLDAP服务器实例都作为MySQL Cluster的一个API节点与MySQLCluster紧密结合;MySQL Cluster中的数据节点和OpenLDAP服务器节点都可以无缝线性增加以提供更强劲的性能和更大的容量。前端通过负载均衡技术(F5、LVS等)将LDAP请求按照一定的算法转发到后端的OpenLDAP服务器上进行处理,对于应用来说是透明的无需关心LDAP服务层的扩展大大降低维护成本。通过MySQL Cluster的复制(replication)技术,可以在MySQL Cluster中增加一个SQL节点作为master,将数据复制到使用InnoDB存储引擎的单机版MySQL(slave)中,可以在slave服务器上提供异地容灾备份服务和复杂的统计查询服务以减少MySQLCluster的业务负载。

图2、新架构方式
新架构特点:
1、MySQL Cluster的NDB存储引擎,将数据分组存放在多台数据节点上,提高了数据的安全性,内存式数据库的设计大幅增强了数据存储的性能。
2、使用MySQL Cluster作为数据存储层,可以保证系统不停机的情况下任意增加节点,以提升系统性能和扩容,扩展性极其灵活。
3、应用层与数据层的分离,也有更有效的减轻应用层的数据存储负担,全力处理用户请求,并且能灵活进行水平扩展。
两种架构对比测试
我们对两种架构在响应时间和请求处理能力上进行了压力测试,结果如下:

图3、响应时间压力测试对比
从图中可以看出,使用MySQL Cluster的响应时间基本在ms级别,要明显优于BDB。

图4、请求处理压力测试对比
从图中可以看出,使用MySQL Cluster的架构在请求处理上比原架构有明显提高。当超过750并发连接之后,OpenLDAP(bdb-backend)请求处理能力明显下降,而使用MySQL Cluster (ndb-backend),在1000并发连接下依然能能到700左右的请求处理能力。
由此可以看出,将OpenLDAP的数据库由BDB换成MySQL Cluster的NDB,在性能上有大幅的提升,除此之外在系统整体的扩展性、可用性和可靠性方面都有明显的优势,这主要取决于MySQL Cluster高性能、高可用、高可靠的技术特点,对于大规模的数据库需求它能够轻松胜任。
未来展望
有了MySQL Cluster作为数据层的可靠支撑,解决了数据层的性能和扩展性的问题,通过开放的NDB API就能实现多种大规模的应用,OpenLDAP只是一种。MySQL Cluster作为强大灵活的完全无共享的分布式数据库系统,上海爱可生信息技术有限公司将为客户提供更加丰富的基于MySQL Cluster的大规模应用环境的解决方案。
本文版权归上海爱可生信息技术有限公司,转载请保留原文链接:http://www.actionsky.com/more/mysqlcluster-ldap/index.jsp
|