什么是 Domain,Server,Machine,Cluster
图1
Domain
Domain 是WebLogic Server 实例的基本管理单元。所谓Domain 就是,由配置为
Administrator Server 的WebLogic Server 实例管理的逻辑单元,这个单元是有所有相关资源
的集合。
为什么用域?
域管理的特征:
WLS(WebLogic Server)域可以用来分离:
Server
Server 是一个相对独立的,为实现某些特定功能而结合在一起的单元。
服务器是执行在单一Java虚拟机(JVM)中weblogic.Server类的实例。
最多和一个WLS机器关联,占用一定数量的RAM,是多线程的。
Machine
Machine 是可以对应到服务器所在的物理硬件,可以是Unix 或non-Unix 类型,可以用来远程管理和监控,用于加强fail over 管理。
Cluster
Cluster 也是一个逻辑概念,用来分组用途相同的服务器实例,一个域中可以有多个集
群。集群用来实现负载均衡和容错。
WebLogic集群技术指通过一组服务器协同工作,在多台机器间复制应用表示层和应用逻辑层的能力,实现关键业务系统的负载分布,消除个别故障点。
Domain and Server 的关系
一个 Domain 可以包含一个或多个WebLogic Server 实例,甚至是Server 集群。一个
Domain 中有一个且只能有一个Server 担任管理Server 的功能,其它的Server 具体实现一个特定的逻辑功能。
平台:Windows XP SP3, 4G RAM,Windows 2003 Enterprise,2GRAM
软件:WebLogic Server 11gR1
一个集群就是一组协同工作的WebLogic服务器实例。
集群提供:高可用性、负载均衡、扩展性。
集群图示:图2、图3都是集群在应用环境中的示例。
图2
图3
扩展性就是可以为应用提供更多容量的能力,在这种情况下,增加额外的服务器,而不必对主体架构进行修改。
高可用性确保了集群中一台服务器发生故障时,其他服务器可以接管工作,因此对客户端没有影响。
当应用中一个执行任务的对象变得不可用时,另外对象可以接管并完成工作。
当单个站点上所有服务和应用都失败时,它们可以切换到其他站点,继续处理。
当一台服务器失败时,钉住的服务可以迁移到集群中其他服务器上。
跨越多个服务器的平均任务分发与通讯。
基本集群架构将静态HTTP,展现逻辑,业务逻辑和对象组合在一个集群中。如图4所示。(本文配置采用的是该结构)
图4
Web层和业务逻辑服务可以分布在两个集群中。如图5所示。
图5
多层集群架构推荐给具有如下需求的Web应用:
基本集群架构具有如下优势:
基本集群架构具有如下劣势:
多层集群架构具有如下优势:
多层集群架构具有如下劣势:
在配置集群应用前要对集群的配置信息有一个良好的设计,下面就是我们这次配置的集
群信息:在两台台机器上配置集群(每台机上都要安装相同版本的WebLogic 11g 产品)。见表1。
提示:建议您的测试服务器有4G 以上的内存,否则服务器启动过程将会很漫长。
机器类型 |
操作系统 |
网络配置 |
角色 |
备注 |
Lenovo PC |
Windows XP SP3 |
IP: 172.20.50.96 PORT:7001 |
Administrator Server |
管理服务器 |
Lenovo PC |
Windows XP SP3 |
IP: 172.20.50.96 PORT:8080 |
Proxy Server |
代理服务器 |
Lenovo PC |
Windows XP SP3 |
IP: 172.20.50.96 PORT:7003 |
Managed Server |
受管理服务器 |
Lenovo PC |
Windows XP SP3 |
IP: 172.20.50.96 PORT:7004 |
Managed Server |
受管理服务器 |
Lenovo PC |
Windows XP SP3 |
IP: 172.20.50.96 PORT:7005 |
Managed Server |
受管理服务器 |
Lenovo PC |
Windows 2003 Enterprise |
IP: 172.20.50.181 PORT:7006 |
Managed Server |
受管理服务器 |
Lenovo PC |
Windows 2003 Enterprise |
IP: 172.20.50.181 PORT:7007 |
Managed Server |
受管理服务器 |
表1
主控服务器在安装Window Xp的PC机下配置。
选择"「开始」菜单à程序àOracle WebLogicàWebLogic Server 11gR1àToolsàConfiguration Wizard"
图6
选择"创建新的Weblogic域",单击"下一步"按钮。
图7
默认选择安装"Basic WebLogic Server Domain", 单击"下一步"按钮。
图8
输入要创建的域名和位置,此处域名输入为 MyCluster_Domain,输入完成后单击"下一步"按钮。本文安装位置为E:\study\WebLogic11g\user_projects\domains目录下。
图9
输入 WebLogic 管理员管理服务器(AdminServer)用户名和密码,在此以"weblogic"作用登录管理服务器的用户名,密码为"weblogic1",单击"下一步"按钮。
图10
选择"生产模式"和"JRockit SDK"后,单击"下一步"按钮。
图11
选择"管理服务器","受管服务器、群集和计算机"后,单击"下一步"按钮。
图12
输入 Administrator Server 名称,监听地址(可选所有IP或者指定IP),监听端口,如果需要SSL支持的话可以在"SSL enabled"后面的复选取框上打勾,配置SSL 监听端口,单击"下一步"按钮。
图13
注意:代理服务器实际上也是一个受管理服务器
点击"添加",输入 Managed Server 的名称,监听地址,监听端口,如果需要SSL 支持的话,可以在"SSL enabled"复选框上打勾,配置SSL 监听端口。
可以配置多个Managed Server,名称和端口都不要相同,如果IP地址在选择的下拉框中没有,可以手动填写,完成后单击"下一步"按钮。
图14
单击"添加",输入Cluster 的名称My_Cluster_1,Multicast address 组播地址(用来进行集群间的状态通信)和端口7777,Cluster 的各个服务器地址和端口(Cluster 地址可输可不输,本文进行了输入,地址为:"172.20.50.96:7003,172.20.50.96:7004,172.20.50.96:7005,172.20.50.181:7006,172.20.50.181:7007")。完成后单击"下一步"按钮。
提示:当用Configuration Wizard 创建集群时,您只能选择multicast,虽然官方文档推荐新建集群时使用unicast 消息机制;若选择unicast,您只能在Administration Console 中修改集群的配置,参考Oracle Fusion Middleware Oracle WebLogic Server Administration Console 帮助文档中的:"Create and configure clusters".
提示: multicast address 的IP 范围必须位于224.0.0.0 到 239.255.255.255 之间.
WebLogic Server 使用的multicast 默认值为 239.192.0.0. 您不能使用类似于x.0.0.1的多播地址.
图15
选择左面列表中的Managed Server,将其添加到右面的列表中,注意这里代理服务器Proxy_Server 不要添加到右边,之后单击"下一步"按钮。
图16
选中"创建HTTP 代理"复选框,My_Cluster_1 代理服务器选择Proxy_Server,单击"下一步"按钮。
图17
点击"添加",输入计算机的名称,监听地址,监听端口,单击"下一步"按钮。
图18
选择左面列表中的Admin Server、Managed Servers、Proxy Server,将其添加到右面的计算机下,之后单击"下一步"按钮。
图19
在此检查前面所做的配置,如果没有问题单击"创建"按钮。
图20
创建无误后,单击"完成"按钮
图21
在刚才创建的域目录下建立 boot.properties 文件,内容为:
username=weblogic
password=weblogic1
在本文的机器上,该文件的存储位置是:
E:\study\WebLogic11g\user_projects\domains\MyCluster_Domain\boot.properties。
在刚才创建的域目录下的bin 目录中创建startAdminServer.cmd,内容为:
@ECHO OFF
@REM 启动管理服务器.
start .\startWebLogic
在本文的机器上,该文件的存储位置是:
E:\study\WebLogic11g\user_projects\domains\MyCluster_Domain\bin\startAdminServer.cmd。
在刚才创建的域目录下的 bin 目录中创建startProxyServer.cmd,内容为:
@ECHO OFF
@REM 启动代理服务器.
@REM 使用startManagedWeblogic 命令启动Managed Server,它的命令格式是:
@REM startManagedWeblogic.cmd Managed Server 的名称 Administrator Server 地址
@REM startManagedWeblogic 受管理服务器名称管理服务器 URL
start .\startManagedWebLogic Proxy_Server http://172.20.50.96:7001
在本文的机器上,该文件的存储位置是:
E:\study\WebLogic11g\user_projects\domains\MyCluster_Domain\bin\startProxyServer.cmd。
在刚才创建的域目录下的 bin 目录中创建startManagedServer_1.cmd,内容为:
@ECHO OFF
@REM 启动受管理服务 Cluster_ManagedServer_1.
@REM 使用startManagedWeblogic 命令启动Managed Server,它的命令格式是:
@REM startManagedWeblogic.cmd Managed Server 的名称 Administrator Server 地址
@REM startManagedWeblogic 受管理服务器名称管理服务器 URL
start .\startManagedWebLogic Cluster_ManagedServer_1 http://172.20.50.96:7001
在本文的机器上,该文件的存储位置是:
E:\study\WebLogic11g\user_projects\domains\MyCluster_Domain\bin\startManagedServer_1.cmd。
在刚才创建的域目录下的 bin 目录中创建startManagedServer_2.cmd,内容为:
@ECHO OFF
@REM 启动受管理服务 Cluster_ManagedServer_2.
@REM 使用startManagedWeblogic 命令启动Managed Server,它的命令格式是:
@REM startManagedWeblogic.cmd Managed Server 的名称 Administrator Server 地址
@REM startManagedWeblogic 受管理服务器名称管理服务器 URL
start .\startManagedWebLogic Cluster_ManagedServer_2 http://172.20.50.96:7001
在本文的机器上,该文件的存储位置是:
E:\study\WebLogic11g\user_projects\domains\MyCluster_Domain\bin\startManagedServer_2.cmd。
在刚才创建的域目录下的 bin 目录中创建startManagedServer_3.cmd,内容为:
@ECHO OFF
@REM 启动受管理服务 Cluster_ManagedServer_3.
@REM 使用startManagedWeblogic 命令启动Managed Server,它的命令格式是:
@REM startManagedWeblogic.cmd Managed Server 的名称 Administrator Server 地址
@REM startManagedWeblogic 受管理服务器名称管理服务器 URL
start .\startManagedWebLogic Cluster_ManagedServer_3 http://172.20.50.96:7001
在本文的机器上,该文件的存储位置是:
E:\study\WebLogic11g\user_projects\domains\MyCluster_Domain\bin\startManagedServer_3.cmd。
(注:若使用 startManagedWebLogic 命令启动Managed Server,它的命令格式是:
startManagedWebLogic.cmd Managed Server 的名称Administrator Server 地址)
附启动文件:
受控服务器在安装Window 2003 Enterprise的PC机下配置。
选择"「开始」菜单à程序àOracle WebLogicàWebLogic Server 11gR1àToolsàConfiguration Wizard"
图22
选择"创建新的Weblogic域",单击"下一步"按钮。
图23
默认选择安装"Basic WebLogic Server Domain", 单击"下一步"按钮。
图24
输入要创建的域名和位置,此处域名可输入为 MyCluster_Domain,输入完成后单击"下一步"按钮。本文安装位置为D:\weblogic\weblogic11g\user_projects\domains目录下。
图25
输入 WebLogic 管理员管理服务器(AdminServer)用户名和密码,在此以"weblogic"作用登录管理服务器的用户名,密码为"weblogic1",单击"下一步"按钮。
图26
选择"生产模式"和"JRockit SDK"后,单击"下一步"按钮。
图27
选择"管理服务器","受管服务器、群集和计算机"后,单击"下一步"按钮。
图28
输入 Administrator Server 名称,监听地址(可选所有IP或者指定IP),监听端口,如果需要SSL支持的话可以在"SSL enabled"后面的复选取框上打勾,配置SSL 监听端口,单击"下一步"按钮。
图29
注意:受管理服务器配置的名称,监听地址,监听端口要和在主控服务器配置中的一致(参见4.1.9.配置受管理服务器)。
点击"添加",输入 Managed Server 的名称,监听地址,监听端口,如果需要SSL 支持的话,可以在"SSL enabled"复选框上打勾,配置SSL 监听端口。
图30
这里不做集群配置,单击"下一步"按钮。
图31
这里不做计算机配置,单击"下一步"按钮。
图32
在此检查前面所做的配置,如果没有问题单击"创建"按钮。
图33
创建无误后,单击"完成"按钮
图34
在刚才创建的域目录下建立 boot.properties 文件,内容为:
username=weblogic
password=weblogic1
在本文的机器上,该文件的存储位置是:
D:\weblogic\weblogic11g\user_projects\domains\MyCluster_Domain\boot.properties。
在刚才创建的域目录下的bin 目录中创建startAdminServer.cmd,内容为:
@ECHO OFF
@REM 启动管理服务器.
start .\startWebLogic
在本文的机器上,该文件的存储位置是:
D:\weblogic\weblogic11g\user_projects\domains\MyCluster_Domain\bin\startAdminServer.cmd。
在刚才创建的域目录下的 bin 目录中创建startManagedServer_4.cmd,内容为:
@ECHO OFF
@REM 启动受管理服务 Cluster_ManagedServer_4.
@REM 使用startManagedWeblogic 命令启动Managed Server,它的命令格式是:
@REM startManagedWeblogic.cmd Managed Server 的名称 Administrator Server 地址
@REM startManagedWeblogic 受管理服务器名称管理服务器 URL
start .\startManagedWebLogic Cluster_ManagedServer_4 http://172.20.50.96:7001
在本文的机器上,该文件的存储位置是:
D:\weblogic\weblogic11g\user_projects\domains\MyCluster_Domain\bin\startManagedServer_4.cmd。
在刚才创建的域目录下的 bin 目录中创建startManagedServer_5.cmd,内容为:
@ECHO OFF
@REM 启动受管理服务 Cluster_ManagedServer_5.
@REM 使用startManagedWeblogic 命令启动Managed Server,它的命令格式是:
@REM startManagedWeblogic.cmd Managed Server 的名称 Administrator Server 地址
@REM startManagedWeblogic 受管理服务器名称管理服务器 URL
start .\startManagedWebLogic Cluster_ManagedServer_5 http://172.20.50.96:7001
在本文的机器上,该文件的存储位置是:
D:\weblogic\weblogic11g\user_projects\domains\MyCluster_Domain\bin\startManagedServer_5.cmd。
附启动文件:
建议您按照顺序启动服务器,只有当管理服务器首先启动完毕后,受管服务器再启动。
启动的过程中,会让输入管理员用户名(weblogic)和密码(weblogic1),当所有服务器的控制台上出现Server started in RUNNING mode 字样时,整个集群启动完毕。
图35
图36
图37
图38
图39
登录进控制台后点击左边"域结构"中的"部署"菜单,如下图
图46
此时在界面主区域可以看到已部署的应用,如下图
图47
点击更改中心里的"锁定并编辑"按钮,此时在界面主区域中的"安装"按钮会变成可用状态,如下图
图48
点击"安装"按钮,进入部署步骤,选择要部署的文件,点击下一步按钮
图49
按照默认设置,点击下一步按钮
图50
选择集群的一部分进行安装,这里为被管理的服务器都进行了安装,点击下一步按钮
图51
按照默认设置,点击下一步按钮
图52
点击完成按钮
图53
点击保存按钮,界面主区域中上方显示"设置更新成功"字样
图54
点击左上角"更改中心"中的"激活更改"按钮,完成后,界面主区域中上方显示"已激活所有更改。不需要重新启动。"消息
图55
本文部署使用的例子:
点击左面"域结构"中的"部署链接",在主界面中会显示刚刚部署成功的"ShoppingCart"工程,选择该工程左面的checkbox,点击"启动"按钮,选择"为所有请求提供服务"
图56
点击"是"按钮,进入下一页面,ShoppingCart工程的状态会显示"start running"字样,过一会,再点击左边"域结构"中的"部署"菜单,ShoppingCart工程的状态会显示"活动"字样,可以点击"活动"链接查看具体部署情况。
图57
在浏览器中输入http://172.20.50.96:8080/ShoppingCart/ClusterTest.jsp,页面上会显示"Cluster Test!"字样。
图58
本文在Windows 2003 Enterprise上的被管理服务器的控制台打出:Cluster Test! 在哪台被控服务器上打印,每次会不一样。
图59
ClusterTest.jsp文件内容:
<HTML>
<HEAD><TITLE>Cluster Test Page</TITLE></HEAD>
<BODY>
<%
out.println("Cluster Test!");
System.out.println("Cluster Test!");
%>
</BODY>
</HTML>
通过 Apache 中所带的ab包(只需要单个文件ab.exe 即可,本文安装了Apache2.2,ab.exe所在目录为C:\Program Files\Apache Software Foundation\Apache2.2\bin)来进行并发访问的模拟测试,使用如下的命令就可以完成压力测试。
ab.exe -n 100 -c 10 http://172.20.50.96:8080/ShoppingCart/ClusterTest.jsp
参数 n 代表请求的总数量
参数 c 代表并发的请求数
url 为要测试压力的地址
图60
压力测试完成后,我们从Managed Servers 的控制台上可以看到打印输出,ManagedServer_1,ManagedServer_2,ManagedServer_4 都打印出了"Cluster Test!"字样(这里ManagedServer_3,ManagedServer_5没有打出,不同的测试环境,哪个受管理服务器打印可能不同),这说明,在并发请求的情况下,集群能够将请求进行分发,以达到负载平衡的目的。
进入控制台,在左侧"控制台"点击"服务器"链接,在界面主区域中点击"控制"tab按钮,选择要关闭的服务器,如下图。
图61
点击"关闭"按钮,选择"当工作完成时"或者"立即强制关闭",建议您按照顺序关闭服务器,当受管理服务器和代理服务器关闭后,再关闭管理服务器。
图62
下图是一个受管理服务器关闭后的控制台消息。
图63
这里以关闭一个受管理服务器为例,关闭代理服务器和管理服务器一样,都要用到stopManagedWebLogic.cmd命令,格式为"stopManagedWebLogic.cmd 要关闭服务的名字"。打开windows的cmd命令行工具,进入172.20.50.96上的E:\study\WebLogic11g\user_projects\domains\MyCluster_Domain\bin路径,打以下命令回车:
"stopManagedWebLogic.cmd Cluster_ManagedServer_3",中间提示输入用户名和密码,这里分别是weblogic,weblogic1。关闭后如下图:
图64
点击正在运行的服务器控制台,按下Ctrl+C组合键,输出几行文字后,控制台会打出"终止批处理操作吗(Y/N)? "消息,输入"Y",回车,该服务器将被强制关闭。
图65
WebLogic服务器通过复制HTTP会话状态,对JSP和Servlet提供集群支持。
本文只做了"内存复制"的配置。
为了支持in-memory http session复制,所有的servlet和jsp会话数据必须可序列化,实现java.io.Serializable接口。
在实现了javax.servlet.http.HttpSession的http servlet中,用HttpSession.setAttribute代替putValue方法去修改session 对象。putValue方法不建议用,同样用removeAttribute代替removeValue去删除session对象。
因为往session中存放的数据比较大时,系统的响应速度明显变慢,有时会出现内存溢出的情况。
在特定的框架集(frameset)中,确保只有一个框架(frame)创建和修改会话数据;必须确保只在第一个框架集的一个框架中创建会话,其他框架集访问该session。
WebLogic服务器中,机器名用来指明一个受管服务器运行在一个特定的硬件上。机器定义是WebLogic选择另一个服务器作为它的会话信息备份时的一个考量因素。
复制组是集群中相关服务器的逻辑组,WLS允许你使用复制组,决定在哪里放置备份对象。WLS尝试以下方式进行session复制:
WebLogic服务器对集群中的服务器分级,以决定哪个服务器作为备份:
图66
会话持久性通过weblogic.xml部署描述符文件中的<session-descriptor>元素配置的,每种持久性方法都有自己的配置参数集。
WLS可以复制HttpSession对象和
有状态会话EJB,会话对象仅存在两
台服务器上,称作主要服务器和次
要服务器。次要服务器由复制组和机
器定义决定,主要对象创建后,次要
对象马上被创建。如右图所示
图67
主要服务器失败,使得备份对象成为主要对象,如下图。
图68
图69
<persistent-store-type>replicated_if_clustered</persistent-store-type>
本文是在上面配置好集群的基础上做内存session复制,其中代理服务器和机器已经配置好了,下面主要做复制组的配置和weblogic.xml的配置。
复制组规划图:
图70
复制组和服务器的分配:
Server |
Replication Groups |
Preferred secondary replication group |
ManagedServer_1 |
MyGroupA |
MyGroupB |
ManagedServer_2 |
MyGroupA |
MyGroupB |
ManagedServer_3 |
MyGroupB |
MyGroupA |
ManagedServer_4 |
MyGroupA |
MyGroupB |
ManagedServer_5 |
MyGroupB |
MyGroupA |
表2
如果一个客户端连接到服务器ManagedServer3并创造一个HTTP会话状态,按照WebLogic选作备份服务器对集群中服务器的分级,下面是复制该session的优先级:
优先级1:ManagedServer4,因为它们处在不同的机器上,并且它是ManagedServer3的预定义首选次级组成员。
优先级2:ManagedServer1,ManagedServer2,它是ManagedServer3的预定义首选次级组成员,虽然在一台机器上。
优先级3:ManagedServer5,它和ManagedServer3不在一台机器上,虽然同在一个复制组中。
启动weblogic管理服务器、代理服务器。
图71
图72
图73
图74
按照"表2"中的复制组和服务器的分配,以同样地方式设置其他被管理服务器。
图75
图76
图77
图78
在Cluster_ManagedServer_3停掉后,Cluster_ManagedServer_4中session对象的状态会由Secondary State变成Primary State,现在Cluster_ManagedServer_1用作次要服务器,请参见本文"5.3.1服务器和会话对象"一节。
图79
原来购买的商品仍在购物车里,证明session已经成功复制,因为商品信息是保存在session中。
图82
图83
本次购买价格"199.99"的商品,并返回购物车页面查看已购买的商品
图84
原来购买的商品仍在购物车里,证明第二次session已经成功复制,session对象由服务器Cluster_ManagedServer_4复制到服务器Cluster_ManagedServer_1中。
图85