WLI 7.0 Cluster 配置手册
体系结构 |
一、单层混合型的WLI Cluster
二、多层结构的WLI Cluster
在本次测试中,使用Weblogic Integration的HttpClusterServlet作为访问集群的HTTP代理
配置过程 |
一、 配置weblogic cluster的必要条件:
- 集群中的所有WebLogic server必须位于同一个局域网内,并且必须是IP广播(UDP)可到达的
- 集群中的所有Weblogic Server必须使用相同的版本,包括Service Pack
- 集群中的WebLogic Server必须使用永久的静态IP地址。动态IP地址分配不能用于集群环境。如果服务器位于防火墙后面,而客户机位于防火墙外面,那么服务器必须有公共的静态IP地址,只有这样,客户端才能访问服务器。
- 要以CLUSTER方式运行,必须有包含CLUSTER许可的LICENSE才行。
二、 集群环境下WebLogic Integration 资源的部署
WLI以Weblogic Server为基础,是Weblogic Server的自然延伸。一个WLI domain可以有一个administration
server和多个 managed servers,managed server可以配置成Cluster。
WLI的资源(WLI本身的WEB、EJB及RAR应用),大多数可以部署到集群中的所有managed server,个别的只能部署给某个managed
server,有些资源又必须部署到administration server上,具体情况如下:
BPM Resource
Group |
Description
|
Resource
Name |
Administration
Console Navigation |
bpm -singleNode |
BPM master components (Single node) |
WLI-BPM Plugin Manager (wlpi-master-ejb.jar) |
Deployments—>EJB |
bpm -clusterable |
BPM components (Clusterable) |
WLI-BPM initialization (bpm-init-ejb.jar) |
Deployments—>EJB |
WLI-BPM Server (wlpi-ejb.jar) |
Deployments—>EJB |
||
WLI-BPM Event Processor MDBs (wlpi-mdb-ejb.jar) |
Deployments—>EJB |
||
User-defined Event Processor MDBs wlpi-mdb-xxx.jar |
Deployments—>EJB |
||
wlpiFactory (com.bea.wlpi. TopicConnectionFactory) |
Services—>JMS—> Connection Factories |
||
wlpiQueueFactory (com.bea.wlpi. QueueConnectionFactory) |
Services—>JMS—> Connection Factories |
||
TXDataSource |
Services—>JDBC—> Tx Data Sources |
AI Resource Group |
Description
|
Resource
Name |
Administration
Console Navigation |
AI -admin |
Application integration administration (Single node: Administration Server) |
WLI-AI RAR Upload (wlai-admin.ear) |
Deployments—> Applications—>WLI-AI RAR Upload |
AI-clusterable |
Application integration components (Clusterable) |
WLI-AI Server (wlai-server-ejb.jar) |
Deployments—>EJB |
Application View Management Console (wlai.war) |
Deployments—>Web Applications—>wlai |
||
WLI-AI Event Processor (wlai-eventprocessor -ejb.jar) |
Deployments—>EJB |
||
WLI-AI Async Processor (wlai-asyncprocessor -ejb.jar) |
Deployments—>EJB |
||
WLI-AI BPM Plug-in (wlai-plugin-ejb.jar) |
Deployments—>EJB |
||
WLI-AI BPM Plug-in Help (wlai-plugin.war) |
Deployments—> Web Applications |
||
WLAI_JMSConnection |
Services—>JMS—> Connection Factories |
||
Adapter Wlai -event-yyy |
Application integration event adapter (Depends on the adapter) |
yyyEventRouter |
Deployments—> Applications —>yyyEventRouter |
wlai-service-yyy |
Application integration service adapter (Depends on the adapter) |
BEA . . . yyy . . . ADK_RAR |
Deployments—> Applications—> BEA . . . yyy . . . ADK_RAR |
BEA . . . yyy . . . ADK_WEB |
Deployments—> Applications—> BEA . . . yyy . . . ADK_WEB |
B2B Resource
Group |
Description
|
Resource
Name |
Administration
Console Navigation |
B2B -singleNode |
B2B integration administration (Single node: Administration Server) |
B2B console (b2bconsole.war) |
Deployments—> Web Applications |
WLI-B2B Startup (b2b-startup.jar) Note: Deployed to the administration server and the clustered managed servers. |
Deployments—>EJB |
||
B2B -clusterable |
B2B integration components (Clusterable) |
WLI-B2B Startup (b2b-startup.jar) |
Deployments—>EJB |
WLCShutdown |
Deployments—> Startup & Shutdown |
||
WLCHub.DS |
Services—>JDBC—> Tx Data Sources |
||
TransportServlet (b2b.war) |
Deployments—> Web Applications |
||
WLI-B2B RN MDB (b2b-rosettanet.jar) |
Deployments—>EJB |
||
WLI-B2B RN BPM Plug-in (wlc-wlpi-plugin.jar) |
Deployments—>EJB |
||
WLI-B2B ebXML BPM Plug-in (ebxml-bpm-plugin.jar) |
Deployments—>EJB |
||
RNQueueFactory (com.bea.wli.b2b.rosettanet. QueueConnectionFactory) |
Services—>JMS—> Connection Factories |
||
B2BTopicFactory (com.bea.wli.b2b.server. TopicConnectionFactory) |
Services—>JMS—> Connection Factories |
DI Resource
Group |
Description
|
Resource
Name |
Administration
Console Navigation |
DI -clusterable |
Data Integration components (Clusterable) |
WLI-DI BPM Plug-in (wlxtpi.jar) |
Deployments—>EJB |
WLI-DI BPM Plug-in Help (wlxtpi.war) |
Deployments—>Web Applications |
other Resource
Group |
Description
|
Resource
Name |
Administration
Console Navigation |
Wli -clusterable |
(Single node: Administration Server) |
WLI-Repository (respository-ejb.jar) |
Deployments—>EJB |
WLI Error Listener (wli-errorlistener- mdb.jar) |
Deployments—>EJB |
||
Mailsession (wlpiMailSession) |
Services—>Mail Java mail sessions used for the BPM Send E-mail action. |
||
JDBCConnectionPool (wliPool) |
Services—>JDBC—> Connection Pools Used for all database connections in WebLogic Integration. |
注:Single node-该资源只能部署到某个managed server
Clusterable-该资源可以部署到cluster中的所有managed server。如果是多层形式的集群,需将web部署到web集群,将ejb和JDBC,JMS相关的资源部署到obj集群中
以下这些资源必须部署到Administrator Server:
- B2B Console (b2bconsole.war)
- WLI-B2B Startup (b2b-startup.jar)
- WLI-AI RAR Upload (wlai-admin.ear)
- B2BTopic JMS Destination (com.bea.wli.b2b.server.B2BTopic)
Adapter的部署:WLI的adapter由service adapter、event adapter及Design time的一些应用和资源组成。
虽然这三个部分可以打成一个单一的EAR包,但它们的部署是独立的。其中event adapter只能部署到某个managed server上,而不是cluster中的所有managed
server。
三、 集群环境下WebLogic Integration JMS资源的配置管理
(一)、JMS Connection Factories的发布
JMS Connection Factories的发布情况如下表:
Connection
Factories Name |
Targets
|
Resource
Name (JNDI
Name) |
Administration
Console Navigation |
RNQueueFactory |
Clusterable |
Com.bea.wli.b2b. Rosettanet .QueueConnectionFactory |
Services—>JMS—> Connection Factories |
WLAI_ JMSConnectionFactory |
Clusterable |
com.bea.wlai .JMSConnectionFactory |
Services—>JMS—> Connection Factories |
WLI_B2B_TopicFactory |
Single
node: Administration Server |
com.bea.wli.b2b.server .TopicConnectionFactory |
Services—>JMS—> Connection Factories |
wlpiFactory |
Clusterable |
com.bea.wlpi .TopicConnectionFactory |
Services—>JMS—> Connection Factories |
wlpiQueueFactory |
Clusterable |
com.bea.wlpi .QueueConnectionFactory |
Services—>JMS—> Connection Factories |
(二)、JMS JDBC Stores
在通过Domain Configuration Wizard创建domain时,它会为domain中的每个server,创建一个JMS JDBC Stores。
如果你是在管理控制台上,自己手工创建的server,你必须为你创建的server创建一个JMS JDBC Stores。
(三)、JMS Servers and JMS Destinations
同样在通过Domain Configuration Wizard创建domain时,它会为domain中的每个server,创建一个JMS Server并创建相应的Destinations。
如果你是在管理控制台上,自己手工创建的server,那么你必须为创建的server创建一个JMS Server,其JMS Destinations相应信息如下表:
JMS Destinations
|
Distributed
or Single |
com.bea.wli.bpm.TimerQueue |
Clusterable |
com.bea.wli.bpm.EventQueue |
Clusterable |
com.bea.wli.bpm.ValidatingEventQueue |
Clusterable |
com.bea.wli.bpm.ErrorTopic |
Clusterable |
om.bea.wli.bpm.AuditTopic |
Clusterable |
com.bea.wli.bpm.NotifyTopic |
Clusterable |
com.bea.wlpi.EventTopic |
Single managed server |
com.bea.wli.b2b.server.B2BTopic |
Administration server only |
com.bea.b2b.OutboundQueue |
Clusterable |
com.bea.b2b.rosettanet.EncoderQueue |
Clusterable |
com.bea.wlai.ASYNC_REQUEST_QUEUE |
Clusterable |
com.bea.wlai.ASYNC_RESPONSE_QUEUE |
Clusterable |
com.bea.wlai.EVENT_QUEUE |
Clusterable |
com.bea.wlai.EVENT_TOPIC |
Clusterable |
com.bea.wli.FailedEventQueue |
Clusterable |
四、 HttpClusterServlet的部署
HttpClusterServlet通过一个WebLogic服务器代理对WebLogic集群中的其他服务器成员的HTTP请求, 同时HttpClusterServlet还为代理的HTTP请求提供负载平衡与容错处理。
HttpClusterServlet的部署,主要是servlet的声明和映射,并设置初始化参数,可以创建一个Web
App,然后直接在web.xml中添加或在管理控制台上设置HttpClusterServlet的部署信息。最后将它发布给用来做代理的
Server,并将这个Web App设置为这个Server的Default WebApp。
Web.xml的配置可以参考下面:
<web-app>
<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>
weblogic.servlet.proxy.HttpClusterServlet
</servlet-class>
<init-param>
<param-name>defaultServers</param-name>
<param-value>
10.1.154.24:7003:7002|10.1.154.35:7003:7002 </param-value>
</init-param>
</servlet>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>/</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.jsp</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.htm</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>HttpClusterServlet</servlet-name>
<url-pattern>*.html</url-pattern>
</servlet-mapping>
</web-app>
五、 单层混合型Cluster的配置
配置的拓扑如下:用weblogic的HttpClusterServlet来做http的分发请求
(一)、利用Domain Configuration Wizard来创建domain和配置cluster
在Weblogic Platform7.0中利用Domain Configuration Wizard可以非常方便地创建一个domain并配置cluster,具体步骤如下:
1、 Choose a Domain Type and Name
可以根据自己应用的情况选择创建domain的类型,WLI有三种domain 类型
可供选择:BPM domain,EAI domain及WLI domain。
本次测试中我们选择创建WLI domain。
2、 Choose Server Type
选择创建"Admin Server with Clustered Managed Server(s)"。
3、 Choose Domain Location
指定一个目录来创建domain。
4、 Configure Clustered Servers
指定cluster中各个managed server的监听地址和端口,如下图:
5、 Configure Cluster
指定Cluster的名字,Cluster的组播地址和端口,以及Cluster地址,如下图:
Multicast Address的范围是:224.0.0.1---239.255.255.255,如果组播有问
题,Managed Server无法加入Cluster,可以通过运行utils.MulticastTest来检测组播是否正常工作。如:java utlis.MulticastTest
-N webcluster -A 230.0.0.1
Cluster Address可以IP形式的如:10.1.154.24:8001,10,1.154.35:8001
也可以以DNS名字的形式表示如:digitalchina1,digitalchina2。
注:如果不是用DNS名字来描述cluster adderss,必须设置wlai.clusterFrontEndHostAndPort属性,以保证event
router回调通讯的负载均衡和高可用。设置方法:进入管理控制台Domain_Name->Deployments->EJB->WLI-AI
Server,点击"Edit EJB Descriptor",在打开的窗口中选择EJB Jar->Enterprise Beans->Sessions->WLAIStartup->Env
Entries,然后添加一个wlai.clusterFrontEndHostAndPort,值为Cluster前端的监听IP和端口,在本次测试中为HttpClusterServlet代理所在server的监听IP和端口,如下图:
6、 Configure Standlone/Administrative Server
指定Administrative Server的名字,监听的IP和端口。
7、 Create Administrative User
指定用户名和密码。
8、 Configurate Database Mail Session
指定工作流程流通知的Email地址和Email主机
(二)、运行wliconfig进行WLI 数据库的一些相关配置
在命令行下运行domain下的wliconfig进行配置
在中文环境下运行wliconfig.cmd会抛出:java.util.MissingResourceException异常,这是因为WLI采用当
前JVM默认的区域设置,如果我们使用的是中文Windows操作系统,返回的Local是zh_CN,而WLI7.0中暂没有提供zh_CN的资源属性
文件,所以会抛出上述异常,可以用"chcp 437"来修改默认代码页,如下图:
(三)、WLI资源的配置
利用Domain Configuration Wizard创建WLI Cluster时,WLI已将其资源部署到cluster环境中,但有个别资源的部署需要修改:
1、在Cluster中WLI-BPM Plugin Manager,即wlpi-master-ejb.jar只能发布到Cluster中的某个managed
server,而不是所有的managed server。
2、在Cluster中wlpiEvent(JNDI Name为com.bea.wlpi.EventTopic)这个JMS Topic只能发布到Cluster中的某个managed
server,而不是所有的managed server。
3、Adapter中的event adapter即Event Router,只能发布到Cluster中的某个managed server,而不是所有的managed
server。
4、将Connection Pool和Data Source发布到所有的Server,包括Admin Server。
具体请参照本技术问题记录的第二和第三部分或WLI的连机文档
(四)、CTAIS Frame及CTAIS应用的部署
1、Frame的安装
将"ctais" 这个文件夹(其包含了CTAIS Frame的所有资源),拷贝到所有机器上的相同路径下,如C:\bea702\ctais。
2、在admin server启动脚本添加classpath
如下图:
注:WLI也带了一个log4j的包,其版本为1.1.3,而CTAIS Frame用的log4j的版本为1.2.4,因此必须把Frame的classpath设置在classpath的第一位置,否则会有冲突。
3、修改各个managed server的启动脚本
同样必须把Frame的classpath设置在classpath的第一位置,否则会有冲突。
4、修改ctais\core\config.xml下的相关信息
在单层混合型cluster中,将distributing参数设置为false;将jndi_url参数设置为cluster Address,如:10.1.154.24:8001,10.1.154.35:8001;
在多层Cluster中将distributing参数设置为设置为true,将JNDI_URL设置为OBJ cluster的clustter adderss
5、创建Tx Data Source.
Name: jdbcctais
JNDI Name: jdbc.ctais
Pool Name: wliPool
6、部署启动类
Name: ctais
ClassName: ctais.core.web.StartUp
Arguments: config=c:\bea702\ctais\core\config.xml
7、EJB部署
将ctais中的EJB发布到cluster中,ejb与 cluster的相关设置都是在weblogic-ejb-jar.xml中进行设置。
Stateless SessionBean可保持一个可用的实例池,weblogic-ejb-jar.xml中有两个参数控制池的行为:
-<initial-beans-in-free-pool>标记实例池的初始容量
-<max-beans-in-free-pool>
Stateless
SessionBean故障处理的方式取决于<stateless-bean-methods-are-idempotent
>这个参数,如果所有业务方法都是idempotent,这个参数应设置为true,否则应设置为false。
关于EJB cluster的设置、负载均衡和容错的实现机制的详细情况请参考e-docs.bea.com:
http://e-docs.bea.com/wls/docs70/ejb/EJB_environment.html#1046391,
http://e-docs.bea.com/wls/docs70/cluster/
8、Web部署
将ctais的web模块发布到cluster,并设置session 复制的方式。
注:如果选择内存复制,不要选择memory,正确选项是replicated。
(五)、配置HttpClusterServlet代理
具体请参见本技术问题记录的HttpClusterServlet的部署
六、 多层结构的WLI Cluster的配置
(一)、利用Domain Configuration Wizard来创建domain和server
可以用"Domain Configuration Wizard"先创建一个cluster,然后在管理控制台再创建managed server,并配置另一个cluster。
也可以在"Choose Server Type"时选择"Admin Server and managed Servers"来创建Admin
Server和managed Servers。然后在管理控制台上创建Cluster.
(二)、在管理控制台上配置Cluster
在管理控制台上进入Domain_Name->Clusters->Create a new Cluster来创建一个Cluster。如下图:
1、配置cluster的基本信息:cluster名字,cluster adderss及选择负载均衡的算法
2、配置Multicast
3、加入Server
(三)、WLI资源的部署和配置
与单层混合型Cluster不同的是你需要把Web应用部署到web Cluster,把EJB部署到obj Cluster
WebLogic Integration JMS资源的配置,请参照本技术问题记录的第三部分:集群环境下WebLogic Integration JMS资源的配置管理进行配置。
(四)、CTAIS Frame及CTAIS应用的部署
与单层混合型Cluster不同的是,在多层Cluster中需要将frame的config.xm中
的将distributing参数设置为true,将JNDI_URL设置为OBJ cluster的clustter adderss
(五)、配置HttpClusterServlet代理
具体请参见本技术问题记录的HttpClusterServlet的部署
七、 抛出java.sql.SQLException: Cannot set auto commit to "true" when
in distributed transaction?
这是因为使用weblogic提供的JDBC驱动时,在处理分布式事务时必须将
Autocommit设置为false,Autocommit的设置情况如下:
Transaction
Type |
Autocommit
Default |
Change
Default? |
Result |
Local transaction |
true |
yes |
将其设为false可以提高性能 |
Distributed transaction |
false |
no |
不能修改缺省值,如果将其设为true,将抛出SQLException |
八、 启动server时抛出java.lang.IllegalArgumentException
这是因为:CTAIS Frame用的log4j的版本为1.2.4,而WLI也带了一个log4j的包,其版本为1.1.3,而,因此必须把Frame的classpath设置在classpath的第一位置,否则会有冲突。
九、 集群环境下Studio的访问
Server URL格式为Cluster address,可以是cluster中各个server的监听IP和端口,如:t3://host1,host2,host3:port,也可以用DNS名字。
十、 集群环境下的PROVIDER_URL
在集群环境下PROVIDER_URL的设置:
ht.put(Context.PROVIDER_URL,"t3://server1,server2:7001");
(也可以用IP地址和端口描述)
十一、 关于硬件负载均衡器
硬件负载均衡器在IP层而不是在命名层,可以克服DNS方法的弱点。同时硬件负载均衡器的性能要优于"软件形式"负载均衡。硬件负载平衡器用作集群代理。
客户机连接负载平衡器,经过路由分配,连接到集群中的一个服务器。负载平衡硬件可以跟踪每个服务器的"健康"状况。不会将请求发送给"不健康"的服务器;
它还可以利用负载信息做出负载平衡决策。BEA WebLogic Server支持目前市场上流行的大部分负载平衡硬件产品。值得指出的是,BEA
WebLogic Server使用这些负载平衡产品不需额外编码。 详细信息请参考e-docs.bea.com及硬件负载均衡器产品说明。