Weblogic集群概念和配置
2011-01-28 14:04:52| 分类:服务器阅读76评论0 字号:大中小订阅
Domain定义一
Domain是WebLogic Server实例的基本管理单元。由配置为Administrator Server的WebLogic Server实例管理的逻辑单元,这个单元是所有相关资源的集合。中心配置文件叫config.xml
Domain定义二
域是作为单元进行管理的一组相关的 WebLogic Server 资源。一个域包含一个或多个 WebLogic Server 实例,这些实例可以是群集实例、非群集实例,或者是群集与非群集实例的组合。一个域可以包含多个群集。域还包含部署在域中的应用程序组件、此域中的这些应用程序组件和服务器实例所需的资源和服务。应用程序和服务器实例使用的资源和服务示例包括计算机定义、可选网络通道、连接器和启动类。
Domain定义三
群集中的所有的服务器实例必须驻留在同一域中;不能将群集“拆分”到多个域中。同样,不能在域之间共享配置的资源或子系统。例如,如果在一个域中创建了 JDBC 连接缓冲池,则不能将其用于另一个域中的服务器实例或群集。(而是必须在另一个域中创建类似的连接缓冲池)。
Domain图示
Administrator Server定义一
管理服务器是用来管理配置域的中心点,一般来说,管理服务器上是不部署应用程序的(应用程序应该部署到被管理服务器上:Managed Server),而是用来统一管理、配置、监控被管理服务器以及部署应用程序到被管理服务器上。一个域中有且只有一台管理服务器,管理服务器和域是一对一的。
Administrator Server定义二
在每个域中,只有一个 WebLogic Server 实例可充当管理服务器 : 此服务器实例可配置、管理和监视域中所有其他被管理服务器实例和资源。每个管理服务器只管理一个域。如果一个域中包含多个群集,则域中的每个群集都具有相同的管理服务器
Administrator Server图示
Managed Server定义一
被管理服务器是用来部署运行各种应用程序的。一个域中有一台或多台被管理服务器
Managed Server定义二
在生产环境中,域由一个管理服务器与多个被管服务器组成。在启动这个域的被管服务器时,首先必须先启动管理服务器,被管服务器启动时,会被命令从管理服务器获得配置信息。这样,管理服务器就成为整个域的配置控制中心。一个域只能有一个活动的管理服务器。被管服务器和管理服务器是多对一的,并且被管服务器由管理服务器统一管理
Managed Server图示
Machine
机器是物理上的概念,代表一台运行WebLogic应用服务器的实在的机器,包括其IP地址等信息。一个域中可以包括多台机器。
代理
l 集群由代理来实现负载均衡。通过将请求转发到不同的管理服务器上来实现。
l 代理是用来分发用户请求,代理可以硬件设备也可以是软件Web服务器,。一般来说硬件代理的性能强大些,而且稳定性也优于软件代理。
l 硬件带来的厂家主要有:F5 Networks、Radware、array,浪潮、趋势等
l 软件代理主要有:IIS、Apache、weblogic等HTTP服务器。
创建集群
本示例创建了一个weblogic集群,其中有一个管理服务器,两个被管服务器,被管理服务器在两台机器上,采用Weblogic Proxy作为代理。
部署图示(物理视图)
部署图示(逻辑视图)
部署(IP,PORT)
创建集群步骤一
创建集群步骤二
创建集群步骤三
创建集群步骤四
启动管理服务器
(1) C:\> cd C:\bea\user_projects\domains\myclusterdomain2008
(2) C:\> startWeblogic.cmd
启动代理服务器
登录控制台,创建一个名为ProxyServer的管理服务器
启动被管服务器(本地)
启动109.52.27.128上的managed server,在109.52.27.128机器上
(1) C:\> cd C:\bea\user_projects\domains\myclusterdomain2008
(2) C:\> startManagedWebLogic.cmd new_managedServer_1 http://109.52.27.128:7001(managedserver名称,要去注册的adminserver的地址)
启动被管服务器(远程)
简单地说需要先把NodeManager注册到AdminServer上,然后AdminServer才能管理远程的NodeManager。具体步骤如下:
(1) D:\bea92\weblogic92\server\bin>setwlsenv
-Start WLST at the remote Machine to run nmEnroll command
(2) D:\bea92\weblogic92\server\bin>java weblogic.WLST
Initializing WebLogic Scripting Tool (WLST) ...
(3) wls:/offline> connect()
Note:Give the user name and password for the Admin server which located on Machine A:
Please enter your username [weblogic] :weblogic
Please enter your password [weblogic] :
Please enter your server URL [t3://localhost:7001] :t3://10.128.23.111:7001
Connecting to t3://10.128.23.111:7001 with userid weblogic ...
S?ssfully connected to Admin Server 'AdminServer' that belongs to domain 'Nodemanager_domain'.
Warning: An insecure protocol was used to connect to the server. To ensure on-the-wire security, the SSL port or Admin port should be used instead.
(4) Run The nmEnroll Command:
wls:/Nodemanager_domain/serverConfig> nmEnroll(r'C:\bea9.2\weblogic92\common\nodemanager')
Enrolling this machine with the domain directory at C:\bea9.2\weblogic92\common\
nodemanager ...
S?ssfully enrolled this machine with the domain directory at C:\bea9.2\weblogic92\common\nodemanager.
wls:/Nodemanager_domain/serverConfig>
(5) -Done. Now start the Nodemanager .
部署代理应用
(1) 在Proxy server 上部署defaultProxy代理应用
(2) 先拷贝该应用到C:\bea\user_projects\domains\myclusterdomain2008\applications目录下,系统自动发布到myserver管理服务器下,使用控制台将该应用发布到Proxy Server服务器下。
代理的配置-web.xml
代理的配置-weblogic.xml
部署应用app
先拷贝该应用到C:\bea\user_projects\domains\myclusterdomain2008\applications目录下,系统自动发布到myserver管理服务器下,使用控制台将该应用发布到机器所有相关的被管理服务器下。
测试负载均衡
(1) 我们将通过Apache中所带的ab包来进行并发访问的模拟测试,使用如下的命令就可以完成压力测试。
(2) ab -n 100 -c 10 http://109.52.27.128:7000/defaultWebApp/index.jsp
(3) ab是测试程序的名称
(4) 参数n代表请求的总数量
(5) 参数c代表并发的请求数
(6) url为要测试压力的页面
成功标志
Ab后台输出
l Percentage of the reqsts served within a certain time (ms)
l 50% 156
l 66% 187
l 75% 187
l 80% 203
l 90% 2609
l 95% 2937
l 98% 3000
l 99% 3031
l 100% 3031 (longest reqst)
Percentage of the reqsts served within a certain time (ms)是指相应时间内完成的请求的百分比,比如第一行指在12655ms的时间差内完成了50%的请求的响应。
在两台机器的ManagedServer的控制台都打出了index.jsp的执行语句结果:ok
附:index.jsp内容
l <%
l out.println("OK");
l System.out.println("OK");
l if(session.getAttribute("session name")==null){
l session.setAttribute("session name","session val");
l out.println("session val is null ,set it "+session.getAttribute("session name"));
l }else{
l out.println("session val is set :"+session.getAttribute("session name").toString());
l }
l %>
Session 复制
l 由于集群环境中,用户访问的请求在不同的被管理服务器之间不停的切换,而用户访问又需要保持状态(Session),这就要求Session可以穿梭于被管服务器之间,就是各个被管服务器上的Session是一致的,这样用户才感觉不到请求的切换。
l 集群环境Session的一致性使用了Session复制的技术。
l 要求一: Servlets must use either setAttribute() or removeAttribute() to change the session object. If you use other set methods to change objects within the session, WebLogic Server does not replicate those changes.
l 要求二: In order to support in-memory replication for HTTP session states, all servlet and JSP session data must be serializable. If the servlet or JSP uses a combination of serializable and non-serializable objects, WebLogic Server does not replicate the session state of the non-serializable objects.
l 要求三:不是硬性要求,而是考虑到性能的因素,最好不要在Session里放置大对象。
l 实现方法:
在应用webapp的weblogic.xml中添加
<session-descriptor>
<session-param>
<param-name>PersistentStoreType</param-name>
<param-val>replicated</param-val>
</session-param>
</session-descriptor>
注: 将持久性存储方法设置为以下某个选项:
memory - 禁用持久性会话存储。
replicated - 与 memory 相同,但会话数据将在群集服务器之间复制。
replicated_if_clustered – 如果 Web 应用程序部署于群集服务器上,则会复制生效的 persistent-store-type。否则,memory 为默认值。
sync-replication-across-cluster – 复制将在群集内同步发生。
async-replication-across-cluster – 复制将在群集内异步发生。
file - 使用基于文件的持久性(另请参阅 persistent-store-dir)。
jdbc - 使用数据库存储持久性会话。(另请参阅 persistent-store-pool。)
cookie – 所有会话数据都存储于用户浏览器的 cookie 中。
Session复制测试
先访问:
http://109.52.27.128:7003/defaultWebApp/index.jsp
OK session val is null ,set it session val
在访问:
http://109.52.27.128:7003/defaultWebApp/index.jsp