设为首页 友情链接
在线留言 发表文章
加入收藏 广告联系

刺猬首页

| 专案技术 | 网络技术 | 图形图象 | 网络编程 | 网页设计 | 操作系统 | 服务器 | 技术白皮书 | 在线实验室 | 刺猬论坛 |
小说专版  | 数据库 | 设计赏析 | 存储频道 | 网络安全 | 私服架设 |  Solaris | 网站评估 | PC维护技巧 | 下载中心 | 博 客 |
专   题: | Linux | java | cisco | 防病毒 | 刀片 | SOA | iscsi | ASP.NET | SQL | Oracle |
您现在的位置: IT公社 IT community >> Linux专题 >> 企业应用 >> 教程正文 用户登录 新用户注册
专 题 栏 目
最 新 热 门
最 新 推 荐
相 关 文 章
Linux和Windows两个世界…
Linux与Windows在十三方…
Linux正在走向与Microso…
Linux操作系统硬件稳定性…
Linux操作系统硬件稳定性…
Linux与Win2000两系统的…
关于Linux系统可靠性的技…
对中国Linux标准战略与战…
廉价的超级计算--集群 L…
Redhat Linux 虚拟化技术…
  应用Linux上的 OpenLDAP集群 (1)           
应用Linux上的 OpenLDAP集群 (1)
 

nbsp;   Linux服务器具有低成本、性能卓越、代码开放等特性。越来越多的企业正在准备或已经采用Linux担起了企业应用服务器的重任。本文要介绍的是笔者在实际工作中,采用Linux和其它开放套件共同部署高可靠性LDAP认证服务的实例。

    系统所要用到的软件包括:
    ◆ Red Hat 7.2;
    ◆ OpenLDAP 2.1,www.openldap.org;
    ◆ Heartbeat 1.04,www.linux-ha.org。

    合理的流程提供高可靠性

    OpenLDAP在该系统的网络应用体系中用于对所有应用提供统一的身份认证服务,还包括如邮件路由、地址、联系人信息等其它信息的查询。LDAP作为一种特殊的数据库,通过对读取、查询操作进行特别的优化和处理,以保证在查询速度方面的优势,所以特别适合用来统一企业的各种认证服务,从而规范各种业务系统的同一登录身份和口令。当然,它的缺点和优点一样明显,比如不善于update、insert等操作,但是如果把它作为中央认证数据库,则正好可以利用它的长处而回避它的弱点。

    由于系统采用了LDAP作为所有应用的中央认证数据库,一旦该LDAP服务器失效,则系统网络环境中所有依赖于该数据库的应用都会受到影响,甚至停止提供相应的服务。为了避免这种情况的发生,就要通过两台LDAP服务器建立一个高可靠性的认证数据库集群,同时对其它应用系统提供统一的数据库访问网络接口。系统网络结构图如图1。


图1 系统网络结构图

    从图1可以看到,整个系统分为三层:应用服务器、数据库中间引擎和OpenLDAP数据库集群。所有的应用服务器通过数据库中间引擎(midd)来访问192.168.1.200,并通过这一统一的数据库网络接口来访问LDAP数据库。对于系统的要求是,正常情况下master服务器(192.168.1.100)绑定在192.168.1.200上提供服务,slave服务器处于备机状态,一旦master发生故障,slave能够自动接管任务,同时通过某种通信方式通知系统管理员(如邮件、手机短信)。

    这里,midd数据库中间引擎是根据需要编写的一个简单工具,使用它要达到以下几个目的:
    ◆ 统一应用服务器上的应用程序访问各种数据库的接口。例如,以后有可能将后台的LDAP数据库换为其它数据库,如Oracle等,这时只需要更改midd的配置文件,而不需要对应用程序进行任何更改。
    ◆ 通过采用进程池的方式来提供应用程序的查询速度。midd能通过对前端应用程序的访问负载,自动调节进程池的进程数量。同时进程池中的每个进程和后台的LDAP数据库保持一个长连接,这样可以避免一般条件下每次查询都要开一个连接的资源浪费和延时。
    ◆ 每个应用服务器上都部署一个midd。这样应用程序每次请求的时候都是通过本地IPC与midd进行通信,避免了TCP方式连接的开销。
    ◆ midd在两台LDAP数据库active-active模式下的应用模式。midd根据启动时的参数能够自动区别读、写请求,会将写请求分配到Master LDAP数据库上,这是由于Slave LDAP数据库只能进行读操作。在整个网络负载大、两台LDAP数据库同时提供服务的情况下,使用midd的这一模式,可以避免Slave LDAP数据库不能更改数据导致两台服务器不能保持数据同步的问题。

    根据以上流程的要求,系统必须解决两个问题,首先是由于作为LDAP数据库的两台服务器并没有实现存储共享,因此要求master和slave两台数据库服务器的数据必须实时同步,才能保证一旦slave接管任务后能够提供完整的服务。其次,master和slave必须能够实时检测对方的健康状态,一旦发现对方有故障,自己能够接管各种任务,包括切换虚拟IP地址、LDAP服务(变为主LDAP服务,意味着其能对写进行操作,从而要求master服务器恢复后必须先和slave进行一次数据同步),以及通过rsh方式来执行其它远程应用服务器上的midd启动模式(在active-active模式下)。

    下面就将解决以上数据同步和任务接管两个问题。

    主、从LDAP服务器的数据同步

    OpenLDAP本身提供了一种复制机制来保证网络上主、从节点之间的数据同步。slurpd守护程序实现了这一功能,它通过定期活动检查主服务器master上的日志文件,检查master上的数据是否有更新。如果有更新,那么把更新的数据传递到各个从服务器。读(查询)请求可以由LDAP数据群中的任一服务器应答,但写操作(update、insert)只能在主服务器master上进行,这就是为什么midd数据库中间引擎必须采用不同的启动模式来处理读写的原因。

    下面主要说明主、从LDAP服务器的配置过程。有关OpenLDAP的安装过程可以查看http://www.openldap.org上的安装文档,本文不再赘述。将OpenLDAP安装到两台服务器上,并对它们分别进行主、从配置。

    1.主LDAP服务器(master)上的配置文件如下,这是一个简单的配置例子。
    配置文件名:slapd.conf
    文件内容:

include  /Opt/LDAP/etc/openldap/schema/core.schema
include  /Opt/LDAP/etc/openldap/schema/corba.schema
include  /Opt/LDAP/etc/openldap/schema/cosine.schema
include  /Opt/LDAP/etc/openldap/schema/inetorgperson.schema
include  /Opt/LDAP/etc/openldap/schema/java.schema
include  /Opt/LDAP/etc/openldap/schema/nis.schema
include  /Opt/LDAP/etc/openldap/schema/misc.schema
include  /Opt/LDAP/etc/openldap/schema/mail.schema
include  /Opt/LDAP/etc/openldap/schema/openldap.schema
access to *
        by self write
        by dn.base="cn=Manager,dc=yourdomain,dc=com" write
        by * read
pidfile  /Opt/LDAP/var/slapd.pid
argsfile /Opt/LDAP/var/slapd.args
# ldbm database definitions
#database bdb
database  ldbm
suffix    "dc=yourdomain,dc=com"
rootdn    "cn=Manager,dc=yourdomain,dc=com"
# Cleartext passwords, especially for the rootdn, should
# be avoid. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw    test
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd/tools. Mode 700 recommended.
replogfile /Opt/LDAP/var/slapd.replog
directory  /Opt/LDAP/var/ldbm
# Indices to maintain
access to attr=userPassword
        by self write
        by anonymous auth
        by dn.base="cn=Manager,dc=yourdomain,dc=com" write
        by * none
access to *
        by self write
        by dn.base="cn=Manager,dc=yourdomain,dc=com" write
        by * node
index   objectClass  eq
replica host=slave:389
        binddn="cn=Manager,dc=yourdomain,dc=com"
        bindmethod=simple credentials=test

    2.从LDAP服务器(slave)上的配置文件。
    配置文件名:slapd.conf

    文件内容:

include  /Opt/LDAP/etc/openldap/schema/core.schema
include  /Opt/LDAP/etc/openldap/schema/corba.schema
include  /Opt/LDAP/etc/openldap/schema/cosine.schema
include  /Opt/LDAP/etc/openldap/schema/inetorgperson.schema
include  /Opt/LDAP/etc/openldap/schema/java.schema
include  /Opt/LDAP/etc/openldap/schema/nis.schema
include  /Opt/LDAP/etc/openldap/schema/misc.schema
include  /Opt/LDAP/etc/openldap/schema/mail.schema
include  /Opt/LDAP/etc/openldap/schema/openldap.schema
access to *
        by self write
        by dn.base="cn=Manager,dc=yourdomain,dc=com" write
        by * read
pidfile  /Opt/LDAP/var/slapd.pid
argsfile /Opt/LDAP/var/slapd.args
# ldbm database definitions
#database bdb
database  ldbm
suffix    "dc=yourdomain,dc=com"
rootdn    "cn=Manager,dc=yourdomain,dc=com"
rootpw    test
#replogfile /Opt/LDAP/var/slapd.replog
directory   /Opt/LDAP/var/ldbm
access to attr=userPassword
        by self write
        by anonymous auth
        by dn.base="cn=Manager,dc=yourdomain,dc=com" write
        by * none
access to *
        by self write
        by dn.base="cn=Manager,dc=yourdomain,dc=com" write
        by * read
index   objectClass  eq
access to *
        by self read
        by dn="cn=Manager,dc=yourdomain,dc=com" write
        by * none
updatedn "cn=Manager,dc=yourdomain,dc=com"

    分别对主、从LDAP数据库进行配置后,初始化主LDAP数据库中的数据,可以利用OpenLDAP本身提供的工具完成。

    3.数据同步。
    在运行主、从模式前,必须先将主、从LDAP服务器上的数据同步。可以通过把master上的数据文件(本例中是ldbm目录下的所有文件)直接拷贝到从LDAP服务器上,实现节点数据的完全一致。

    4.启动服务
    分别启动服务,测试数据的同步是否有效。先启动主LDAP服务器上的两个进程:
    #/opt/LDAP/libexec/slapd -f /opt/LDAP/etc/openldap/slapd.conf -d 5 > /dev/null 2>&1 &
    #/opt/LDAP/libexec/slurpd -f /opt/LDAP/etc/openldap/slapd.conf -d 5 > /dev/null 2>&1 &

    然后启动从LDAP服务器上的进程:
    #/opt/LDAP/libexec/slapd -f /opt/LDAP/etc/openldap/slapd.conf -d 5 > /dev/null 2>&1 &

    对主LDAP服务器上的数据进行各种更新操作,包括增加、删除、修改等动作,然后在从LDAP服务器上查看数据是否保持与主LDAP服务器同步更新。通过以上测试,主、从LDAP数据库服务器已经达到了数据同步复制的效果。

    使用Heartbeat实现自动检测和任务接管

    1.Linux下HA软件简要介绍

    (1)The High Availability Linux Project
    其Heartbeat软件不仅可以作为高可靠性的HA软件独立使用,也可以配合其它IP分发器做Balancing Cluster应用。参见http://www.linux-ha.org。

    (2)Lifekeeper
    Lifekeeper是一款著名的高可靠性软件,能支持32个节点的应用,支持Linux、x86 Solaris和Windows等操作系统。参见http://oss.missioncriticallinux.com/projects/kimberlite。

    (3)SRRD
    SRRD(Service Routing Redundancy Daemon),支持PKI、SSL的通信认证。参见http://srrd.org/。

    这里选择Linux-HA提供的Heartbeat HA软件来实现该系统的高可靠性,软件名Heartbeat,当前最新版本为1.2。Heartbeat通过监控几个节点的状态来进行管理操作,监控方式支持串行线和以太网作为媒介的通信,这里使用以太网链路。在集群中的每个节点运行一个守护程序进程,名为heartbeat。主守护程序派生子进程,以对每个heartbeat媒介进行读写,并派生状态进程。当检测到节点终止时,heartbeat运行Shell脚本实现资源任务的切换和接管,从而保证了整个系统的高可靠性。

    2.下载安装Heartbeat
    可以从http://www.linux-ha.org/download/下载最新的安装包,包括src和rpm。本例下载了heartbeat-1.0.4.tar.gz包进行安装,具体操作如下:

#./configure -prefix=/opt/ha
#make
#make install

    在此过程中,系统可能会提醒安装其它依赖软件包,比如libnet等,按照提示进行下载安装即可。安装完成后在/opt/ha目录下将产生相关子目录。进入/opt/ha/etc/ha.d,在该目录下创建以下文件:ha.cf、authkeys、haresources、myexec。

    3.master配置说明:

    (1)ha.cf

logfile /var/log/ha-log
logfacility     local0
keepalive 2
deadtime 30
warntime 10
initdead 120
ucast eth0 192.168.1.101
nice_failback  on//保证slave变为master后,
即使master恢复启动服务也不转移,从而保证LDAP数据同步。
node master
node slave

    (2)authkeys
    auth 3
    3 md5 test

&nb

[1] [2] 下一页

频道声明:本频道的文章除部分特别声明禁止转载的专稿外,可以自由转载.但请务必注明出出处和原始作者 文章版权归本频道与文章作者所有.对于被频道转载文章的个人和网站,我们表示深深的谢意。

原始作者:佚名 录入时间:2007-1-2 20:31:52
信息来源:不详 投稿信箱:itqoo@126.com
教程录入:itqoo    责任编辑:itqoo 
  • 上一个教程:

  • 下一个教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    - 关于我们 - 合作伙伴 - 友情链接 - 广告刊登 - 投稿热线 - 在线留言版权声明联系方式 -
    IT公社版权所有 粤ICP备05127012号
    Copyrigh@2005-2006 itqoo.com.Inc All Rights Reserved  推荐分辨率 1024*768
    联系站长:E-Mail:itqoo@126.com     MSN:urchincc@hotmail.com    QQ:点击这里给我发消息
    特别感谢:亿太网络提供空间支持