您的位置:首页 > 运维架构 > Linux

Linux 下 Weblogic 集群配置

2007-07-27 11:49 561 查看
域,集群,管理服务器和被管服务器之间的关系
Weblogic 域是一个服务器 / 集群的管理组,用户可以通过某个中央位置来管理、监控整个服务器域,这个中心就是管理服务器,相对的,受控服务器或者叫被管服务器是指域中除了管理服务器以外的所有的服务器。
Weblogic 集群是一个 weblogic Server 组,在一个集群中的服务器可以获得集群范围的命名服务、负载平衡以及容错等功能。
所以,一个 weblogic 域可以同时管理多个集群以及多个服务器实例。
另外,还有一个节点管理器的概念,节点管理器是指在物理的机器上运行的一个守护进程,通过它,管理服务器可以获得诸如在控制台中强制重启远程机器上的 server 等功能(没有节点管理器的情况下也是可以强制关闭远程服务器的,但是不能重启)。
除此之外,据说节点管理器还可以自动检查自己机器上的 server 实例(健康检查),当发现某个实例出现故障的时候,可以自动进行重启,这个没试过。
注意事项
1. 本文的 weblogic 均配置在 linux 环境下
2. 集群中管理服务器和被管服务器之间有用到 ip 组播 UDP ,所以这些服务器之间必须是 UDP 可以到达的。
3. 好像动态 ip 的机器不能用于集群当中
4. 最佳实践说:请不要把管理服务器设置在集群当中
5. 本文所配置的集群只是实现了 web 层次上的负载平衡和容错,也就是 servlet 和 jsp ,其他的 j2ee 组件如 ejb , jdbc , jms 等都可以集群化。
本例测试域的规划
Ip/port
server
注释
10.21.18 .40:7001
adminServer
管理服务器
10.21.18 .40:7003
mServer1
被管服务器 1
10.21.18 .41:7001
mServer2
被管服务器 2
10.21.18 .40:7004
proxyServer
代理服务器
配置过程
建立管理服务器
启动 linux 下的配置向导
进入 bea 目录下的 weblogic81/common/bin 目录输入 ./config.sh ,这里使用的终端登陆,所以没有图形环境,程序会以控制台模式启动
第一步:选择建立新的域:
启动配置向导后,系统提示如下:
[align=left]<------- BEA WebLogic Configuration Wizard----------> [/align]
[align=left] [/align]
[align=left]Create or Extend a Configuration: [/align]
[align=left]--------------------------------- [/align]
[align=left] [/align]
[align=left]Choose between creating and extending a configuration. Based on your selection, the Configuration Wizard guides you through [/align]
[align=left]the steps to generate a new or extend an existing configuration. [/align]
[align=left] [/align]
[align=left] ->1|Create a new WebLogic configuration [/align]
[align=left] | Start here to create a WebLogic configuration in your projects directory. [/align]
[align=left] 2|Extend an existing WebLogic configuration [/align]
[align=left] | Start here to extend an existing WebLogic configuration. Use this option to add applications and services, [/align]
[align=left] |including Database access (JDBC) and Messaging (JMS). This option also enables you to extend functionality by enabling [/align]
[align=left] |WebLogic Workshop. [/align]
[align=left] [/align]
[align=left]Enter index number to select OR [Exit][Next]> 1 [/align]
录入 1 回车,建立一个新的域。
第二步:选择模版
[align=left]系统提示选择一个建立域的模版,资料上讲配置向导的配置过程可以另存为模版,以便下次配置的时候使用,没试过下次回去试试。 [/align]
[align=left]<-------- BEA WebLogic Configuration Wizard --------> [/align]
[align=left]Select a Domain Template: [/align]
[align=left]------------------------- [/align]
[align=left]Please select a template from the list or select another directory of templates. [/align]
[align=left] * [/usr/local/bea/weblogic81/common/templates/domains] [/align]
[align=left] ->1|Basic WebLogic Server Domain 8.1.4.0 [/align]
[align=left] | BEA Systems, Inc. [/align]
[align=left] | Create a basic WebLogic Server domain without installing sample applications. [/align]
[align=left] 2|WebLogic Server Examples Domain 8.1.4.0 [/align]
[align=left] | BEA Systems, Inc. [/align]
[align=left] | Create the WebLogic Server Examples domain in a directory outside of the installed kit. The Examples domain contains |a collection of examples to show best practices for coding individual J2EE APIs. [/align]
[align=left] 3|Avitek Medical Records Sample Domain 8.1.4.0 [/align]
[align=left] | BEA Systems, Inc. [/align]
[align=left] | Create the Avitek Medical Records domain in a directory outside of the installed kit. The Avitek Medical Records is [/align]
[align=left] |a WebLogic Server sample application suite that concisely demonstrates all aspects of the J2EE platform. [/align]
[align=left] 4|Select another directory location [/align]
[align=left]Enter index number to select OR [Exit][Previous][Next]> 1 [/align]
这里我们选择 1 ,使用基础的模版
第三步:是否以快速模式进行
第三步系统提示是否以快速模式进行配置,这里选择 2 。
[align=left]<--------- BEA WebLogic Configuration Wizard -----------> [/align]
[align=left]Choose Configuration Option: [/align]
[align=left]---------------------------- [/align]
[align=left] *Do you want to run the wizard in express mode? [/align]
[align=left] ->1|Yes [/align]
[align=left] 2|No [/align]
[align=left]Enter index number to select OR [Exit][Previous][Next]> 2 [/align]
第四步:配置管理服务器
现在系统提示我们配置管理服务器,把管理服务器的名字改一下,改成 adminServer 就可以了。
[align=left]<------- BEA WebLogic Configuration Wizard --------> [/align]
[align=left]Configure the Administration Server: [/align]
[align=left]------------------------------------ [/align]
[align=left]Enter adminstration server configurations. Each WebLogic Server domain must have one Administration Server. The [/align]
[align=left]Administration Server hosts the Administration Console which is used to perform administrative tasks. [/align]
[align=left] | Name | Value | [/align]
[align=left] _|__________________|_____________________| [/align]
[align=left] 1| *Name: | myserver | [/align]
[align=left] 2| Listen address: | All Local Addresses | [/align]
[align=left] 3| Listen port: | 7001 | [/align]
[align=left] 4| SSL listen port: | N/A | [/align]
[align=left] 5| SSL enabled: | false | [/align]
[align=left]Select Option: [/align]
[align=left] 1 - Modify "Name" [/align]
[align=left] 2 - Modify "Listen address" [/align]
[align=left] 3 - Modify "Listen port" [/align]
[align=left] 4 - Modify "SSL enabled" [/align]
[align=left]Enter option number to select OR [Exit][Previous][Next]> 1 [/align]
输入 1 之后,根据系统提示输入新的管理服务器的名称 adminServer
第五步:配置被管服务器
[align=left]根据下面系统的提示,配置被管服务器 [/align]
[align=left]<--------- BEA WebLogic Configuration Wizard ----------> [/align]
[align=left]Configure Managed Servers: [/align]
[align=left]-------------------------- [/align]
[align=left]Add or delete configuration information for managed servers. A typical production environment has one or more managed [/align]
[align=left]servers. Each managed server is an instance of WebLogic Server used to host enterprise applications. [/align]
[align=left] | Name* | Listen address | Listen port | SSL listen port | SSL enabled | [/align]
[align=left] _|_______|________________|_____________|_________________|_____________| [/align]
Enter name for a new Server OR [Exit][Previous][Next]> mServer1
被管服务器我们设置两个: mServer1 和 mServer2 , mServer1 和管理服务器在一台机器上,所以端口设置为 7003 避免和管理服务器冲突。
mServer2 的监听地址一定要设置成 ip ,否则在启动被管服务器 2 的时候会得到这样一个错误: using the same address as the admin server (这个错挺傻的我觉得),如果是实际的集群配置的话,这里建议都写成 ip 的形式。
配置完成的画面如下:
[align=left] | Name* | Listen address | Listen port | SSL listen port | SSL enabled | [/align]
[align=left]_|_________|___________________|_____________|_________________|_____________| [/align]
[align=left]1| mServer1| 10.21.18.41 | 7003 | N/A | false | [/align]
[align=left]->2|mServer2|10.21.18.41 | 7001 | N/A | false | [/align]

第六步:配置集群
[align=left]<----BEA WebLogic Configuration Wizard ------> [/align]
[align=left]Configure Clusters: [/align]
[align=left]------------------- [/align]
[align=left]A cluster contains multiple WebLogic Server instances (servers) that run simultaneously and work together to provide [/align]
[align=left]increased scalability and reliability. A cluster appears to be a single WebLogic Server instance to clients. [/align]
[align=left] | Name* | Multicast address | Multicast port | Cluster address | [/align]
[align=left] _|_______|___________________|________________|_________________| [/align]
[align=left]Enter name for a new Cluster OR [Exit][Previous][Next]> testCluster [/align]
输入集群的名字 testCluster ,其他的默认就行了,配置完成后如下:
[align=left] | Name* | Multicast address | Multicast port | Cluster address | [/align]
[align=left] _|_____________|___________________|________________|_________________| [/align]
->1| testCluster | 237.0.0.1 | 7001 | |
第七步:将服务器组织到集群中
根据系统的提示,将 mServer1 和 mServer2 放入集群 testCluster 中去,配置完成后如下:
[align=left] Cluster [/align]
[align=left] |_____testCluster [1] [/align]
[align=left] |_____mServer1 [/align]
|_____mServer2
第八步:配置机器、 jdbc 、 jms 、安全等
接下来几步系统提示配置 Machines,jdbc,jms,安全,这里都不用配置,全部回车就行了。
第九步:输入管理服务器的用户名和密码
系统提示如下画面,可以配置管理服务器的用户名和密码:
[align=left] | Name | Value | [/align]
[align=left] _|_________________________|_________________________________| [/align]
[align=left] 1| *User name: | weblogic | [/align]
[align=left] 2| *User password: | | [/align]
[align=left] 3| *Confirm user password: | | [/align]
4| Description: | The default administration user |
第十步:选择启动模式, jdk 和存放目录
启动模式, jdk 和域文件存放目录的设置比较简单,根据大家的爱好设置就行了。
这里启动模式选择生产开发模式, jdk 使用 jRockit ,存放目录默认。
十一步:配置域名称
[align=left]Edit Domain Information: [/align]
[align=left]------------------------ [/align]
[align=left] | Name | Value | [/align]
[align=left] _|________|__________| [/align]
[align=left] 1| *Name: | mydomain | [/align]
[align=left]Enter value for "Name" OR [Exit][Previous][Next]> testDomain [/align]
设置域的名称为 testDomain 。
十二步:域建立结束
以上步骤都完成后,系统会自动建立这个域,并会生成一些文件等等,完成的界面如下:
[align=left]<----- BEA WebLogic Configuration Wizard ---------> [/align]
[align=left]Creating Domain... [/align]
[align=left]0% 25% 50% 75% 100% [/align]
[align=left][------------|------------|------------|------------] [/align]
[align=left][***************************************************] [/align]
[align=left]**** Domain Created Successfully! **** [/align]
启动管理服务器
[align=left]进入 bea/user_projects/domains/testDomain/ 目录 [/align]
[align=left]键入 ./startWebLogic.sh [/align]
建立被管服务器 1
这里的被管服务器 1 也就是 mServer1 是和管理服务器在同一台机器上的,这里我试过了,我们不需要再进行什么配置,只需要启动它就行了,启动被管服务器 1 的命令如下:
进入 bea/user_projects/domains/testDomain/ 目录
键入 ./startManagedWebLogic.sh mServer1 http://10.21.18.40:7001
这样的写法保证了被管服务器在启动的时候向管理服务器报告,后面的这个地址就是管理服务器的地址了
当然,由于是在同一台机器上,所以你完全可以这样写: ./startManagedWebLogic.sh mServer1 就可以了。
建立被管服务器 2
被管服务器 2 和管理服务器在不同的机器上,所以你还需要在这台机器上配置一个域,域的名字要和刚才建立的域名字一致(不一致会怎么样我也没试过,谁有时间试一下: > )
建立域的过程前三步和上面讲的一样
第四步,配置管理服务器的时候,请把这个域的管理服务器的名字设置为 mServer2 。
这里需要解释一下,在每台机器上建立域的时候都需要有一个管理服务器,以确保整个域的管理服务器当掉的时候,每台机器自己都是还可以运行的,这里我们是把 mServer2 作为了 41 这台机器的管理服务器,同时它也是 adminServer 的被管理服务器。
从第五步开始,都不需要配置,直接回车就可以了。
配置完成后,用下面的命令启动 mServer2 :
./startManagedWebLogic.sh mServer2 http://10.21.18.40:7001
小结
到目前为止,一个包含一个管理服务器和 2 个被管服务器以及一个 cluster 的域就配置完成了,你可以简单试验一下它提供的功能,打开管理服务器的管理控制台:
http://10.21.18.40:7001/console
首先,在这个管理控制台上你可以监控和管理 mServer1 和 mServer2 ,选择 mServer2
进入 Monitoring 页面 General 子页面,如果显示如下,就说明配置是正确的了:
进入 Monitoring 页面的 Performance 子页面,就可以看到 mServer2 的运行情况了。
将一个 web 应用上传上去,将其部署在 testCluster 这个集群上
部署成功后,分别在 mServer1 和 mServer2 上访问刚才部署的 web 应用,应该都是可以访问的。
建立代理服务器
建立了集群以后,集群的负载平衡功能还需要代理( proxy )来实现。目前我所知道的 Weblogic 支持几种类型的代理:
Ø HttpClusterServlet 的代理,这个代理是 weblogic 公司编写的一个 servlet ,把它部署在一个 weblogic 服务实例上,就可以实现负载平衡和容错了。
Ø IIS 代理,用 IIS 作为前段的 http 的代理,需要往 IIS 中装一个插件
Ø Netscape/iPlanet 代理,需要装插件
Ø Apache 代理,用 Apache 作为 http 代理,需要装插件。推荐使用
当然,实际应用中可能更加复杂,可能会这样:
使用 HttpClusterServlet 作为代理
建立代理服务器实例
代理服务器 proxyServer 实例实际上和 mServer1 一样,都是属于 testDomain 域的一个被管服务器,回头看建立管理服务器的第五步,在那个时候配置被管服务器的时候如果也把 proxyServer 加上的话,现在直接启动就可以了。
当然也可以在管理服务器的管理控制台上新建这个 server 。
在管理服务器的控制台上,左边的菜单中 Server 上单击左键,选择“新建一个 Server ”
然后,在出现的页面中设置这个 server 的名字为 proxyServer ,监听端口为 7004 ,如图:

点击应用,这个服务就配置完成了。
配置结束后,在后台使用 ./startManagedWebLogic.sh proxyServer 来启动代理服务器。
部署代理 webapp
建立一个标准的 web 应用,这个应用里面什么也不用有,只需要配置 web.xml 和 weblogic.xml 就可以了。 web.xml 和 weblogic.xml 代码如下:
web.xml
<!-- DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.
//DTD Web Application 1.2//EN"
"http://java.sun.com/dtd/web-app_2_3.dtd"
-->
<web-app>
<servlet>
<servlet-name>HttpClusterServlet</servlet-name>
<servlet-class>
weblogic.servlet.internal.HttpClusterServlet
</servlet-class>
<init-param>
<param-name>defaultServers</param-name>
<param-value>
10.21.18.40:7003|10.21.18.41:7001
</param-value>
</init-param>
<init-param>
<param-name>DebugConfigInfo</param-name>
<param-value>ON</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>
weblogic.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 6.1//EN" "http://www.bea.com/servers/wls610/dtd/weblogic-web-jar.dtd">
<weblogic-web-app>
<context-root>/</context-root>
</weblogic-web-app>
将这个应用打包成 war 文件,上传到管理服务器上,然后部署在 proxyServer 上面。

部署成功后的页面:

测试
打开一个浏览器,在其中输入:
http://10.21.18.40:7004/abc.jsp? __WebLogicBridgeConfig
jsp 的名字随便输入可以了,如果看到如下页面,就说明配置成功了:

然后再做一个 web 应用,里面放两个 servlet , jsp 啥的,部署在集群上面,比如说部署成功了以后应用叫做 testApp ,其中有一个页面叫 index.jsp
键入如下的地址:
http://10.21.18.41:7001/testApp/index.jsp
http://10.21.18.40:7003/testApp/index.jsp
http://10.21.18.40:7004/testApp/index.jsp
应该都是可以运行的,请注意第一、二个地址是单独访问集群中的机器的,而第三个地址是通过了代理的。
你可以做一个这样的测试,在 index.jsp 里面写一句 System.out.println(“ok!!!”);
然后再 http://10.21.18.40:7004/testApp/index.jsp 这个地址上多刷几次,到 mServer1 和 mServer2 的控制台去看的话应该两边都有输出。
使用 apache 作为代理
安装代理插件
在 weblogic 安装目录下面,找到 bea/weblogic81/server/bin 目录,下面有两个文件:
mod_wl_20.so
mod_wl128_20.so
分别是对应不同版本的 apache ,这里用来测试的是 2.0 版的 apache ,所以使用了第一个文件。
安装过程如下:
Ø 把 mod_wl_20.so 这个文件 copy 到 apache 安装目录下的 modules 目录中
Ø 在 apache 的 httpd.conf 文件中,加入这样一句:
LoadModule weblogic_module modules/mod_wl_20.so
表示在启动 apache 的时候加载 weblogic 的插件
Ø 在 apache 的 httpd.conf 文件中,加入如下代码:

<IfModule mod_weblogic.c>
WebLogicCluster 61.152.114.141:7003,61.152.114.142:7001
MatchExpression *.jsp
MatchExpression *.do
</IfModule>
第一行表示集群的各个成员地址
下面几行可以写出要代理的 url 后缀。

注:如果 weblogic 这边没有集群,只有一台机器的话,也是可以配置 apache 插件的,这样写:
<IfModule mod_weblogic.c>
WebLogicHost myweblogic.server.com
WebLogicPort 7001
MatchExpression *.jsp
MatchExpression *.xyz
</IfModule>
测试
启动 apache ,访问 http://apachehost:part/testApp/index.jsp 应该可以看到正确的响应。其中 apachehost 和 part 视 apache 的配置而定。
使用 iis 作为代理
安装插件
IIS 的 weblogic 插件安装非常的简单:
Ø 找到 bea/weblogic81/server/bin 目录下的 iisproxy.dll ,拷贝到一个 IIS 能够访问到的目录,比如 WINNT/system32/inetsrv/
Ø 建立两个文本文件: iisproxy.ini 和 iisproxy.log
Ø 右键单击某个站点,打开属性页面
Ø 点击下面的配置,界面如下:
Ø 点击添加,在其中可执行文件选择 iisproxy.dll ,扩展名录入 *.jsp ,如图:
Ø 配置完毕后启动 iis 的这个站点
测试
访问 http://iishost:part/testApp/index.jsp 应该可以看到正确的响应。其中 iishost 和 part 视 IIS 的配置而定。
简单测试
想要进行一些性能方面的测试,可以使用 apache 带的 apacheBench 工具,这个工具在 apache 安装目录下的 bin 目录下有( ab.sh ),用法如下:
ab –c 200 –n 60 url
含义是请求 url 这个地址 200 次, 60 次的并发。
以下是我做的一些简单测试的结果的一部分:
单独访问集群中一台机器的时候:
Percentage of the requests served within a certain time (ms)
50% 13734
66% 17046
75% 33234
80% 34000
90% 34343
95% 34437
98% 34515
99% 34515
100% 34546 (longest request)
使用 HttpClusterServlet 代理访问集群的情况:
Percentage of the requests served within a certain time (ms)
50% 18234
66% 19187
75% 19718
80% 19921
90% 21296
95% 22203
98% 22593
99% 22640
100% 22703 (longest request)
使用 apache 代理访问集群的情况:
Percentage of the requests served within a certain time (ms)
50% 2000
66% 2578
75% 3421
80% 3421
90% 3625
95% 3640
98% 3640
99% 3640
100% 3656 (longest request)
使用 iis 代理访问集群的时候:
出错, 200 次请求当中有 190 次失败:(
可能是因为 iis 在我的机器上的原因
另外,在测试的时候检测 mServer1 和 mServer2 的吞吐量( Throughput ),也是在使用 apache 的时候最高。大家也可以多做一些各个方面的测试,很有意思的。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: