作者: 日期:2003-10-28 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 (Single Node/Clusterable) | 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 (Single Node/Clusterable) | 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 Factory | 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 (Single Node/Clusterable) | 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 (Single Node/Clusterable) | 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 (Single Node/Clusterable) | 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 (Single Node/Clusterable) | 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及硬件负载均衡器产品说明。 |