`
barryzhong
  • 浏览: 21359 次
  • 性别: Icon_minigender_1
社区版块
存档分类

配置与理解Glassfish Cluster【28张图片已修复】

阅读更多
第一部分 实验目的
  1. 理解Glassfish V3.1.2.2 Cluster的工作原理
  2. 理解Apache HTTPD 软件负载均衡的工作原理
  3. 理解如何使用Glassfish的内存复制功能
  4. 验证是否或者如何通过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)
  • 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设定过程中自动安装)
  • 服务器账户
    • username:asadmin
    • password:adminadmin
  • 相关目录设定
    • glassfish
      • /home/asadmin/runtimes/glassfish3
  • 相关端口设定
    • ssh, 22
    • httpd, 80
    • glassfish das admin console, 4848
注解:
  1. NAT为虚拟主机网络配置选项,Network Address Translation 网络地址转换
  2. IP地址通过DHCP获得
  3. 由于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台虚拟主机。为了节省安装时间,可以采取下面的安装配置步骤来完成:
  1. 安装模板虚拟主机
  2. 在模板主机中配置安装openssh-server
  3. 如果计划使用指定IP地址的情况下,可预先在模板主机中的/etc/hosts文件中增加前述文本片段,否则可跳过这一步
  4. 复制模板虚拟主机为load-balancer虚拟主机,并通过VMware生成新的MAC地址
  5. 在load-balancer虚拟主机中安装apache web server
  6. 复制模板虚拟主机为glassfish-node模板虚拟主机模板,并通过VMware生成新的MAC地址
  7. 在glassfish-node虚拟主机模板中安装sun-java6-jdk
  8. 在glassfish-node虚拟主机模板中创建/home/asadmin/runtimes目录
  9. 复制glassfish-node虚拟主机模板为glassfish-node 1
  10. 复制glassfish-node虚拟主机模板为glassfish-node 2
  11. 复制glassfish-node虚拟主机模板为domain administration server
  12. 更改各个虚拟机主机名称和配置所有虚拟主机/etc/hosts文件
  13. 在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
 
 
UPDATE: [07-Aug-2012] Thanks to a comment from Pierre-Yves Langlois this seems to be the best method (uses the latest version of the Flexion script from Github rather than the version referenced above)

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 asadmin@192.168.107.131)
 
如果从未在MacOS中下载过glassfish v3.1.2.2的zip版本(切记下载zip版本,不是sh版本),则可以选择使用下面命令行在das中下载
 
asadmin@localhost:~$ cd ~/runtimesasadmin@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 asadmin@192.168.107.131:/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集群
 
配置步骤概要如下
  1. 修改DAS 管理员密码
  2. 开启DAS 远程访问
  3. 启动DAS
  4. 登陆Web Admin Console
  5. 添加两个节点
  6. 创建集群
  7. 创建四个服务器实例
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上, 步骤如下:
 
首先另存附件到本地盘。
 
点选Web Admin Console左侧的Applications节点,如下图所示
 

 
点击右侧网页的 Deploy 按钮,在打开的网页中, 首先将Targets部分的gcluster选中,点选Add按钮将其移动到Selected Targets列表,
然后点击 “选择文件”, 在弹出的对话框中选择上一步中另存下来的文件。
 
文件加载完毕后,选中 Availability对应的checkbox如下图,最后点击OK部署该应用程序
 

 
部署成功后,应用会出现在 Deployed Applications表格中,如下图所示

点击应用程序的名字进入应用的详细页面,如下:
 
点击LotteryAnnotation-war.war后面对应的Launch按钮,网页会列出群集中所有可用的根URL如下图所示
 

可以点选任何一个链接尝试该样例应用程序。
 
2.3.3 负载均衡配置
 
负载均衡配置主要需要三个步骤:
  1. 在load-balancer虚拟中安装mod_jk模块
  2. 编辑workers.properties文件
  3. 编辑jk.conf文件
  4. 编辑000-default文件
  5. 重启apache2服务
  6. 在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,保存
 

 
最后可以通过负载均衡器对应的服务地址来访问之前部署的应用
 
 
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服务器建立连接*/
 
对于我们的群集实验环境,稍有特别:
  1. 服务主机名是变量,因为gcluster中配置了两个节点,一个节点对应一个主机名称
  2. 端口号是变量,因为每一台节点上运行两个服务器实例,每一个服务器实例要单独制定一个服务端口;
为了解决这个小问题,我们需要使用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 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
     .     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 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)
  • 大小: 84 KB
  • 大小: 249.8 KB
  • 大小: 172.7 KB
  • 大小: 168.9 KB
  • 大小: 210.9 KB
  • 大小: 213.8 KB
  • 大小: 130.3 KB
  • 大小: 231.8 KB
  • 大小: 144.8 KB
  • 大小: 66.2 KB
  • 大小: 189.3 KB
  • 大小: 91.2 KB
  • 大小: 146.8 KB
  • 大小: 171.1 KB
  • 大小: 119.5 KB
  • 大小: 300.7 KB
  • 大小: 161.3 KB
  • 大小: 268.9 KB
  • 大小: 70.3 KB
  • 大小: 64.8 KB
  • 大小: 506.2 KB
  • 大小: 126.3 KB
  • 大小: 126.5 KB
  • 大小: 72.1 KB
  • 大小: 206.2 KB
  • 大小: 101.2 KB
  • 大小: 26.9 KB
  • 大小: 873.3 KB
分享到:
评论

相关推荐

    eclipse与glassfish3.1.1使用配置-连接池配置-JNDI配置[归纳].pdf

    "Eclipse 与 GlassFish 3.1.1 配置指南" 概述: 本文档旨在指导读者如何在 Eclipse 中配置 GlassFish 3.1.1,实现连接池配置和 JNDI 配置。同时,也会解决在部署过程中可能出现的异常。 一、GlassFish 3.1.1 简介 ...

    glassfish安装配置文档

    本文档将指导 readers 通过安装和配置 GlassFish 服务器,并将其与 Eclipse 集成以便进行调试。 一、GlassFish 安装 GlassFish 安装非常简单,只需要下载 GlassFish 安装程序,运行安装程序,然后按照向导的提示...

    GlassFish 管理配置

    综合这些知识点,我们能够形成一个全面的GlassFish服务器管理配置的指南,它不仅能够帮助管理员有效地设置和维护服务器,还能够确保他们理解与软件使用相关的法律和许可要求。同时,管理人员还可以通过这一指南,对...

    glassfish手工配置domain

    glassfish手工修改domain部署应用步骤,文档详细介绍了如何使用手工部署一个web文件夹目录形式的应用,以及手工配置jdbc

    glassfish ant eclipse 配置 指南 图解

    ### GlassFish、Ant与Eclipse配置指南:详细步骤与图解 #### 一、环境准备:设置基础环境变量 在开始GlassFish服务器的配置之前,首先确保已经正确设置了以下环境变量: - **JAVA_HOME**: 指向已安装的JDK目录。...

    在GlassFish中配置数据源连接池

    GlassFish 数据源连接池配置 GlassFish 是一个开源的 Java EE 应用服务器,它提供了一个基于 Web 的管理接口,...本文详细介绍了如何在 GlassFish 中配置数据源连接池,希望能够帮助读者更好地理解和使用 GlassFish。

    glassfish配置jndi(DB2数据库)

    本教程将详细讲解如何在Glassfish服务器上配置JNDI以连接到DB2数据库。 首先,我们需要准备DB2数据库的驱动文件。在进行任何配置之前,确保你已经有了DB2的JDBC驱动,即db2jcc.jar和db2jcc_license_cu.jar。这两个...

    GlassFish5.0安装包

    【GlassFish 5.0 安装与配置详解】 GlassFish,由Oracle公司主导的开源项目,是一款功能强大的Web服务器和应用服务器,以其卓越的性能和丰富的特性在开发者社区中备受推崇。相比于Tomcat,GlassFish提供了更全面的...

    Glassfish关于tomcat的文档

    ### Glassfish与Tomcat对比分析 #### 执行摘要 对于Web 2.0初创公司、应用服务提供商以及提供动态Web应用的独立软件供应商(ISVs)而言,应用即业务,而应用服务器中的Web容器技术能够直接影响业务成果。Web容器是...

    glassfish集群搭建手册

    标题《Glassfish集群搭建手册》指的是利用Oracle提供的Glassfish应用服务器软件进行集群配置的详细指南。此手册涵盖了在不同场景下通过图形化界面和命令行方式搭建集群的整个过程,并且描述了如何配置集群环境以支持...

    GlassFish配置SonicMQ

    GlassFish是一款开源的应用服务器,由Oracle公司维护,它支持Java EE规范,是开发和部署企业级Web应用程序的...同时,源码分析可以帮助你深入理解JMS和GlassFish集成的工作原理,这对于故障排查和性能优化非常有用。

    glassfish安装手册及源文件

    《Glassfish安装手册及源文件详解》 Glassfish是一款开源的应用服务器,它...最后,理解如何启动和关闭服务器,以及如何访问管理界面,是确保Glassfish正常运行的基础。希望这篇指南能帮助你顺利安装和管理Glassfish。

    Glassfish安装和启动

    ### Glassfish安装与启动详解 #### 一、简介 GlassFish 是一款开源的应用服务器,它遵循Java EE标准,被广泛应用于开发、测试和生产环境中。本文档将详细介绍如何安装和启动GlassFish应用服务器。 #### 二、安装前...

    glassfish安装

    本文将详细讲解如何安装和配置Glassfish,以帮助初学者快速入门。 首先,理解Glassfish的角色至关重要。它是Java Enterprise Edition(Java EE)的参考实现,提供了对各种Java EE规范的支持,包括Servlet、JSP、EJB...

    glassfish安装步骤.txt

    ### Glassfish安装步骤详解 #### 一、简介 Glassfish是一款开源的应用服务器,它支持Java EE标准,...通过以上步骤,您应该能够顺利完成Glassfish的安装与配置,并可以开始在该平台上构建和部署Java EE应用程序了。

    GlassFish安装向导

    本文主要讲述了 GlassFish 的安装、配置和服务管理等内容。GlassFish 是一个基于 Java 的 middleware,具有高可扩展性和可靠性,是企业级应用的首选。 一、准备工作 在安装 GlassFish 之前,需要准备好用户组和...

    Glassfish V2与Apache的整合

    《Glassfish V2与Apache整合详解》 在IT行业中,服务器的高效运行和灵活配置是提升应用程序性能的关键。本文将详细介绍如何将Java EE应用服务器Glassfish V2与Web服务器Apache进行整合,以实现更强大的服务架构。...

    glassfish单机集群jk_little

    在IT行业中,Glassfish是一款开源的应用服务器,由Sun Microsystems开发并维护,后来成为Oracle Corporation的一部分。Glassfish支持Java EE(现在称为Jakarta EE)规范,为开发者提供了构建企业级Web应用的平台。当...

    Glassfish部署web项目

    本文详细介绍了如何使用Glassfish部署Web应用的过程,包括开发工具的选择、Glassfish的安装与配置以及Web应用的具体部署方法。通过本文的学习,读者应该能够掌握如何有效地在Glassfish环境下部署和管理Web应用。

Global site tag (gtag.js) - Google Analytics