基于WebLogic Server的ALSR集群配置

来源:互联网 发布:tk域名注册官网 编辑:程序博客网 时间:2024/06/10 13:05
基于WebLogic Server的ALSR集群配置

时间:2008-01-30
作者:周警伟
浏览次数: 23
本文关键字:SOA ,  SOA治理,WebLogic Server,  AquaLogic Service Registry 文章工具
推荐给朋友 推荐给朋友
打印文章 打印文章

前言

  Aqualogic Service Registry(以下简称ALSR)是Service Oriented Architecture (SOa) 的重要组成部分,是SOA治理(Governance) 和服务生命周期管理的基础。 ALSR完全符合UDDI v3标准,在SOA体系架构中作为服务注册中心,可以被用来注册,发现和查找服务。

  ALSR可以单独运行,也可以部署到J2EE应用服务器上,并能支持集群部署。由于ALSR设计为与应用服务器独立,因此在移植到某特定应用服务器上时需要做一些修改和配置。 本文就是介绍了如何将ALSR部署到基于WebLogic Server的集群上。

基于WebLogic Server的ALSR集群配置

假设:

  • 两台机器组成集群,hostname分别是jizhou01和publictesting;
  • 数据库使用MS SQL Server2005;
  • 使用WebLogic Server 9.2(可以使用WebLogic Server 8.1 sp5以上版本,WebLogic Server 9.x)
  • 外部访问URL:http://jizhou01:7021/discovery/uddi/web

说明:以ALSR Discovery Registry配置集群为例

基于WebLogic Server的ALSR集群配置

  • Balancer 为域管理节点(非集群节点),负责负载均衡和代理转发请求
  • Configuration Manager: 集群被管理节点,负责集群各个节点的配置与数据同步,保持数据的一致性,这里以jizhou01上的manager节点为Configuration Manager
  • Configuration listener: 集群被管理节点,可以配置多个,这里只以listener1节点为例,运行在publictesting机器上

具体步骤:

安装ALSR3.0:

  a) 选择使用WebLogic应用服务器作为部署平台;

  b) 选择合适的数据库;注意集群部署方式不要使用默认自带的数据库,本例使用MS SQLServer2005;

  c) 安装时选择适当的Registry模式,本例只安装discovery类型的Registry, 因此上下文就使用discovery;

  d) 安装时不要选择“安装后部署”选项;否则将部署到域管理节点上,如果不需要集群,则可以选择此项;

  e) 安装结束后在%Registry%/conf/porting/weblogic/build下会生成discovery.war。该文件需要进行配置修改,因此在build目录下创建文件夹discovery,使用winzip或jar工具将discovery.war内容解压缩到discovery目录下

  说明:只需在管理节点安装,集群其他机器上没有必要再安装。

  配置正确后的ALSR,运行时是一个基于标准的web应用,非常方便管理。

创建WebLogic Server Domain:

  a) 管理节点为AdminServer,  启用SSL,监听端口为7022, 常规监听端口为7021

  b) 添加被管理节点manager, listener1;分别启用SSL, 监听端口为7032, 常规监听端口为7031;注意集群软件代理(proxy)需要使用管理节点,不再单独配置,也可使用硬件负载均衡如F5代替

  c) 创建集群mycluster, 将manager, listener1添加到集群, 集群地址 http://jizhou01:7031,http://publictesting:7031

  d) 将所需数据库的JDBC Driver添加到Classpath,可以在Domain的bin目录下的setDomainEnv.cmd或setDomainEnv.sh中设置;注意集群中所有节点都需要添加驱动

  e) 验证集群配置正确;对集群部署还不熟悉的,可以参考部署BEA自带的例子weblogic92/samples/server/examples/src/examples/cluster/sessionrep/inmemrep

  f) 注意,不要使用默认的集群多播地址和端口,以免和其他人配置的多播地址与端口冲突。

安全配置:

  a) 通过IE浏览器访问集群的被管理节点获得集群节点的证书,将其保存为Base64格式的*.cer文件。如图:

基于WebLogic Server的ALSR集群配置

  b) 在%Registry%/conf/porting/weblogic/build/discovery/conf下有配置文件pstore.xml,需要将集群中所有节点的证书导入到该文件;该文件中的证书作为应用的可信证书,可以使用如下面的命令:

  PStoreTool add -config  %pstore_path%/pstore.xml -certFile  [ 证书文件名]

  其中pstore_path=%Registry%/conf/porting/weblogic/build/discovery/conf

基于WebLogic Server的ALSR集群配置

  注意将%beahome%/weblogic92/server/lib下的CertGenCA.der也添加到pstore.xml中,因为其是节点证书的签发CA证书。在生产环境中,也需要将CA证书导入到该pstore.xml中

  c) 注意安装后有文件%Registry%/conf/jaas.config, 将该文件复制到所有节点的domain目录下,然后在setDomainEnv脚本加入(可以在第一行)

  Set JAVA_OPTIONS=-Djava.security.auth.login.config= %domain%/jaas.config

日志文件配置:

  a) 修改%Registry%/conf/porting/weblogic/build/discovery/conf下的log4j.config文件中日志文件地址正确,如果指定文件夹不存在会抛异常。确保集群中所有节点的日志文件地址指向相同结构的文件夹。

配置应用

  a) 配置discovery/app/uddi/conf/configurator.xml,按照集群节点设计修改该配置文件

  参考如下:manager为jizhou01, listener为publcitesting, publication registry的ip为192.168.1.2;

  <?xml version="1.0"  encoding="UTF-8"?>
<config name="configurator" savingPeriod="5000" local="true">
<configManagerUrls>
<url>https://jizhou01:7032</url>
<managerServiceUrlPath>/discovery/uddi/configuratorManager</managerServiceUrlPath>     <managerConfiguratorUrlPath>/discovery/uddi/configurator</managerConfiguratorUrlPath>
</configManagerUrls>
<IPFilter name="configuratorFilter">
<subnet IPAddress="192.168.1.2" subnetMask="255.255.255.255"/>
</IPFilter>
<configManager cluster="true" resendInterval="300">
<configuratorListeners>
<configuratorListener>            
https://publictesting:7032/discovery/uddi/configuratorListener
</configuratorListener>
</configuratorListeners>
</configManager>
<UDDIInterceptorChain name="configuratorApiChain">
</UDDIInterceptorChain>
<UDDIInterceptorMapping>
<mapping UDDIInterceptorChainName="configuratorApiChain" UDDIServiceInterface="org.systinet.uddi.configurator.ConfiguratorApi"/>
</UDDIInterceptorMapping>
</config>

  b) 配置discovery/app/uddi/conf/ database.xml ,该文件为数据库驱动配置。安装ALSR时会提示你输入数据库信息,确保用户名密码输入正确,该密码会被加密保存在该文件;其他信息如数据库IP, 数据库名称,端口等都可以安装后再修改。如果默认配置的数据库URL不合适,也可以手动修改,如配置为oracle rac ,使用thin driver:

  oracle:thin:@(DESCRIPTION=(LOAD_BALANCE=yes)(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.1)(PORT=1521))(ADDRESS=(PROTOCOL=TCP)(HOST=192.168.0.2)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL)))

  修改默认连接池配置,适应实际环境需要

  c) 配置discovery/app/uddi/conf/ web.xml, 按照集群实际需求配置入口地址,安全入口地址等;默认会把集群管理节点作为入口地址,如果需要配置不同的负载均衡器地址,则修改相应部分。也可以到registry 控制台来修改。如下图:

基于WebLogic Server的ALSR集群配置

  c) 将%Registry%/conf/porting/weblogic/build/discovery下的内容打包成discovery.war,将其部署到集群的被管理节点上。

配置软件负载均衡应用

  a) 在%Registry%下创建文件夹balancer,其下在创建WEB-INF, 添加web.xml和weblogic.xml。按照实际需要修改下列文件。

  web.xml样例:

<?xml version="1.0"  encoding="UTF-8"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd">
<web-app>
<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>weblogic.servlet.proxy.HttpClusterServlet</servlet-class>
<init-param>
<param-name>WebLogicCluster</param-name>
<param-value>jizhou01:7031|publictesting:7031</param-value>
</init-param>
</servlet>
<servlet>
<servlet-name>FileServlet</servlet-name>
<servlet-class>weblogic.servlet.FileServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>/discovery/uddi/webdata*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>FileServlet</servlet-name>
<url-pattern>/discovery/uddi/bsc/webdata*</url-pattern>
</servlet-mapping>
</web-app>

 

  Weblogic.xml样例:
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 8.1//EN"
"http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app>
<context-root>/discovery</context-root>
</weblogic-web-app>

  b) 在balancer目录下创建build.bat, 内容如下:

set JAVA_HOME=C:/bea/esb26rp1/jdk150_10
set REGISTRY_HOME=D:/ALSR3/Discovery
set path=%JAVA_HOME%/bin;%path%
mkdir uddi
mkdir uddi/bsc
cd uddi/bsc
jar xvf %REGISTRY_HOME%/app/uddi/bsc.jar webroot
rename webroot webdata
cd ..
jar xvf %REGISTRY_HOME%/app/uddi/web.jar webroot
rename webroot webdata
cd ..
jar cvf balancer.war *
rmdir /S /Q uddi
echo done

  运行该命令,可以得到balancer.war, 将其部署到管理节点上。

  说明:该war文件为负载均衡的软件代理,基于weblogic的weblogic.servlet.proxy.HttpClusterServlet,配置了集群地址jizhou01:7031|publictesting:7031。如果要使用其他负载均衡代替HttpClusterServlet(如F5),只需将该应用根下的uddi目录合并到discovery应用的根下即可。

验证安装配置正确

  a) 启动域管理节点,其上部署了balancer.war

  b) 启动集群被管理节点manager,其上部署了discovery.war

基于WebLogic Server的ALSR集群配置

  注意启动时因为SSL端口还没有建立,所以抛一个连接异常属正常现象,等服务器监听端口就绪后即会自动注册,如上图所示。

  c) 启动被管理节点 listener1, 其上部署了discovery.war

基于WebLogic Server的ALSR集群配置

  d) 通过入口地址:https://jizhou01:7022/discovery/uddi/web 访问registry, 登录后做一些修改,可以看到所做修改在集群所有节点都得到了应用。

总结

  通过配置ALSR的集群,即得到了ALSR的UDDI功能,又可以借助WebLogic的集群提高系统的吞吐量和可靠性,并实现负载均衡。通过ALSR,可以在运行时查询服务,控制服务的完整性(如安全,策略),可以定义服务发布审批流程,对服务进行精确的安全控制,并有基于浏览器的控制台。还可以通过在BEA ALSB(ESB)中配置UDDI,实现业务服务总线和UDDI注册中心的服务同步。基于UDDI标准的ALSR为企业的IT向更规范的SOA环境转换,提高SOA治理能力奠定了坚实的基础。

 作者简介   周警伟是(dev2dev ID: zhoujw) BEA系统(中国)有限公司 售前技术顾问
dot dot dot
dot
  作者其它文章
  • MVC在Web系统中的模式与应用
  • 基于ESB的MQ连接方案