一种基于ldap的分布式的集群管理监控系统的制作方法

文档序号:7684151阅读:160来源:国知局

专利名称::一种基于ldap的分布式的集群管理监控系统的制作方法
技术领域
:本发明涉及集群管理监控系统,特别涉及集群管理监控系统的数据组织方式和各模块间的通信方式。技术背景目前多数集群管理监控系统都是采用的C/S结构一即客户端、服务端和后台数据库,由服务端收集所有被控节点的信息并保存在后台数据库中。采用这种结构的缺点是所有节点共享一个数据库,导致节点的独立性较低,而且当节点数目很大时会增加数据库节点的负担。再者,当采用RMI来进行节点间通信时,必须为每个节点都开启RMI服务,这都会导致系统稳定性不高。
发明内容本发明的目的是实现一种基于LDAP的分布式的集群管理监控系统。为实现上述目的,本系统包括一个管理端和多个被管理端。管理端和被管理端都维护一个倒立的树,树的每个节点都代表一类信息。每个节点都有相对标识和绝对标识,类似Unix文件系统中的文件名和绝对路径,节点的绝对标识就是相对标识加上父亲节点的绝对标识。节点的信息采用"属性-值"对的形式表示,一个属性可以对应一个值也可以对应多个值。管理端子树主要用于保存和系统运行有关的配置信息。利用LDAP分布式应用中的referral对象和ref属性,在管理端子树中建立指向各被管理端子树的索引叶子节点,如图1所示。管理端和被管理端对应节点的绝对标识是一样的,被管理端的节点除了标识名以外和管理端可以没有任何关系,如图2所示为被管理端子树的结构。建立了这种关联以后,当管理端需要访问被管理端数据时,referral节点将会重定向到对应的被管理节点,如图3所示为整个系统表现出来的树型结构。加载LDAP的Javaschema,使LDAP可以保存JavaRMI对象,通过JNDI将对象和对应节点绑定。知道节点的绝对标识就可以获得对象。开源软件OPENLADP完全支持这种结构。本发明的优点是,本发明提供了一种基于LDAP的分布式的集群管理监控系统,该系统能够使节点间的关联性降到最低,使用LDAP代替RMI来保持系统的一致性,同时,系统采用人们更容易理解的"属性-值"对的方式来表示节点的信息。图1是管理端实际的目录树结构图;图2是被管理实际的目录树结构图;图3是系统最终表现出来的目录树结构图。具体实施方式本发明提供了一种基于LDAP的分布式的集群管理监控系统,该系统建立在0PENLDAP、JNDI和RMI的基础上。下面结合附图和实施例,对本发明作以下详细说明。一、管理端配置a)安装OPENLDAP,从www.openldap.org下载最新的OPENLDAP软件包。b)找到配置文件slapd.conf,作如下修改在include./schema/core,schema这行后面添力口新行,包含所有的方案,其中就是对Java对象绑定的支持Java,schemainclude./schema/corba.schemainclude./schema/cosine,schemainclude./schema/inetorgperson.schemainclude./schema/Java,schemainclude./schema/krb5-kdc.schemainclude./schema/misc.schemainclude./schema/nadf.schemainclude./schema/nis.schemainclude./schema/openld邻.schemac)对配置文件slapd.conf的"BDBdatabasedefinitions"部分更改相应的修改默认内容databasebdb〃实际存储数据的数据库,不用修改suffix〃dc=domain,dc=com〃〃树的根节点标识名rootdn"cn=Manager,dc二domain,dc二com7/管理员账号,具有所有权限rootpwsecret〃管理员密石马主要修改suffix适合自己的树,如图1所示,根节点的标识名为"dc二inspur,dc=com,,,禾目应地,修改roodn为"cn=Manager,dc=inspur,dc=com,,,修改后的内容为databasebdbsuffix"dc=inspur,dc=com"rootdn〃cn=Marmger,dc=inspur,dc=com〃rootpwsecret接下来为目录树添加节点信息,上述只是配置了根节点,要使根节点有效,还要为根节点添加"属性-值"序列,同时按照附图1定义子节点和对应的属性,一并写入目录树中。这可以通过以ldif为后缀的任何文件实现,对于附图l,编辑test.ldif文件,写入以下内容〃写如根节点dn:dc二domain,dc=com//表不名〃属性序列dc:domaindescription:www.inspur.comobjectClass:dc0bjectobjectClass:organizationo:inspur〃子节点nodel的索引dn:hostname=nodel,dc=domain,dc=comhostname:nodelobjectClass:refermlobjectClass:extensibleObjectref:loda:〃10.152.11.99〃子节点node2的索引dn:hostname=node2,dc=domain,dc=comhostname:node2objectClass:referralobjectClass:extensibleObjectref:loda:〃10.152.11.101d)启动slapd进程,测试0PENLDAP是否正常运行,运行下面的命令检查ld邻search-x-b'd=inspur,dc=com,二、被管理端配置被管理端配置和管理端配置的过程类似,不同的地方在于a)test,ldif文件的内容,以nodel为例〃子节点nodel,它同时也是nodel子树的根节点dn:hostname二nodel,dc二domain,dc=comhostname:node1ip:lO.152.11.99cpu—usage:10%memory_usage:13%slapd.conf文件的内容databasebdbsuffix〃hostname二nodel,dc二inspur,dc=com〃rootdn〃cn二Manager,hostname=nodel,dc=inspur,dc=com〃rootpwsecretb)slapd.conf文件添加新行referralldap:〃10.152.11.87〃指向管理端IP地址这样所有的配置都已完成,在管理端和被管理端分别启动slapd进程。实施例l:被管理端绑定RMI对象importjavax.naming.Context;importjavax.naming,directory.DirContext;importjavax.naming,directory.InitialDirContext;importJava.rmi.server.UnicastRemoteObject;importJava.util.Hashtable;publicclassLDAPTest{A连接LDAP目录上下文*/publicstaticDirContextldap=null;/*获得连接*/publicstaticDirContextgetConnection(){DirContextdct=null;〃目录树根节点〃〃Stringroot=〃dc=inspur,dc二com〃;〃初始化连接参数Hashtable<String,String〉env=newHashtable<String,String〉();env.put(Context.INITIAL_C0NTEXT_FACT0RY,〃com.sun.jndi.ldap.Ld邻CtxFactory〃);env.put(Context.PROVIDER—URL,"ldap:〃10.152.11.99/"+root);env.put(Context.SECURITY—AUTHENTICATION,〃simple〃);env.put(Context,SECURITY—PRINCIPAL,〃cn二Manager,dc=domain,dc=com〃)env.put(Context.SECURITY—CREDENTIALS,"secret");try{〃获得连接dct二newInitialDirContext(env);returndct;catch(Exceptione)returnnull;publicstaticvoidmain(String[]args)〃建立连接ldap=getConnection();〃连接失败if(ld即=二null){,,、、〃System,out.println("认证失败");}〃连接成功〃、、〃System,out.println("认证成功");try{Serverobj=newServer0;〃RMI对象Hellostub=(Hello)UnicastRemoteObject.exportObject(obj,0)〃将节点"cn=test"和RMI对象绑定ldap.rebind(〃cn=test〃,stub);〃测试是否绑定成功,通过节^标识获,RMI对象stub=(Hello)ldap.lookup("cn=test");Stringresponse二stub.sayHello0;System,out.println(response);}catch(Exceptione)e.printStackTrace();〃关闭连接,if(ldap!=null){tryld即.close();catch(Exceptione/氺*当程序关闭和目录的连接之后,LDAPTest进程并不会停止,它会建立一个**守护线程来处理RMI调用实施例2:管理端访问被管理端子树importjavax.naming.Context;importjavax.naming,directory.DirContext;importjavax.naming,directory.InitialDirContext;importJava.rmi.server.UnicastRemoteObject;importJava.util.Hashtable;publicclassClient{〃连接LDAP目录上下文*/publicstaticDirContextldap=null;/*获得连接*/publicstaticDirContextgetConnection0{DirContextdct=null;〃根节点Stringroot=〃dc二domain,dc二com〃;〃初始化连接参数Hashtable<String,String〉env二newHashtable〈String,String〉0;env.put(Context.INITIAL—CONTEXT—FACTORY,"com.sun.jndi.ldap.Ld即CtxFactory〃);env.put(Context.PROVIDER—URL,〃ldap:〃10.152.11.99/〃+root);env.put(Context.SECURITY—AUTHENTICATION,〃siraple〃);env.put(Context.SECURITY—PRINCIPAL,"cn=Manager,ou二fenbushi,dc二domain,dc=com");env.put(Context.SECURITY—CREDENTIALS,〃secret〃);〃允许分布式连接,env.put(Context.REFERRAL,〃follow〃);trydct=newInitialDirContext(env);returndct;}catch(Exceptione)〃e.printStackTrace();returnnull;publicstaticvoidmain(String[]args)ldap=getConnection();if(ld即==null){System,out.println("认证失败");System,exit(1);}System,out.println("认证成功");try{〃查询远程节点的信息,就像是访问本地目录一样,System.out.println(dct.getAttributes("ou=fenbushi").get("ou").get〈catch(Exceptione)e.printStackTrace0;if(ld即!=null)tryldap.close0;catch(Exceptione){}权利要求1、一种基于LDAP的分布式的集群管理监控系统,其特征在于,系统包括一个管理端和多个被管理端组成的一棵倒立的树,根节点代表管理端,被管理端则表现为一棵子树,而管理端也包含几棵子树来表示系统数据;每个服务器的信息由自己组织并在本地树中保存,树的每个节点都是一个代表一类信息的信息体;管理端和被管理端各自维护一颗子树,利用LDAP的referral对象和ref属性,在管理端树下建立指向每棵被管理端子树的索引叶子节点,将所有子树连接成一棵整树;结合RMI建立管理端和被管理端之间建立的通信,通过JNDI将树的节点和RMI对象绑定,以代替在每个服务器上开启RMI注册服务。2、按照权利要求1所述的系统,其特征在于每个节点的信息采用"属性-值"对的形式表示,使访问变得简单。全文摘要本发明提供了一种基于LDAP的分布式的集群管理监控系统,集群管理员使用本系统可以控制和监控每个服务器的运行状态。本系统表现为一棵倒立的树,根节点代表管理端,被管理端则表现为一棵子树,而管理端也可以包含几棵子树来表示系统数据。首先,每个服务器的信息由自己组织并在本地树中保存,树的每个节点都是一个信息体,代表一类信息,这些信息由一系列的“属性-值”对来表示,而信息的存储可以使用任何方式,比如关系型数据库,LDAP只是从人容易理解的角度对数据做了一层抽象,使访问变得简单。文档编号H04L29/08GK101232515SQ20081001464公开日2008年7月30日申请日期2008年2月25日优先权日2008年2月25日发明者刚李申请人:浪潮电子信息产业股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1