配置Glassfish多机集群

  猫咪在网上发现有人尝试配置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负载均衡。

多谢猫的贡献,很好的文章。

多谢。