论坛首页 Java企业应用论坛

配置Glassfish多机集群

浏览 15260 次
精华帖 (3) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2008-04-05  
  猫咪在论坛看到有人尝试配置Glassfish多机集群失败。猫咪也在网上搜索了一下,Glassfish有关配置集群的文章很少,仅有的几篇居然多是在一台机器上配置多个实例。昏死,那还叫什么集群!  
  猫咪又在网上和Sun的官方网站上反复搜索,终于发现一篇Glassfish配置多机集群的文章(http://blogs.sun.com/anilam/entry/glassfish_v2_admin_console_series)。猫咪根据这篇文章在自己的VMware上配置成功。现把自己的经验写下来,帮助有需要的朋友。
  猫咪自己是在VMware中建立两个虚拟计算机,使用的是Windows Server 2003。本来是想用Linux的,但是Ubuntu每次总要联机查补丁,慢得要死,所以只好装2003了。
  两台虚拟机器,IP地址一个是192.168.1.103,一个是192.168.1.104。其中192.168.1.104作为主控代理服务器和其中一个节点服务器。
  首先在每台计算机上下载安装JDK6(至少也得是JDK5),安装过程在此不再叙述。
  然后是安装Glassfish。猫咪用的是Glassfish v2ur1多语言版。从网上下载来后,执行
  java –Xmx256m –jar glassfish-installer-v2ur1-b09d-windows-ml.jar
  将安装文档解压缩。然后进入Glassfish下,执行
  lib\ant\bin\ant –f setup-cluster.xml
  两台都要这么做。
  其实理论上应该是一台代理服务器,多台节点服务器。不过猫咪怕自己机器吃不消,所以就只用了两台机器。不过其中一台机器既做代理又做节点,性能上有问题。自己试验可以,实际中这么配可不行。
如果“ant –f setup-cluster.xml”执行没有问题,那么在两台服务器上就都建立了一个支持集群的服务器实例。
  首先,在代理服务器上进入Glassfish的bin目录启动实例,
  asadmin strat-domain domain1
  “domain1”是系统自动建立的缺省实例,你也可以建立自己的实例。格式是“create-domain --profile cluster --adminport 4848 <实例名>”,“--profile cluster”表示实例是集群实例,“--adminport 4848”表示管理端口是4848。
  分别在两个节点服务器上建立节点代理(目前192.168.1.104还兼任代理服务器职责)。
  asadmin create-node-agent --host 192.168.1.104 --port 4848 agentOnFirst
  建立第一个代理节点。
  asadmin create-node-agent --host 192.168.1.104 --port 4848 agentOnSecond
  建立第二个代理节点。
  建立的时候,要求你输入代理服务器的用户名、密码和主密码。缺省是用户名“admin”,密码“adminadmin”,主密码我是自己建立的实例,也设定成了“adminadmin”。如果你用的是缺省实例,主密码应该是“changeit”。命令要分别在两个节点服务器上执行,不要在代理服务器上执行。然后分别启动这两个节点代理
  asadmin start-node-agent agentOnFirst
  asadmin start-node-agent agentOnSecond
  启动的时候同样要求你输入代理服务器用户名、密码和主密码。如果没有问题,系统会显示节点启动成功。
现在通过浏览器登录“http://192.168.1.104:4848”,进行集群的创建和配置。进入控制台后,选择“群集”,然后选择“新建”按钮。输入集群名称后按“确定”。猫咪把自己的集群叫“MiaoCluster”。然后点击这个集群实例,选择右边的“实例”选项卡,然后将刚才创建的两个节点代理分别添加进去就可以了。最后在“常规”选项卡中按“启动群集”按钮,如果之前一切正常,两个节点均正常连接的情况下,集群就会成功启动。现在就可以在“应用程序”选项卡中进行应用部署了。猫咪自己写了一个缺省的JavaEE应用,只有一个缺省的index.jsp文件,上面就一句话“<%=”Hello WOrld!”%>”。因为不涉及到任何其他东西,所以部署很成功。
  然后在浏览器上输入“http://192.168.1.104:38080/hello”。其中38080是集群的访问端口,猫咪的应用叫hello。浏览器成功显示出了“Hello World!”。然后再访问“http://192.168.1.103:38080/hello”,同样成功显示。去每个节点服务器的节点目录下,可以看到在“C:\glassfish\nodeagents\<节点名>\<实例名>\applications\j2ee-modules\”下有hello目录。如果你觉得这么访问不方便,一会儿103一会儿104的,你可以在代理服务器上配置HTTP负载均衡。
截图是浏览器分别访问两个节点成功的画面。

 

  • 大小: 78.4 KB
  • 大小: 78.6 KB
   发表时间:2008-04-05  
请问这样在一台机器上做集群与在一台机器上单独安装性能那个会好一点?
0 请登录后投票
   发表时间:2008-04-05  
iamlibo 写道
请问这样在一台机器上做集群与在一台机器上单独安装性能那个会好一点?

这只是为了做试验已而,所以用虚拟机模拟多个计算机。现实中每台都是独立的计算机。
0 请登录后投票
   发表时间:2008-05-07  
多机是集群,单机上的多个实例又叫啥?
0 请登录后投票
   发表时间:2008-05-07  
dinghyana 写道
多机是集群,单机上的多个实例又叫啥?

前者叫做水平群集,后者叫做垂直群集。
0 请登录后投票
   发表时间:2008-05-07  
请问 如何验证 LoadBalance 呢?
我初步是这样做,您看对不对?
我在SunWebServer的本机实例 Https-{hostname}下
修改了 loadbalancer.xml 如下
<!DOCTYPE loadbalancer PUBLIC \"-//Sun Microsystems Inc.//DTD Sun ONE Application Server 7.1//EN\" \"sun-loadbalancer_1_2.dtd\">
<loadbalancer>
  <cluster name=\"cluster1\" policy=\"round-robin\">
    <!--
        Configure the listeners as space seperated URLs like
        listeners=\"http://host:port https://host:port\" For example:
       
    <instance name=\"instance1\" enabled=\"true\" disable-timeout-in-minutes=\"60\" listeners=\"http://localhost:80 https://localhost:443\" weight=\"100\"/>

    -->
    <instance name=\"instance1\" enabled=\"true\" disable-timeout-in-minutes=\"60\" listeners=\"http://localhost:38080 https://localhost:38181\" weight=\"100\"/>
    <instance name=\"instance1\" enabled=\"true\" disable-timeout-in-minutes=\"60\" listeners=\"http://localhost:38081 https://localhost:38182\" weight=\"100\"/>
    <web-module context-root=\"clusterjsp\" enabled=\"true\" disable-timeout-in-minutes=\"60\" error-url=\"sun-http-lberror.html\" />
    <health-checker url=\"/\" interval-in-seconds=\"10\" timeout-in-seconds=\"30\" />
  </cluster>
  <property name=\"reload-poll-interval-in-seconds\" value=\"60\"/>
  <property name=\"response-timeout-in-seconds\" value=\"30\"/>
  <property name=\"https-routing\" value=\"true\"/>
  <property name=\"require-monitor-data\" value=\"false\"/>
  <property name=\"active-healthcheck-enabled\" value=\"false\"/>
  <property name=\"number-healthcheck-retries\" value=\"3\"/>
  <property name=\"rewrite-location\" value=\"true\"/>
</loadbalancer>
然后我在Sun WebServer正常启动了 本机实例 ps:glassfish 两个实例已经正常启动.
最后我该如何验证 本机的 两个实例间的Load Balancer呢?
0 请登录后投票
   发表时间:2008-05-07  
大哥,我还有疑问,
"如果你觉得这么访问不方便,一会儿103一会儿104的,你可以在代理服务器上配置HTTP负载均衡"
怎么配置来?有什么教程吗?
0 请登录后投票
   发表时间:2008-05-07  
robbin 写道
dinghyana 写道
多机是集群,单机上的多个实例又叫啥?

前者叫做水平群集,后者叫做垂直群集。


是吗,貌似不是这么定义的吧
0 请登录后投票
   发表时间:2008-05-22  
来拜访魔力猫咪,这里的讨论很热闹,欢迎来加入GLASSFISH QUALITY COMMUNITY,借你的宝地啦,谢谢 !

http://glassfish.group.iteye.com/group/topic/5579
0 请登录后投票
   发表时间:2008-05-22  
”Glassfish有关配置集群的文章很少”,猫咪好,想问问在中国用GLASSFISH的人很少是吗,大约是什么百分比呢,多数人是用什么APPLICATION SERVER 呢 ?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics