第一部分 实验目的
- 理解Glassfish V3.1.2.2 Cluster的工作原理
- 理解Apache HTTPD 软件负载均衡的工作原理
- 理解如何使用Glassfish的内存复制功能
- 验证是否或者如何通过Apache HTTPD + Glassfish完成故障转移
第二部分 实验环境设计与搭建
2.1 实验环境拓扑
为了方便起见,实验环境由如简化过的网络拓扑示意图所示,有两个子网构成,分别为Glassfish Cluster Web Subnet和Glassfish Cluster Admin Subnet。
其中Glassfish Cluster Web Subnet作为Web Requests处理的子网,由一下元素组成:
- Web Gateway, 拥有公网IP地址,作为互联网业务请求的入口。
- Load Balance(以下简称LB),软件负载均衡器,将互联网的业务请求按照一定规则转交给4个Glassfish Server Instances以均衡负载。
- Glassfish Node 1~2,每一个Glassfish Node当中包含两个Glassfish Server Instance。
- Instance 1 ~ 4, 为4个Glassfish Server的实例。
此外Glassfish Cluster Admin Subnet作为应用服务器管理的子网,由以下元素构成:
- Admin Gateway, 可以拥有公网IP地址,作为系统管理员完成日常维护工作的入口。
- Domain Administration Server,域管理服务器,为Glassfish服务器的术语,用来管理domain下的各个Clusters, Nodes, Instances, Resources, Applications 和其他组件。
- Glassfish Node 1~2,同上段介绍。
注意:对应Glassfish Cluster的概念, 一个Glassfish Cluster由DAS, Node, 以及各个instance构成。
由于资源有限且为了方便实验环境的构建,两个网关部分暂时省去,两个子网也可以暂时合并为一个子网。
2.2 实验环境描述
笔者采用VMware虚拟机构建目标环境,构建环境的大部分过程可以重用于云端虚拟环境。以下为实验环境清单:
- 物理主机:MacOS 10.8.3 + 2.7 GHz Intel Core i7 + 16GB 1600 MHz DDR3 + 512G SSD
- 虚拟机软件:VMware Fusion 5.0.3
- 虚拟主机:
- LB
- 1GB MEM + 1 CPU + 20G + NAT (192.168.107.130) (load-balancer)
- DAS
- 1GB MEM + 1 CPU + 20G + NAT (192.168.107.131) (das)
- Glassfish Node 1
- 1GB MEM + 1 CPU + 20G + NAT (192.168.107.129) (gnode-1)
- Glassfish Node 2
- 1GB MEM + 1 CPU + 20G + NAT (192.168.107.128) (gnode-2)
- LB
- ubuntu安装镜像
- ubuntu-12.10-server-amd64.iso
- ubuntu基本安装配置
- 软件列表配置为VMware默认列表
- 安装过程为VMware默认的无人参与安装
- 虚拟资源配置参考“虚拟主机”部分
- 服务器软件安装
- LB
- openssh
- httpd
- DAS
- openssh
- sun-java6-jdk
- glassfish
- Glassfish Node 1~2
- openssh
- sun-java6-jdk
- glassfish (集群Node设定过程中自动安装)
- LB
- 服务器账户
- username:asadmin
- password:adminadmin
- 相关目录设定
- glassfish
- /home/asadmin/runtimes/glassfish3
- glassfish
- 相关端口设定
- ssh, 22
- httpd, 80
- glassfish das admin console, 4848
注解:
- NAT为虚拟主机网络配置选项,Network Address Translation 网络地址转换
- IP地址通过DHCP获得
- 由于Glassfish集群配置过程中需要用到各个Glassfish Node的主机名称,所以建议为每个主机设定有意义的名称。同时可以在各个虚拟主机的/etc/hosts文件中指定各个主机名与IP地址映射关系,例如下面文本片段
/etc/hosts
192.168.107.131 das
192.168.107.130 load-balancer
192.168.107.129 gnode-1
192.168.107.128 gnode-2
2.3 实验环境搭建过程
2.3.1 在VMware Fusion上安装虚拟机
根据上一节对实验环境的描述,需要安装配置4台虚拟主机。为了节省安装时间,可以采取下面的安装配置步骤来完成:
- 安装模板虚拟主机
- 在模板主机中配置安装openssh-server
- 如果计划使用指定IP地址的情况下,可预先在模板主机中的/etc/hosts文件中增加前述文本片段,否则可跳过这一步
- 复制模板虚拟主机为load-balancer虚拟主机,并通过VMware生成新的MAC地址
- 在load-balancer虚拟主机中安装apache web server
- 复制模板虚拟主机为glassfish-node模板虚拟主机模板,并通过VMware生成新的MAC地址
- 在glassfish-node虚拟主机模板中安装sun-java6-jdk
- 在glassfish-node虚拟主机模板中创建/home/asadmin/runtimes目录
- 复制glassfish-node虚拟主机模板为glassfish-node 1
- 复制glassfish-node虚拟主机模板为glassfish-node 2
- 复制glassfish-node虚拟主机模板为domain administration server
- 更改各个虚拟机主机名称和配置所有虚拟主机/etc/hosts文件
- 在domain administration server中安装glassfish v3.1.2.2
2.3.1.1 安装模板虚拟主机
使用VMware Fusion安装ubuntu-12.10-amd64-server, 包括设定用户名和密码(asadmin, adminadmin),
注解:在VMware Fusion安装的过程中,基本采用默认的配置方式(选择“下一步”,暂时忽略自定义部分),VMware会提示输入目标虚拟主机的用户名和密码,此时填入配置中给出用户名和密码。
2.3.1.2 在模板主机中配置安装openssh-server
在采用VMware Fusion默认安装的版本中,openssh-server不是默认安装内置,需要手动安装。但是ssh服务的配置文件ssh_config在未手动安装之前就已经存在/etc/ssh/目录下。
为了简化安全配置,本次试验选用用户名密码登陆方式(而不是key文件登录方式),所以首先通过下列命令打开文件
sudo vi /etc/ssh/ssh_config
然后将PasswordAuthentication yes前面的#去掉
PasswordAuthentication yes
保存退出(esc :wq)
然后使用下面的命令安装openssh,安装后服务会自动启动。
sudo apt-get install openssh-server
最后,使用下面命令关闭虚拟模板主机
sudo shutdown -P 0
注:首先配置文件然后再安装openssh-server减少一次ssh服务重启。
2.3.1.4 复制虚拟主机模板为load-balancer虚拟主机
在MacOS中使用Finder程序,到个人的“文稿”(Documents)目录下,进入“虚拟机”目录,复制刚刚安装好的虚拟主机模板,将其重命名(比如load-balancer)。
在未启动load-balancer的状态下,打开load-balancer虚拟主机窗口,点击窗口上方的 设定(扳手)按钮。在打开的设定面板窗口中,选择网络适配器。点击底部的“高级选项”,如下图所示,最后点击“生成”按钮用来生成新的MAC地址。
2.3.1.5 在load-balancer虚拟主机中安装apache web server
当MAC地址重新设定完成后,开启load-balancer虚拟主机,并登陆(终端)执行下面的命令来安装apache2 web server
sudo apt-get install apache2
最后,使用下面命令关闭load-balancer虚拟主机
sudo shutdown -P 0
2.3.1.6 复制模板虚拟主机为glassfish-node模板虚拟主机模板,并通过VMware生成新的MAC地址
使用类似2.3.1.4的步骤复制glassfish-node虚拟主机模板以及生成新的MAC地址。
2.3.1.7 在glassfish-node虚拟主机模板中安装sun-java6-jdk
启动glassfish-node模版虚拟主机,按照如下方式安装sun-java6-jdk
转载自 http://www.gaggl.com/2012/04/installing-java6-jdk-on-ubuntu-12-04/
sudo apt-get purge sun-java
* #You need to do that if you want the mozilla plugin to work without conflict with java7 for instance.mkdir ~/src
cd ~/src
git clone https://github.com/flexiondotorg/oab-java6.git
cd ~/src/oab-java6
sudo ./oab-java.sh
Then when its finished, install java:sudo apt-get install sun-java6-plugin sun-java6-jre sun-java6-bin sun-java6-jdk
You can follow the installation process with:tail -f ~/src/oab-java6/oab-java.sh.log
Note: If you do not need Java 6 it’s much safer to stick to the current Oracle Java 7release.
2.3.1.8 在glassfish-node虚拟主机模板中创建/home/asadmin/runtimes目录
通过下面命令创建相应目录
mkdir runtimes
最后,使用下面命令关闭load-balancer虚拟主机
sudo shutdown -P 0
按照2.3.1.4所提供的步骤完成下面三步
2.3.1.9 复制glassfish-node虚拟主机模板为glassfish-node 1
2.3.1.10 复制glassfish-node虚拟主机模板为glassfish-node 2
2.3.1.11 复制glassfish-node虚拟主机模板为glassfish domain administration server
2.3.1.12 更改所有虚拟主机主机名称以及配置/etc/hosts文件
启动所有虚拟主机,通过下列命令获取各个虚拟主机的IP地址
asadmin@localhost:~$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:7b:ab:a3
inet addr:192.168.107.130 Bcast:192.168.107.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe7b:aba3/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:3858 errors:0 dropped:0 overruns:0 frame:0
TX packets:1579 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:4790744 (4.7 MB) TX bytes:105902 (105.9 KB)
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
inet6 addr: ::1/128 Scope:Host
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:16 errors:0 dropped:0 overruns:0 frame:0
TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:1184 (1.1 KB) TX bytes:1184 (1.1 KB)
通过下面命令编辑主机名称
asadmin@localhost:~$ sudo vi /etc/hostname
#文件打开后第一行如下
localhost
#将localhost去掉并替换为相应主机名称,如load-balancer, das, gnode-1, gnode-2
load-balancer
注意:根据IP地址与映射关系来更改主机名称
如上ifconfig命令所示,本机eth0端口对应的IP地址为192.168.107.130, 按照预期设计该主机名为load-balancer。收集齐全四个虚拟主机的IP地址以后编辑每个虚拟主机的/etc/hosts文件,按照下面文本的方式编辑IP地址与主机名映射关系。
asadmin@localhost:~$ sudo vi /etc/hosts
#将原来前两行对应的localhost替换为对应的主机名,本例中应为load-balancer,如下
127.0.0.1 load-balancer
127.0.1.1 localhost.localdomain load-balancer
#并且在文件最后添加
192.168.107.131 das
192.168.107.130 load-balancer
192.168.107.129 gnode-1
192.168.107.128 gnode-2
编辑结束后,保存退出(ESC + :wq), 其他虚拟机的主机名称以及IP地址与主机名映射关系修改方式同上,集中在/etc/hostname以及/etc/hosts两个文件中。更改完毕后,重新启动虚拟机,在ssh登录到虚拟主机之后,可以通过下面命令来检验修改是否生效。
asadmin@load-balancer$ hostname
load-balancer
将上述过程应用到其他虚拟主机也可以应用在MacOS主机。
2.3.1.13 在domain administration server中安装glassfish v3.1.2.2
在开启的glassfish domain administration server (das)虚拟主机中登陆(或者通过ssh登陆,如在MacOS的“终端”,键入ssh [email protected])
如果从未在MacOS中下载过glassfish v3.1.2.2的zip版本(切记下载zip版本,不是sh版本),则可以选择使用下面命令行在das中下载
asadmin@localhost:~$ cd ~/runtimes
asadmin@localhost:~$ wget http://download.java.net/glassfish/3.1.2.2/release/glassfish-3.1.2.2-ml.zip
如果MacOS中已经下载过相应版本,在MacOS中,打开命令行“终端”应用程序,切换到下载有glassfish-3.1.2.2-ml.zip的目录中,选择使用下面命令将MacOS中的软件远程拷贝给das。
scp ./glassfish-3.1.2.2-ml.zip [email protected]:/home/asadmin/runtimes/
接下来,对已下载的glassfish-3.1.2.2-ml.zip文件解压缩,如下
unzip glassfish-3.1.2.2-ml.zip
解压缩完成后,目录中将出现glassfish3目录,至此glassfish3已经成功安装并且
“
在VMware Fusion上安装虚拟机”部分结束
注:笔者在MacOS的/etc/hosts文件中同样加入上面提到的 IP地址与主机名映射关系,这样方便在MacOS中通过“终端”应用程序,使用类似ssh asasdmin@das来访问各个虚拟主机,亦可以通过网页使用类似于http://das:4848这样的URL来访问Glassfish Domain Administration Server的管理控制台。
操作步骤同2.3.1.12小节。接下来开始通过Admin Console配置集群。
2.3.2 配置Glassfish集群
配置步骤概要如下
- 修改DAS 管理员密码
- 开启DAS 远程访问
- 启动DAS
- 登陆Web Admin Console
- 添加两个节点
- 创建集群
- 创建四个服务器实例
2.3.2.1 修改DAS 管理员密码
在MacOS的终端应用程序中,使用下面命令完成
#登陆das终端
localhost:~ Barry$ ssh asadmin@das
#切换到glassfish bin目录
asadmin@localhost:~$ cd runtimes/glassfish3/bin
#更改管理员密码
asadmin@localhost:~/runtimes/glassfish3/bin$ ./asadmin change-admin-password
Enter admin user name [default: admin]> /*直接敲回车键*/
Enter admin password> /*直接敲回车键*/
Enter new admin password> /*键入adminadmin作为管理员密码*/
Enter new admin password again> /*键入adminadmin确认管理员密码*/
Command change-admin-password executed successfully.
2.3.2.2
开启DAS 远程访问
继续在当前的ssh会话中键入下面命令开启DAS Remote Access
asadmin@localhost:~/runtimes/glassfish3/bin$ ./asadmin --host das --port 4848 enable-secure-admin
Enter admin user name> admin
Enter admin password for user "admin"> /*键入adminadmin作为管理员密码*/
You must restart all running servers for the change in secure admin to take effect.
Command enable-secure-admin executed successfully.
2.3.2.3 启动
DAS
asadmin@localhost:~/runtimes/glassfish3/bin$ ./asadmin start-domain
Waiting for domain1 to start ......
Successfully started the domain : domain1
domain Location: /home/asadmin/runtimes/glassfish3/glassfish/domains/domain1
Log File: /home/asadmin/runtimes/glassfish3/glassfish/domains/domain1/logs/server.log
Admin Port: 4848
Command start-domain executed successfully.
2.3.2.4 登陆Web Admin Console
在MacOS当中打开Chrome浏览器,并且在地址栏键入https://das:4848, 如果出现警告页面,点击“仍然继续”,并在User Name和Password输入框中输入用户名admin和密码adminadmin,最后点击Login按钮。如下图所示:
2.3.2.4 添加两个节点
点击管理控制台左侧Nodes节点,如下图所示
在上图中点击New按钮,在新打开的网页中,如下图所示,按照网页中输入框中的内容创建gnode-1
按照相同的方法,在按照下图网页输入框中内容来创建gnode-2
2.3.2.5 创建一个Cluster
点击管理控制台左侧Clusters节点,如下图所示
点击上图中的New按钮, 并按照下图网页中输入框内容所示,创建一个名为gcluster的群集
如果创建完成后,没有遇到任何告警信息,那么群集的最基本配置的就成功了。
注意:
如果遇到告警信息,请确保每个主机的虚拟主机名称, IP地址与主机名称映射关系,与Glassfish Nodes设定时,填入的主机名称务必保持一致。
如果安装了防火墙软件,如iptables,在这个实验过程中请关闭防火墙。
最后在下图的表格中,选种gcluster群集,并点击"Start Cluster",过一会儿,如果能看到与下图中instances全部成功进入Running状态,恭喜!
当所有实例都成功启动后,可以将附带的样例彩票程序部署到gcluster上, 步骤如下:
首先另存附件到本地盘。
LotteryAnnotation.ear
31.7 KB
31.7 KB
点选Web Admin Console左侧的Applications节点,如下图所示
点击右侧网页的 Deploy 按钮,在打开的网页中, 首先将Targets部分的gcluster选中,点选Add按钮将其移动到Selected Targets列表,
然后点击 “选择文件”, 在弹出的对话框中选择上一步中另存下来的文件。
文件加载完毕后,选中 Availability对应的checkbox如下图,最后点击OK部署该应用程序
部署成功后,应用会出现在 Deployed Applications表格中,如下图所示
点击应用程序的名字进入应用的详细页面,如下:
点击LotteryAnnotation-war.war后面对应的Launch按钮,网页会列出群集中所有可用的根URL如下图所示
可以点选任何一个链接尝试该样例应用程序。
2.3.3 负载均衡配置
负载均衡配置主要需要三个步骤:
- 在load-balancer虚拟中安装mod_jk模块
- 编辑workers.properties文件
- 编辑jk.conf文件
- 编辑000-default文件
- 重启apache2服务
- 在DAS Web Admin Console中激活http listener的JK Listener属性
2.3.3.1 在load-balancer虚拟中安装mod_jk
使用下面的命令安装
$ sudo apt-get install libapache2-mod-jk
2.3.3.2 编辑workers.properties
$ sudo vi /etc/apache2/workers.properties
将下面内容添加到该文件中
worker.list=worker1,worker2,worker3,worker4,loadbalancer
worker.worker1.type=ajp13
worker.worker1.host=gnode-1
worker.worker1.port=28080
worker.worker1.lbfactor=1
worker.worker1.socket_keepalive=1
worker.worker1.socket_timeout=300
worker.worker2.type=ajp13
worker.worker2.host=gnode-2
worker.worker2.port=28080
worker.worker2.lbfactor=1
worker.worker2.socket_keepalive=1
worker.worker2.socket_timeout=300
worker.worker3.type=ajp13
worker.worker3.host=gnode-1
worker.worker3.port=28081
worker.worker3.lbfactor=1
worker.worker3.socket_keepalive=1
worker.worker3.socket_timeout=300
worker.worker4.type=ajp13
worker.worker4.host=gnode-2
worker.worker4.port=28081
worker.worker4.lbfactor=1
worker.worker4.socket_keepalive=1
worker.worker4.socket_timeout=300
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=worker1,worker2,worker3,worker4
保存退出 (ESC + :wq)
2.3.3.3 编辑jk.conf
$ sudo vi mods-available/jk.conf
将JkWorkersFile开头的一行替换为
JkWorkersFile /etc/apache2/workers.properties
2.3.3.3 编辑000-default文件
$ sudo vi /etc/apache2/sites-enabled/000-default
去掉下面一行
DocumentRoot /var/www
替换为
JkMount /* loadbalancer
保存退出(ESC + :wq)
2.3.3.4 重启apache2服务
$ sudo service apache2 restart
2.3.3.5 在DAS Web Admin Console中激活http listener的JK Listener属性
在管理控制台左侧面版选择 Configurations->gcluster-config->HTTP Service ->Http Listeners-> http-listener-1,在右侧的网页中选中JK Listener对应的checkbox,保存
最后可以通过负载均衡器对应的服务地址来访问之前部署的应用
http://load-balancer/LotteryAnnotation-war/
2.3.4 使用Visualvm远程监控虚拟机实例
远程JVM监控与本地JVM监控能力和配置上都有很大不同,如果能够本地监控则选择本地监控,按照VisualVM自己的说法,根据文中给出的配置,远程监控的能力如下:
- Attachable: no
- Basic info supported: yes
- System properties supported: yes
- Monitoring supported: yes
- CPU monitoring supported: yes
- Memory monitoring supported: yes
- GC activity monitoring supported: yes
- Class monitoring supported: yes
- Thread monitoring supported: yes
- Thread dump supported: yes
- Heap dump supported: no /*可以完成heap dump到远端机器,然后再通过scp复制回本地查看*/
- Heap dump on OOME supported: no
远程JVM监控需要做三件事(如果不需要远程Profile的话,网上说可以通过ssh tunel的方式):
- 开启远程JVM的JMX服务功能
- 开启远程机器上的jstatd服务
- 在Visualvm的Applications面板中添加远程主机
2.3.4.1 开启远程JVM的JMX服务功能
通常开启JMX服务,只需要在Java启动时添加如下虚拟机参数
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=1099 /*JMX服务端口*/
在NAT网络中,如果JMX客户机在NAT网络的网关上,则还需要添加下面的虚拟机启动参数
-Djava.rmi.server.hostname=hostname /*运行JMX服务的主机名称,JMX客户端所在主机可以通过该名称与JMX服务器建立连接*/
对于我们的群集实验环境,稍有特别:
- 服务主机名是变量,因为gcluster中配置了两个节点,一个节点对应一个主机名称
- 端口号是变量,因为每一台节点上运行两个服务器实例,每一个服务器实例要单独制定一个服务端口;
为了解决这个小问题,我们需要使用Glassfish 配置的"系统变量"功能,如下图:
点击左侧的Configurations->gcluster-config->System Properties节点,在右侧打开的网页的 "Additional Properties" 表格中添加新的变量名称,本里添加了一个叫做“INSTANCE_EXTERNAL_IP”的变量,用来给出不同实例的主机名。另外的JMX服务端口是系统内建的一个变量,也在该表格中,叫做"JMX_SYSTEM_CONNECTOR_PORT"。
在添加过程中,首先给出变量名称,然后是默认值,保存后,在通过Instance Values来给出每一个实例对应的值,如下图所示:
其中INSTANCE_EXTERNAL_IP设定如下,具体IP地址或者主机名都可以:
对于JMX_SYSTEM_CONNECTOR_PORT,只需要给出两个存在冲突的端口号即可,如下图所示:
变量设定完成后,需要给群集实例添加虚拟机参数
-Dcom.sun.management.jmxremote.authenticate=false
-Dcom.sun.management.jmxremote.ssl=false
-Dcom.sun.management.jmxremote.port=${JMX_SYSTEM_CONNECTOR_PORT}
-Djava.rmi.server.hostname=${INSTANCE_EXTERNAL_IP}
如下图所示,点击管理控制台左侧的Configurations->gcluster-config->JVM Settings,在右侧打开的网页中,选择JVM Options标签页,在Options表格中,加入上面给出的四个变量。保存后,重启群集gcluster,配置就完成了。
2.3.4.2
开启远程机器上的jstatd服务
通过MacOS系统自带的终端程序 ssh登陆gnode-1和gnode-2两个节点,分别执行下面的命令:
$ ssh asadmin@gnode-1
#登陆后执行下面的命令
asadmin@gnode-1$ jstatd -J-Djava.security.policy=/home/asadmin/runtimes/jstatd.all.policy -p 2020 -J-Djava.rmi.server.hostname=gnode-1&
类似的
$ ssh asadmin@gnode-2
#登陆后执行下面的命令
asadmin@gnode-1$ jstatd -J-Djava.security.policy=/home/asadmin/runtimes/jstatd.all.policy -p 2020 -J-Djava.rmi.server.hostname=gnode-2&
2.3.4.3 在Visualvm的Applications面板中添加远程主机
可以使用jdk自带的jvisualvm,或者在 http://visualvm.java.net/ 下载安装独立版本。
注:MacOS随机的jdk可能不包含jvisualvm。又或者jdk升级以后,在MacOS系统中,jvisualvm的链接可能会失效,此时可以找到jvisualvm的实际位置,然后通过ln -s的命令完成修复,此处不多赘述。
启动VisualVM,如下图,在“远程”节点上(右键)打开上下文菜单,选择”添加远程主机(H)...“
在打开的对话框中输入主机名以及jstatd链接的端口号
按照相同的方式,再添加远程主机 gnode-2
如果gnode-1和gnode-2两个虚拟主机中jstatd和gcluster的4个instance都处于服务运行状态,那么这些可被管理的对象会自动出现在VisualVM的“应用程序” -> "远程"节点下,如下图所示:
继续为各个实例添加JMX连接
按下图为instance01配置JMX连接
类似的再给instance02, 03, 04配置,连接分别为:
gnode-2:28686
gnode-1:28687
gnode-2:28687
添加完成后,会在“远程”下出现额外的4个GlassFish节点,并且图表中带有JMX字样,如下图所示。
双击4个带有JMX字样的节点,打开后可以调整视图,即可观察远程JVM的CPU, MEMORY,垃圾回收等各种状态。
点击VisualGC标签页,则可以看到如下图的Generational GC内存分布情况,以及垃圾回收所用时间等等。
至此,服务器实验环境搭建完毕。
第三部分 理解Glassfish Cluster中的Session复制
使用Chrome浏览器向其中的一个实例发送请求,并监视网络中的超文本传输
第一次的请求与响应的报头
. Request Method:GET
. Status Code:200 OK
. Request Headersview source
. Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
. Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
. Accept-Encoding:gzip,deflate,sdch
. Accept-Language:en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4
. Cache-Control:max-age=0
. Connection:keep-alive
. Host:gnode-1:28080
. User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22
. Response Headersview source
. Content-Length:1815
. Content-Type:text/html;charset=ISO-8859-1
. Date:Fri, 05 Apr 2013 23:34:09 GMT
. Server:GlassFish Server Open Source Edition 3.1.2.2
. Set-Cookie:JSESSIONID=c8cd2fede69e850da697c2fe786a; Path=/LotteryAnnotation-war; HttpOnly
. Set-Cookie:JSESSIONIDVERSION=2f4c6f7474657279416e6e6f746174696f6e2d776172:0; Path=/LotteryAnnotation-war; HttpOnly
. Set-Cookie:JREPLICA=instance03; Path=/LotteryAnnotation-war; HttpOnly
. X-Powered-By:Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Sun Microsystems Inc./1.6)
第二次的
请求与响应的报头
.
. Request URL: http://gnode-1:28080/LotteryAnnotation-war/PlayLotteryServlet
. Request Method:GET
. Status Code:200 OK
. Request Headersview source
. Accept:text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
. Accept-Charset:GBK,utf-8;q=0.7,*;q=0.3
. Accept-Encoding:gzip,deflate,sdch
. Accept-Language:en-US,en;q=0.8,zh-CN;q=0.6,zh;q=0.4
. Connection:keep-alive
. Cookie:JSESSIONID=c8cd2fede69e850da697c2fe786a; JSESSIONIDVERSION=2f4c6f7474657279416e6e6f746174696f6e2d776172:0; JREPLICA=instance03
. Host:gnode-1:28080
. User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_3) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.160 Safari/537.22
. Response Headersview source
. Content-Length:1815
. Content-Type:text/html;charset=ISO-8859-1
. Date:Fri, 05 Apr 2013 23:35:36 GMT
. Server:GlassFish Server Open Source Edition 3.1.2.2
. Set-Cookie:JSESSIONIDVERSION=2f4c6f7474657279416e6e6f746174696f6e2d776172:1; Path=/LotteryAnnotation-war; HttpOnly
. Set-Cookie:JREPLICA=instance03; Path=/LotteryAnnotation-war; HttpOnly
. X-Powered-By:Servlet/3.0 JSP/2.2 (GlassFish Server Open Source Edition 3.1.2.2 Java/Sun Microsystems Inc./1.6)