`
dinghyana
  • 浏览: 10109 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

针对GlassFish V2 版 配置集群/负载均衡器

阅读更多

 

二零零八 年 五月廿九 晚
联系邮址并MSN:  dinghy@live.com
 
运行环境为 windows xp professional  sp3 简体中文版.
参考文档附后.考虑到不太习惯英文的朋友,引文一般都做了翻译.
 
内容要点
0/预备知识
1/安装并配置GlassFish与WebServer
2/在GlassFish V2中建立单机集群
3/配置负载均衡器插件
4/部署并运行Sample中的clusterjsp应用

 
0预备知识
GlassFish V2版增强的特性
内存间复制
在其他服务器上的内存间复制提供了轻量级的session状态数据存储方案,例如HADB,借助此方案不必再获取额外的数据库.这种类型的复制使用其他服务器上的内存实现Http Session和状态SessionBean数据的高可用性存储. 集群服务器的实例之间按照环状拓扑复制数据到内存中.每一个备份的实例都在内存中存储了复制的数据.在其他服务器内存中Session状态数据的复制支持Session的分发.使用内存间复制需要 组管理服务GMS 支持.
负载均衡增强
对负载均衡插件进行了数项增强,介绍如下:
A/基于权重的RoundRobin算法.
一种称作weight的可选属性已经添加到实例的Loadbalancer.xml中.
这个选项使得负载均衡器插件可以根据权重发送request.例如,每500个request,100个会到instance1并400个会到instance2.默认的weight值是100.weight可以从管理控制台或命令行赋值到相应的实例.此外,server的domain.xml中为每一个实例指定了一项属性来标明其weight值.
B/用户自定义负载均衡的程序.
该特性使得用户可以定义常用的负载均衡逻辑.例如,基于用户身份验证的重定向和基于MIME的负载均衡.这个特性通过负载均衡器装载用户自定义的分享库文件实现.而分享库文件实现了定义在loadbalancer.h文件中的接口,loadbalancer.h文件位于lib/install/templates/.[其实是在安装了WebServer的PlugIn后,参见1/1/3]
C/管理控制台增强
先前版本的AppServer需要 loadbalancer.xml 文件手动的拷贝到特定web server的config文件夹中.AppServer9.1 在WebServer和ApplicationServer之间包含了针对类似拷贝的自动推送机制.负载均衡器的自配置是在 server的 domain.xml中.
1/安装并配置GlassFish与WebServer
1/1/可能需准备如下两组安装文件
1/1/1/GlassFish(Sun Java System Application Server)方面
A:  https://glassfish.dev.java.net/ 上的普通版,均在100M左右,版本随时更新有两种
jar形式的安装包 或 exe形式的发行版  分为多语言版或English版 
jar版与exe版的区别是
? exe版可以从容的将AppServer实例服务添加到windows系统服务列表中,便于部署,
? jar版比较适合开发,解压后可以随时使用Ant编译.
? exe版中有一个with HADB版本 200M左右.下载地址:
http://www.sun.com/download/index.jsp?cat=Application%20%26%20Integration%20Services&tab=3&subcat=Application%20Servers
Exe Edition with HADB 上面有如下特征:High Avalablity Database Server及针对Sun的WebServer,Apache的HttpServer,Microsoft的IIS的负载均衡器 插件.
 
PS:如同一些朋友说的,这个插件若不直接安装,就需手动配置.在windows中的手动配置步骤,我会在后面给出.之前已经在配置的,我先提醒下,注意在windows系统中,plugin的链接文件为 dll文件(passthrough.dll),而非unix下的so文件.


1/1/2 WebServer方面
自然是要准备Sun的WebServer 6.1或者Apache的HttpServer2.0或者Microsoft的IIS6.0.

SunWebServer 管理端口默认为8888

手动配置Apache Http Server的LB插件
如何配置 apche 2.0.x 中的glassfish 插件
 
在\conf中修改httpd.conf文件,增加LoadModule <IfModule/> <VirtualHost/>三项内容,注意与本机信息的一致性
##BEGIN EE LB Plugin Parameters
LoadModule apachelbplugin_module modules/mod_loadbalancer.dll
<IfModule mod_apache2lbplugin.cpp>
config-file "C:\Program Files\Apache Group\Apache2/conf/loadbalancer.xml"
locale en
</IfModule>
<VirtualHost 192.168.100.52>
DocumentRoot "C:\Program Files\Apache Group\Apache2/htdocs"
ServerName 192.168.100.52
</VirtualHost>
##END EE LB Plugin Parameters
增加如下文件
loadbalancer.xml.example
ssl.conf
sun-loadbalancer_1_1.dtd
sun-loadbalancer_1_2.dtd

 

 
在\modules中直接增加以下文件
erropages 文件夹
resource 文件夹
mod_loadbalancer.dll
 
 
 
增加\sec_db_files目录
cert8.dll
key3.dll
secmod.dll
 
 
访问时,应按照填写的server_name进行访问,可能出现的问题是 IP 地址


1/1/3 安装顺序
为了安装插件,自然要首先安装相应的WebServer,之后通过exe带HADB的版本安装插件.顺便提一下,这个版本装完后,CLUSTER集群支持是默认开启了,LoadBalancer负载均衡器也是默认装好了.在可视化管理页面可以看到.可以直接到 第二步的 asant setup-one-machine-cluster创建Cluster--NodeAgent---Instance关联组.
 
jar版的需手动配置.方法如下:
 
A.针对AppServer(GlassFish),下载相应的插件
http://download.java.net/javaee5/external/<OS>/aslb/jars/aslb-9.1-MS4-b1.jar
将OS=windows设置后,下载这个jar文件,这里注意一句话.WebServer插件官方的测试正常与使用支持仅限于Sun WebServer 6.1.
 
直接Unjar命令或用winrar软件 解压 aslb-9.1-MS4-b1.jar 文件得到两个zip  SUNWaslb.zip, SUNWaspx.zip:
 
SUNWaslb.zip中是负载均衡器用到的dtd文件及需要自行开发或编译的负载均衡算法文件.
直接解压至 ${glassfish.home}/lib/ 中.
附:[在install中是template文件夹.其中ReadMe.UserDefinedLB有段说明.讲了如何使用 user-definded LoadBalancer,及配置方法.简单的讲就是开发并编译生成自己的so文件并通过改变loadbalancer.xml中的类似的配置,来改变cluster的均衡算法.  <cluster name="cluster1" policy="user-defined" policy-module="home/user/workspacelb/roundrobin.so">]
 
 
 
SUNWaspx.zip是AppServer中需要的WebServer链接文件,
直接解压至 ${glassfish.home}/lib/ 中.
 

B.针对WebServer中配置
websrvr_install_dir    -WebServer的安装目录
websrvr_instance_dir  -WebServer的实例目录(指的是https-{机器名}命名的目录)
as_install_dir         -GlassFish的安装目录
请注意:这几个文件路径在实际应用中都要被实例化.
B/1建立如下WebServer的plugins/lbplugin目录树
各个文件可以在SUNWaspx.zip中的webserver-plugin文件夹中找到:
o <websrvr_install_dir>/plugins/lbplugin/bin/passthrough.dll
o <websrvr_install_dir>/plugins/lbplugin/resource/LBPluginDefault_root.res
o <websrvr_install_dir>/plugins/lbplugin/resource/LBPlugin_root.res
o <websrvr_install_dir>/plugins/lbplugin/errorpages /default-error.html
o <websrvr_install_dir>/plugins/lbplugin/errorpages /sun-http-lberror.html
B/2在<websrvr_instance_dir>/config中增加或修改以下文件.
增加的文件可以在SUNWaslb.zip中找到. (.orig代表修改之前的文件)
loadbalancer.xml.example
magnus.conf
magnus.conf.orig
obj.conf
obj.conf.orig
sun-loadbalancer_1_0.dtd
sun-loadbalancer_1_1.dtd
sun-loadbalancer_1_2.dtd

 
修改的文件内容如下:


B/2/1 magnus.conf


在两个Init项之间加入:
##BEGIN EE LB Plugin Parameters
Init fn="load-modules" shlib="<websrvr_install_dir>/plugins/lbplugin/bin/passthrough.dll" funcs="init-passthrough,service-passthrough,name-trans-passthrough" Thread="no"
Init fn="init-passthrough"
##END EE LB Plugin Parameters


B/2/2 obj.conf


加入如下内容:
 
NameTrans fn="name-trans-passthrough" name="lbplugin" config-file="<websrvr_instance_dir>/config/loadbalancer.xml"
 
<Object name="lbplugin">
ObjectType fn="force-type" type="magnus-internal/lbplugin"
PathCheck fn="deny-existence" path="*/WEB-INF/*"
Service type="magnus-internal/lbplugin" fn="service-passthrough"
Error reason="Bad Gateway" fn="send-error" uri="$docroot/badgateway.html"
</Object>
 
<Object ppath="*lbconfigupdate*">
PathCheck fn="get-client-cert" dorequest="1" require="1"
</Object>
 
<Object ppath="*lbgetmonitordata*">
PathCheck fn="get-client-cert" dorequest="1" require="1"
</Object>
 
如此手动配置GlassFish和SunWebServer6.1的任务便已经完成.其中放在WebServer实例config目录下的loadbalancer.xml.example 是loadbalancer.xml的示例文件.理论上后面可由GlassFish的负载均衡器自动生成.


2/在GlassFish V2中建立单机集群


CLUSTER--> NODEAGENT --> N*INSTANCE
具体是建立了 集群cluster1,建立了节点代理cluster1-nodeagent,在节点代理下,建立两个实例instance-one和instance-two


3/配置负载均衡器插件


在可视化导出loadbalancer.xml的时候可能会遇到因为dtd文件无法正常导出的现象,这是glassfish的一个bug,在下的解决方案是:
A 按照错误的描述,在${GLASSFISH_HOME}下建立download文件夹,将相应的dtd文件拷贝至其中即可.
B 使用CLI模式下的,export-http-lb-config 命令


4/部署并运行Sample中的clusterjsp应用


部署的时候可以在可视化管理页面两个地方进行,一个地方是正常的部署步骤,只要选择部署目标到对应的集群上即可;另外一个地方是直接到下面的集群管理页面进行部署.
不论选择哪一种方案部署,部署的时候要注意部署的选项,一定勾选"可用性"建议勾选Java Web Start

 

分享到:
评论
2 楼 ada_li_li 2008-06-28  
怎么能把这篇文章放在GlassFish圈中加精呢?
1 楼 judytang 2008-06-25  
你好,想知道你在用的过程中有什么建议吗 ?

这是我们GLASSFISH QUALITY COMMUNITY社区的BLOG
http://blogs.sun.com/quality/

这时昨天贴出的关于LB ON APACHE
http://blogs.sun.com/sprabhu7/

希望多交流 !

相关推荐

    glassfish集群搭建手册

    它涵盖了从基础安装到集群配置以及负载均衡器配置的各个方面,提供了一整套步骤和技巧,旨在帮助用户搭建一个稳定、高效的集群系统。这份手册对于那些熟悉Java EE和Glassfish应用服务器,以及希望了解如何实现集群...

    glassfish单机集群jk_little

    当我们谈论"Glassfish单机集群jk_little"时,这意味着我们要在一台机器上设置一个Glassfish集群,并利用JK模块(mod_jk)实现负载均衡。 首先,"httpd.conf"是Apache HTTP服务器的主要配置文件。在这个场景中,它被...

    Glassfish V2与Apache的整合

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

    Glassfish V2 And NetBean6

    总之,"Glassfish V2 And NetBean6" 这篇博客深入浅出地介绍了如何利用这两个工具协同工作,开发Java EE应用程序,尤其是针对Flexcube的实践,对学习和提升Java EE开发技能非常有益。通过阅读并跟随博客中的步骤,...

    glassfish v3 集群搭建完全手册(自己写的教程)

    Glassfish集群的搭建是一项技术含量较高的工作,涉及到服务器管理、网络配置、负载均衡等多个方面。通过理解并掌握上述步骤,你将能够成功构建一个高效、可靠的Glassfish集群,实现应用的高可用性和可扩展性。在实际...

    glassfish-v2 source code

    《深入解析Glassfish-v2源码》 Glassfish-v2是一款基于Java EE 5标准的开源应用服务器,其源码的公开为开发者提供了深入了解和学习Java企业级开发的宝贵资源。在本文中,我们将深入探讨Glassfish-v2的核心概念、...

    glassfish ant eclipse 配置 指南 图解

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

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

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

    glassfish安装配置文档

    GlassFish 安装配置文档 GlassFish 是一个基于 Java 的开源应用服务器,提供了一个强大且灵活的平台来部署和管理基于 Java 的应用程序。本文档将指导 readers 通过安装和配置 GlassFish 服务器,并将其与 Eclipse ...

    Sun Glassfish v3 Administration 2009/12 PDF

    文档开篇提到了**“GlassFish Administration Administer and configure the GlassFish v2 application server”**,这暗示了文档虽然标题为v3,但可能包含了v2的相关内容。接下来我们对这部分内容进行详细解析: -...

    glassfish和ant安装与配置

    ### GlassFish和Ant安装与配置 #### 一、概述 本文档主要介绍如何在Windows平台上安装和配置GlassFish服务器以及Ant构建工具,并在Eclipse IDE中进行相应的设置,以便能够顺利地开发、构建和部署Java Web应用程序...

    glassfish v2 在windows 构建启动服务

    glassfish 安装构建在windows 中自动启动服务。

    在Glassfish v2ur1 中测试grizzly comet chat demo

    《在Glassfish v2ur1 中测试grizzly comet chat demo》 这篇博文主要探讨的是如何在Glassfish v2ur1服务器上部署并测试一个基于Grizzly Comet技术的聊天示例应用。Grizzly是Java的一个开源网络框架,它提供了一种...

    linux下实现glassfish自动启动

    - 如果遇到权限问题,可能需要调整文件或目录的权限,例如,`/opt/glassfish3/glassfish/domains/domain1`目录。 通过以上步骤,你就能够在Linux系统中实现Glassfish服务器的自动启动,从而提高运维效率。当然,更...

    org.glassfish.jersey.media,jersey-media-multipart,2.24.1

    org.glassfish.jersey.media:jersey-media-multipart:2.24.1 Jersey 上传文件以及下载文件所需的依赖库,maven下载比较慢,我手动下载下来了。放到你的libs目录

    glassfish集群安装[整理].pdf

    - 使用负载均衡器分配请求到集群中的不同实例。 - 持久化会话数据,确保故障转移时用户会话不丢失。 - 监控和日志记录,以便及时发现和解决性能问题。 - 配置适当的故障检测和恢复机制。 总之,Glassfish集群安装...

Global site tag (gtag.js) - Google Analytics