目录
1.约定
- ${weblogic_home}表示Weblogic Server安装根目录。
- ${apache_home}表示Apache Http Server安装根目录。
2.weblogic相关概念
每个应用服务器尤其是企业级的应用服务器都有自己一套集群相关的机制及结构,所以我们要了解Weblogic集群,首先要了解这套机制及结构中的各个关键要素。
2.1. 域(domain)
域是一个管理单元,它是逻辑上相关的一组weblogic服务器资源的边界,这些资源可以是一个或多个服务器实例,也可以是服务器实例的集群,或者是服务器实例和集群的组合。
域对其内部的资源进行统一管制,执行这管制任务的是一个特殊的服务器,叫管理服务器(Administration Server),它在该域中是唯一的,它伴随域的创建而创建,如果不特别修改,它默认的端口号是7001。它有一个管理控制台,这个管理管制台是一个web应用程序,我们可以通过浏览器访问它,从而对域进行可视化的管理。
域中除这个管理服务器外,其它的服务器均为受管服务器(Managed Server)。
严格来讲,管理服务器只负责管理,是不运行业务应用程序的,而承载业务应用程序运行任务的是受管服务器。但是,当域中没有特别创建受管服务器时,也就是说,当一个域中只有一个管理服务器时,那么这个管理服务器既充当管理服务器的角色又充当受管服务器角色。
一个 WebLogic Server 环境可以由包含承载应用程序所需的所有受管服务器的单一域组成,也可以由多个域组成。可以选择创建由组织单元、系统管理员职责、应用程序边界或其他注意事项划分的多个域。在设计域配置时,请注意下列限制:
- 每个域都需要它自己的管理服务器来执行管理活动。在使用管理控制台执行管理和监视任务时,可以在两个域之间来回切换,但进行此操作时会连接到不同的管理服务器。
- 群集中的所有受管服务器必须都驻留在同一域中;不能将一个群集拆分到多个域中。
- 域中的所有受管服务器都必须运行同一版本的 WebLogic Server 软件。管理服务器可以运行与域中的受管服务器相同的版本,也可以运行较高版本的 Service Pack。
如果创建了多个域,则每个域必须引用其自己的数据库 Schema。不能在域之间共享配置的资源或子系统。例如,如果在一个域中创建了 JDBC 连接缓冲池,则不能将其用于另一个域中的受管服务器或群集。而是必须在另一个域中创建类似的连接缓冲池。此外,两个或多个系统资源不能使用同一名称。
图2-1域
2.2 服务器(server)
服务器是 WebLogic Server 的实例,它运行在自己的 Java 虚拟机 (JVM) 上,并具有自己的配置。这个配置体现在config.xml文件上,它是域的相关配置信息,它的顶级元素就是domain,文件的内容包括domain、server、machine、cluster、application及其它。
在创建域时,会伴随创建一个管理服务器(Administration Server),它是域的管控中心,负责存储、维护和管理其他所有WebLogic Server 实例的配置及其域中集群的配置(config.xml),在域中唯一。
除这个管理服务器外,其它的服务器均为受管服务器(Managed Server)。受管服务器在启动时会连接到本域的管理服务器以获取配置和部署信息。如果管理服务器不可用,则可以独立于管理服务器启动域中的受管服务器。在一个典型的生产环境中,通常在域中创建一个或多个受管服务器来承载业务应用程序,而只使用管理服务器来配置和监视这些受管服务器。
图2-2 管理服务器
2.3资源和服务
除管理服务器和受管服务器外,一个域还包含域中部署的受管服务器和承载的应用程序所必需的资源和服务。
域配置包含有关在其中运行域的网络计算机环境的信息,例如:
-
用于标识硬件的特定物理部分的计算机定义。计算机定义用于将计算机与它承载的受管服 务器相关联。节点管理器在重新启动失败的受管服务器时会使用此信息,另外,群集受管服务器在选择复制的会话数据的最佳存储位置时也会使用此信息。
- 网络通道,它是可用于定义默认端口、协议和协议设置的可选资源。创建网络通道后,可以将其分配给域中任意数目的受管服务器和群集。域配置还包含与域中承载的应用程序关联的资源和服务相关的信息。这些资源和服务的包括
- 应用程序组件,例如 EJB
- 安全提供程序
- 资源适配器
- JDBC 数据源
- JMS 服务器或其他消息传递资源
- 存储转发服务
- 持久性存储
- 启动类
- 诊断和监视服务
可将资源和服务限制为仅对域中的一个或多个受管服务器可用,而不是对整个域可用。可以将资源和服务部署到选定的多个受管服务器或一个群集。
2.4 节点管理器(Node Manager)
可选的后台进程,专用于提供服务器启动、重启、监控等功能并在整个服务器迁移中发挥重要作用。
2.5计算机(machine)
计算机是承载一个或多个 WebLogic Server 实例 (服务器) 的计算机的逻辑表示。WebLogic Server 使用配置的计算机名来确定集群中某些特定任务 (如 HTTP 会话复制) 要委派到的最佳服务器。管理服务器使用此计算机定义和节点管理器一起来启动远程服务器。
2.6集群(cluster)
集群定义 WebLogic Server 服务器组,这些服务器可协同工作来提高可扩展性和可靠性。对于客户机而言,集群是一个 WebLogic Server 实例。构成集群的服务器可以在同一台计算机上运行,也可以位于不同的计算机上,但它们都在同一个域中,由管理服务器统一管控。
集群中的受管服务器支持故障转移和负载平衡。
图2-3集群
3.准备工作
3.1计算机
序号 |
计算机逻辑名称 |
IP |
操作系统 |
其它配置 |
1 |
machine102 |
192.168.1.102 |
|
|
2 |
machine104 |
192.168.1.104 |
|
|
3.2. 服务器
序号 |
计算机 |
域 |
集群 |
服务器 |
端口 |
角色 |
1 |
machine104 |
N/A |
N/A |
Apache |
80 |
Proxy Server |
2 |
machine104 |
mydomain |
mycluster |
AdminServer |
7001 |
Administration Server |
3 |
machine104 |
mydomain |
mycluster |
myServer1 |
7005 |
Managed Server |
4 |
machine104 |
mydomain |
mycluster |
myServer2 |
7006 |
Managed Server |
5 |
machine102 |
mydomain |
mycluster |
myServer3 |
7007 |
Managed Server |
6 |
machine102 |
mydomain |
mycluster |
myServer4 |
7008 |
Managed Server |
3.3. 结构图
图3-1 结构图
4.配置Weblogic集群
4.1配置域及管理服务器
4.1.1. 启动配置向导
4.1.1.1 从开始菜单启动
图4-1 菜单域配置向导
4.1.1.2从命令行启动
在${weblogic_home}\oracle_common\common\bin目录下有个命令:config.rmd(linux下为config.sh),该命令打开域配置向导,依照该配置向导你可以一步一步顺利配置你的域。如果该命令后加参数“-mode=console”,如“config.cmd -mode=console”,则将在命令行进行域配置。这里我们不加“-mode=console”参数,而是通过打开图形界面配置向导来进行配置我们的域。
图4-2 命令行域配置向导(图形界面)
图4-3 命令行域配置向导(非图形界面)
4.1.2选择域模板
图4-4 选择域模板
4.1.3设置域名和域保存目录
这里域名设为mydomain,目录默认
图4-5 设置域名称及存储目录
4.1.4. 设置管理员用户名及密码
这里用户名设为weblogic,密码设为weblogic1。这是管理服务器登录管理控制台的用户名和密码,也是启动服务器的用户名和密码。
图4-6 域管理服务器用户名和密码
4.1.5选择服务器启动模式和JDK
启动模式有两种:开发模式和生产模式,这里我们选择生产模式。JDK可以用Weblogic自带的,也可以选择我们自己配置的,这里我们选择Weblogic自带的。
图4-7 选择服务器启动模式和JDK
4.1.6选择可选配置
Administration Server:修改管理服务器名称、IP、端口,默认管理服务器名称为“AdminServer”,默认IP为“All Local Addresses”,默认端口为:7001。
Managed Servers,Clusters and Machines:添加域的受管服务器、添加域集群、添加域物理计算机逻辑表示(即Machine)
RDBMS Security Store:
所谓“可选项配置”,意思是说,我们可以在此顺带配置我们的受管服务器和集群以及machine,当以后要调整(修改、新增或删除)时再通过管理服务器的管理控制台来处理。当然也可以不顺带配置上述信息,随你意愿。在这里,我们修改管理服务器的IP为192.168.1.104,端口默认;受管服务器、集群、machine则不在此顺带配置,我们全部通过管理服务器的管理管制台来配置。
图4-8 域可选配置
图4-9 管理服务器属性配置
4.1.7总体配置概览
这里是以上所有步骤所配置的信息一览表,如果觉得有些配置不妥,可以返回到某个步骤进行修改。如果没问题,点“创建”按钮创建域。
图4-10 域信息配置总览
4.1.8域配置完成
其中http://192.168.1.104:7001是管理服务器访问地址,后面加个“/console”就是管理服务器管理控制台访问地址。
图4-11 域创建界面
4.2配置受管服务器
4.2.1. 配置machine104中的受管服务器
4.2.1.1启动管理服务器
刚才我们创建了域“mydomain”,现在我们进入到该域的bin目录下:${weblogic_home}\user_projects\domains\mydomain\bin,或在命令行定位到该目录,运行startWebLogic.rmd(linux下为startWebLogic.sh)命令启动管理服务器。
如下图所示,“WLS Start Mode=Production”表示管理服务器的启动模式是生产模式;“Enter username to boot WebLogic server:weblogic”和“Enter password to boot WebLogic server:” 是我们4.1.4节配置的用户名和密码;“<Server started in RUNNING mode>”表示启动成功。
图4-12 服务器启动界
通过“http://192.168.1.104:7001/console”地址打开登录页面,输入4.1.4配置的用户名和密码,进入管理服务器控制台主页面。每个域只有一个管理服务器,你在右侧可以看到 字样,可见我们的管理服务器是运行在mydomain域中。如图:
图4-13 管理控制台主界面
4.2.1.3 新建计算机
这里配置两个物理计算机的逻辑表示:machine102和machine104,machine102代表集群中myserver3、myserver4受管服务器所在的物理机,而machine104则代表管理服务器AdminServer和myserver1、myserver2受管服务器所在的物理机。
点击左侧菜单“mydomain→环境→计算机”链接,点击左上角“锁定并编辑”按钮,点击右侧“计算机”列表上的“新建”按钮,如图:
图4-14 计算机创建入口界面
4.2.1.3.2设置计算机名称
图4-15 计算机基本信息配置
4.2.1.3.3设置节点管理器属性
节点管理器是一个独立的进程,一个machine只有一个,用于远程管理服务器,如启动、重启、停止及监控等,集群中各个服务器同步信息时也要用到(如同步JDBC服务和Session复制)。这里首先配置的是machine102,其IP为:192.168.1.102,监听端口默认为5556。
图4-16 节点管理器信息配置
4.2.1.3.4计算机新建建完成
以同样的步骤创建machine104,其IP为192.168.1.104,端口也默认为5556。点击左上角 激活更改按钮,使配置生效。两个machine创建完成如下图:
图4-17 计算机列表
4.2.1.4. 新建受管服务器
四个受管服务器需要创建:myserver1、myserver2、myserver3和mysrever4。myserver1、myserver2归属于machine104,IP为192.168.1.104,端口分别为7005、7006。myserver3、myserver4归属于mechine102,IP为192.168.1.102,端口分别为7007、7008。
因为管理服务器部署在machine104,集群又是通过管理服务器及其管理控制台来管理和配置的,所以myserver3、myserver4也要加入到machine104的受管服务器列表中,同时在配置集群时就可以选择mechine102的两个受管服务器。
4.2.1.4.1. 进入新建页面
点击左侧菜单“mydomain环境服务器”链接,点击左上角“锁定并编辑”按钮,点击右侧“服务器列表”列表上的“新建”按钮即可以新建受管服务器。从图中我们可以看到,列表中已经有一个“AdminServer”的服务器了,它是域的管理服务器,在创建域时创建的。如图:
图4-18 受管服务器创建入口界面
4.2.1.4.2. 设置受管服务器属性
先新建myserver1,IP为192.168.1.104,端口为7005。集群属性设置我们这里默认,因为集群尚未创建,我们稍后创建。
图4-19 受管服务器信息配置
4.2.1.4.3受管服务器属性配置概览
点击“完成”按钮即可新建myserver1受管服务器。
图4-19 受管服务器信息配置概览
4.2.1.4.4. 受管服务器新建完成
以同样的步骤创建myserver2、myserver3、myserver4,但我们这里要特别注意的是,我们的集群是横向集群,myserver3、myserver4的服务器监听地址可是machine102机子上的地址,即192.168.1.102,端口分别为7007、7008。但你可能会问:myserver3、myserver4既然部署在machine102机子上,在machine102会有对这两个受管服务器的配置,那么我们在machine104上为什么还要配置它?很简单,这是两回事,machine102是myserver3、myserver4的物理位置,必须配置,对于在machine104上的配置(把它们纳入到machine104的域中,且添加到集群),那是管控的需要,不然运行在machine104的管理服务器这么找到myserver3、myserver4?其实不管受管服务器在哪个物理节点上,只要我们在管理服务器的管理管制台上正确配置它们的访问地址及端口(通过Machine配置)即可。
图4-20 添加machine102上myserver3的受管服务器
图4-21域mydomain中的管理服务器及受管服务器列表
4.2.1.4.5. 将受管服务器加入到对应的Machine中
在服务器列表中点击服务器名称, 进入服务器“一般信息”面板页面,在“计算机”那一栏选择服务器所归属的machine名称,比如myserver1是属于machine104的,我们就选“machine104”,然后点“保存”按钮。我们依次对myserver2、myserver3、myserver4进行同样的操作,完成后点击左上角的 激活更改按钮使配置生效。
图4-22 myserver1受管服务器关联Machine
图4-23 受管服务器列表
4.2.1.5新建集群
4.2.1.5.1进入新建页面
点击左侧菜单“mydomain→环境→集群”链接,点击左上角“锁定并编辑”按钮,点击右侧集群列表列表上的“新建”按钮即可以新建集群。
图4-24 集群新建入口界面
集群名称为mycluster。消息传送模式有两种:单点传送、多点传送,我们这里选择“多点传送”。多点传送地址默认为“239.192.0.0”,我们用默认的。多点传送端口默认为“7001”,这个端口已经被管理服务器占用了,我们把它修改为“7777”。点“确定”按钮创建集群。
图4-25 mycluster集群配置
图4-26 集群列表
4.2.1.5.3添加受管服务器
在集群列表中点击mycluster集群名称,首先显示的是集群的“一般信息”,我们切换到“服务器”面板,点服务器列表上的“添加”按钮,将显示选择服务器的界面,我们在该界面选择我们要添加到集群的服务器。循环操作,把我们刚刚创建的四个受管服务器(myserver1、myserver2、myserver3和myserver4)都添加到mycluster集群中。点击左上角的激活更改按钮,使集群配置生效。
图4-27 集群mycluster添加受管服务器入口界面
图4-28 给集群mycluster选择受管服务器
图4-29 集群mycluster受管服务器列表
4.2.2. 配置machine102中的受管服务器
我们集群中有四个受管服务器,其中myserver1、myserver2在IP为192.168.1.104的机子上(machine104代表)中,剩下的两个即myserver3、myserver4则将部署在IP为192.168.1.102的机子上(machine102代表)。那么,在machine102机子上我们如何配置myserver3、myserver4?
这就简单了。
首先,我们在machine102机子安装与machine104机子上一样版本的Weblogic Server。
其次,创建一个域,为管理上的方便,域名与machine104配置的域名保持一致,即叫mydomain(其实不一致也可以,只要在machine104机子上配置集群时,myserver3、myserver4的IP和端口配置正确就行,因为我们在machine104的配置中已经将myserver3、myserver4纳入到mydomain的域中了,那么在启动myserver3、myserver4时会去连接machine104机子上的管理服务器,从而更新machine104中mydomain域的配置信息到myserver3、myserver4 对应的域下,即两边的config.xml中的内容将是一致的)。
再次,在machine102域的管理管制台上,我们只创建myserver3、myserver4这两个受管服务器,并把它们的端口分别设置为7007和7008即可,至于Machine、集群不用配置。
5.配置负载均衡代理
集群,我们已经配置好了,名为mycluster,接下来的工作,我们就是如何将来自来客户端的各个请求任务均衡地分摊到集群中的各个服务器上,即实现负载均衡。Weblogic Server 自身提供了代理服务器,但我们这里不打算用它,我们计划采用第三方的代理服务器:Apache Http Server 2.2。
Apache与Weblogic是两个不同的Server,要整合它们,需要用到特别的插件,这个插件安装在Apache这边,插件名称是:mod_wl_xx.so(“xx”是版本号)。
Weblogic Server 11g考虑很周全,它已经给我们提供了这个插件。
5.1安装weblogic插件
在{weblogic_home}\wlserver_10.3\server\plugin目录下,我们可以看到若干以操作系统名称命名的文件夹,因为本文的集群是运行在windows 32位操作系统上的,所以我们进入“win\32”目录,找到mod_wl_22.so文件。
图5-1 weblogic server插件存放目录
将mod_wl_22.so文件拷贝到Apache模块目录下:
图5-2 apache模块默认目录
打开Apache配置文件httpd.conf,放开相关代理模块,并通过LoadModule加载mod_wl_22.so。
图5-3 加载mod_wl_22.so插件配置
5.2配置Apache虚拟主机
在Apache安装目录的conf子目录下,进入extra目录,找到httpd-vhosts.conf文件。
图5-4 apache虚拟主机配置文件
修改httpd-vhosts.conf文件,加入如下内容:
代码5-1 整合了weblogic插件的apache虚拟主机配置代码
VirtualHost内的192.168.1.104是虚拟主机访问地址,IfModule标签(或叫容器)的作用是当Weblogic插件模块(weblogic_module)成功加载时,其中的配置生效。WeblogicCluster用于指定集群中的受管服务器,多个以逗号隔开。MatchExpression用于设置资源访问规则,指定那些资源由Weblogic Server来处理,那些由Apache Server来处理,可用正则表达式,“/*”表示可以访问集群中所有的授权资源。
图5-5 apache虚拟主机配置
6.配置SESSION复制
要实现SESSION复制,需要在我们的应用程序中做点工作。
首先是web.xml文件。要标志我们的应用是集群的、分布式的,那么,根据规则,我们需在web.xml文件中加入如下标记:<distributable/>。
其次,Weblogic提供了具有它自己特色的配置文件:weblogic.xml,这个文件与web.xml文件存放在同一目录。weblogic.xml覆盖了web.xml的大部分配置,同时加入了一些与Weblogic Server相适应的的配置,比如SESSION复制,其代码如下:
<session-descriptor>
<debug-enabled>true</debug-enabled>
<persistent-store-type>replicated</persistent-store-type>
<sharing-enabled>true</sharing-enabled>
</session-descriptor>
代码6-1 SESSION复制代码示例
7.启动服务器
7.1. 启动Weblogic管理服务器
在管理服务器上,直接定位到域的bin目录下,运行“startWeblogic.cmd”即可。
图7-1 管理服务器启动信息
7.2启动Weblogic受管服务器
因为四个服务器已经是受管服务器,所以用startManagedWeblogic命令,格式:“startManagedWeblogic.cmd 受管服务器名称 管理服务器地址”。为什么要管理服务器地址?因为受管服务器已经由管理服务器统一管理相关配置(包括集群)了,在启动时,会同步管理服务器上的配置。管理服务器地址为:http://192.168.1.104:7001。
- 启动myserver1
-
命令:startManagedWeblogic.cmd myserver1 http://192.168.1.104:7001
图7-2受管服务器myserver1启动信息
- 启动myserver2
命令:startManagedWeblogic.cmd myserver2 http://192.168.1.104:7001
图7-3受管服务器myserver2启动信息
- 启动myserver3
命令:startManagedWeblogic.cmd myserver3 http://192.168.1.104:7001
图7-4受管服务器myserver3启动信息
进入管理从控制台,我们可以看到四个受管服务器的启动状态。 图7-6显示,四个受管服务器已经是“running”状态了,说明成功启动。
-
启动myserver4
命令:startManagedWeblogic.cmd myserver4 http://192.168.1.104:7001
图7-5受管服务器myserver4启动信息
进入管理从控制台,我们可以看到四个受管服务器的启动状态。 图7-6显示,四个受管服务器已经是“running”状态了,说明成功启动。
图7-6 管理控制台受管服务器的启动状态
7.3. 启动Apache服务器
Apache服务器启动很简单,如果用命令行启动,命令是:httpd.exe –k start。见图7-7。
8.测试
8.1创建应用程序
应用程序的名称假定为wlstest。
8.1.1应用程序结构
图 8-1 wlstest应用程序结构
8.1.2应用程序主要内容
web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" id="WebApp_ID" version="2.5">
<display-name>wastest</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<distributable/>
</web-app>
配置8-1 web.xml配置<distributable/>用以说明当前应用程序是分布式应用程序,需要SESSION复制。
- weblogic.xml
配置应用上下文路径,配置SESSION复制。(只有应用服务器是集群模式才配置,单个节点服务无需配置)
<?xml version="1.0" encoding="UTF-8"?>
<weblogic-web-app xmlns="http://www.bea.com/ns/weblogic/90">
<context-root>/wlstest</context-root>
<session-descriptor>
<debug-enabled>true</debug-enabled>
<persistent-store-type>replicated</persistent-store-type>
<sharing-enabled>true</sharing-enabled>
</session-descriptor>
</weblogic-web-app>
配置8-2 weblogic.xml配置
- index.jsp
JSP页面,显示用户请求的Session ID、接受当前请求任务的服务
器IP以及当前请求Session中的值。
<%@ page language="java" pageEncoding="utf-8"%>
<%@ page import="java.util.*" %>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb18030"/>
<title>Weblogic集群测试</title>
<style type="text/css">
.tbl{width:600px;height:100px;border-collapse:collapse;line-height:30px;}
.tbl td{border:1px solid blue;}
.txtR{text-align:right;}
.txtL{text-align:right;}
.txtC{text-align:center;}
.divw{border:1px solid green;width:600px;}
</style>
</head>
<body>
<table class="tbl">
<tr><td colspan="2" class="txtC">当前请求所在的服务器信息:</td></tr>
<tr>
<td class="txtR">Session ID:</td>
<td class="txtC"><%=session.getId()%></td>
</tr>
<tr>
<td class="txtR">IP:</td>
<td class="txtC"><%=java.net.InetAddress.getLocalHost()%></td>
</tr>
</table>
</br></br>
<form action="index.jsp" method="POST">
<table class="tbl">
<tr><td colspan="2" class="txtC">创建Session:</td></tr>
<tr>
<td class="txtR">名称:</td>
<td class="txtC"><input type="text" name="sessionName"></td>
</tr>
<tr>
<td class="txtR">值:</td>
<td class="txtC"><input type="text" name="sessionValue"></td>
</tr>
<tr><td colspan="2" class="txtC"><input type="submit" value="创建Session数据"></td></tr>
</table>
</form>
</br>
<%
//向服务器控制台输出信息
System.out.println("request!");
//往Session中保存数据
String sessionName = request.getParameter("sessionName");
String sessionValue = request.getParameter("sessionValue");
if (sessionName != null && !"".equals(sessionName.trim())) {
session.setAttribute(sessionName, sessionValue);
}%>
<table class="tbl">
<tr>
<td colspan="2" class="txtC">
当前请求所在服务器的Session数据列表[<a href="javascript:location.href='index.jsp'">刷新列表</a>]:
</td></tr>
<%
Enumeration e = session.getAttributeNames();
while (e.hasMoreElements()) {
String name = (String)e.nextElement();
String value =session.getAttribute(name).toString();
%>
<tr><td colspan="2" class="txtC"><%=name%> = <%=value%></td></tr>
<%
}
%>
</table>
</body>
</html>
代码8-1 index.jsp页面文件代码
8.2部署应用程序
8.2.1开始部署
点击左侧菜单“mydomainà部署”链接,点击左上角“锁定并编辑”按钮,点击右侧部署列表列表上的“安装”按钮开始安装应用程序。
图8-2 应用程序部署首界面
8.2.2选择应用程序
定位到目标目录,选择要部署的应用程序,这里是WAR包,见图8-3。
图8-3 应用程序部署选择程序界面
8.2.3.选择定位样式
我们安装的是Web应用程序,所以选择“将此部署安装位应用程序”,见图8-4
图8-4 应用程序部署选择定位样式界面
8.2.4选择部署目标
我们的应用要运行在集群环境下所有的服务器上,我们的部署目标自然选择“mycluster à 集群中的所以服务器”。见图8-5。
图8-5 应用程序部署选择部署目标界面
8.2.5可选设置
按需要可设置其他属性。
图8-6 应用程序部署其他可选属性设置界面
8.2.6复查选项
这里显示前面步骤的相关设置,如果需要调整点击“上一步”返回,如果没问题点“完成”按钮。
图8-7 应用程序部署复查属性设置界面
8.2.7保存
设置完成,点击“保存”按钮保存设置。
图8-8 应用程序部署保存界面
8.2.8. 激活
点击左上角的“激活更改”按钮,激活当前保存的设置,使之生效。
图8-9 应用程序部署激活设置界面
8.2.9查看部署
查看我们集群服务器下的对应目录,可以看到我们已经将wlstest.war成功部署到所有节点的服务器上了。
图8-10(a) 成功部署在myserver1上的应用 图8-10(b) 成功部署在myserver2上的应用
8.3. 启动应用程序
选中程序“wlstest”,点击列表上的“启动→为所有请求提供服务”即可启动。
图8-11 应用程序启动界面
部署完成后的应用程序处于“准备就绪”状态,如果启动成功,状态转换为“start Running”。图8-11显示,wlstest程序成功启动了。
图8-12 应用程序启动完成界面
8.4. 测试
因为我们把Apache安装在192.168.1.104机器上,所以我们访问wsltest应用的地址为http:// 192.168.1.104/wlstest
8.4.1. 测试负载均衡
四个服务器已成功启动,我们用两个浏览器模拟两个客户端来进行测试。
首先通过Google Crome浏览器访问。可以看到,Apache服务器把当前的请求转发到192.168.1.102机器myserver3服务器上了,见图8-13、图8-14。
图8-13 Google Crome浏览器访问wlstest应用界面
图8-14 myserver3 服务器启动控制台打印出来的信息
再通过IE浏览器访问。这时Apache服务器把请求转发到了192.168.1.104机器myserver2服务器上,见图8-15、图8-16。
图8-15 IE浏览器访问wlstest应用界面
图8-16 myserver2 服务器启动控制台打印出来的信息
从这两次的访问,我们可以看到,负载均衡成功实现。
8.4.2测试故障转移及SESSION复制
故障转移,意思是说,当我正在访问的服务器突然挂掉时,系统可以把我的请求转移到另一个健康运行的服务器上,而不影响我当前的所有操作,包括会话数据。
在8.4.1节中,我们通过Google Crome浏览器访问了192.168.1.102机子上的myserver3。现在,我们在这次会话中创建一个变量,并把它保存到session中。假设变量名称为“ClusterSession”,值为“aabb”。
图8-17在myserver3上 创建名为 “ClusterSession”的session数据
接下来,我们停掉192.168.1.102机子上myserver3。
图8-18 myserver3被停掉
好,这时,我们正访问的myserver3服务器挂掉了。我们刷新一下页面看一看会是什么情况。嘿嘿,页面依然可以访问。看结果,访问的是192.168.1.102机子上的服务器,只不过这次访问的不是myserver3了(因为myserver3已经挂掉了),而是myserver4。故障成功转移!另外,还注意到没,两次访问显示的SessionId也是一样的,而且保存在session中的变量ClusterSession值也没有丢失,说明SESSION复制也成功了!
图8-19 myserver4被访问了
图8-20 myserver4服务器启动控制台打印出来的信息
刚才的故障转移及SESSION复制都是在同一台物理机上的两个服务器间进行的,那么,我们把192.168.1.102机子上的所有服务器都停掉,看看会是什么结果?请求会不会转移到集群的另一台物理机的某一个服务器上?现在我们就把192.168.1.102机子上的所有服务器都停掉。
图8-21 192.168.1.102机子上的所有服务器被停掉了
再次刷新页面,请求正确地转移到另一台IP地址为192.168.1.104的物理机的myserver2服务器上了,SessionId同样没变,保存在session变量中的值也还在。如图:
图8-22 myserver2被访问了
图8-23 myserver2服务器启动控制台打印出来的信息
9.附录
赠送有关java学习的书籍
- 《java编程思想-第四版》
- 《Oracle11G 从入门到精通》