首页 » web服务 » 中间件第五季:glassfish部署计划指南

中间件第五季:glassfish部署计划指南

时间:2012-05-28作者:felix.chan分类:web服务评论:0

前言、配置一个高可用的glassfish环境的流程:

1、确定达到你想要的性能和QOS(服务效率)标准的需求和门槛

2、定制合适的系统

3、安装glassfish服务和相关的组件,例如web server组件

4、如果你计划要管理你的集群,需要配置好ssh访问权限

5、配置:域,节点,集群,glassfish服务实例,虚拟主机等

6、配置你的负载均衡器

7、配置一个session可持续复制的web容器和EJB容器

8、如果需要使用额外的消息机制,还需要配置集群故障时使用的JMS服务(JavaMessage Service)

9、在会话故障时,可以高可用的环境来应用的部署和参数的配置

一、如何规划你的部署环境:

首先,要知道当前运营环境中负载系能指标:

1、服务器是跑的什么类型的应用和服务,有多少客户端在访问?
2、哪个应用和服务是需要高可用的?
3、服务器当前的最大负载能力和吞吐量是多少?
4、系统必须支持当前用户的最大并发连接数是多少?
5、客户端可以接受的平均访问等待时间是多久?
6、两个请求之间的平均思考时间是多少?

二、要估算吞吐量

三、要估算glassfish服务实例的负载

当前连接用户的最大并发数量:
客户端在与server建立连接之后,定期的发送请求来与server端进行交互,有可能这个过程会持续一个很长的时间,所以在计算用户最大并发连接数的时候要考虑到这个因素,同一个用户的并发请求数量越大越频繁,那么可以建立的用户最大连接数就越少。

例如,我们通常在配置IIS的最大并发用户数为10,如果每个客户端都是每隔10秒才会产生一个请求,那么这种情况下理论上可以支持100个客户端同时访问server。如果全部客户端每隔1秒就会产生一个请求,那么理论上就只能够支持10个客户端同时访问server。

思考时间:
所谓思考时间,就是指客户端在提交了第一个表单请求后,server对该请求进行了处理,然后将处理结果返回给客户端,这个时候客户端可能需要判断返回的数据信息,然后填写新的表单数据进行第二次提交,然后server再对第二次提交的表单请求进行处理并返回给客户端。这个过程中思考时间有两部分组成,一部分是客户在两次填写表单过程中产生的等待时间,一部分是server处理两次表单过程中产生的等待时间,通常server产生的等待时间是远远小于客户产生的等待时间的,我们可以将server产生的等待时间忽略不计,那么客户在两次提交表单信息过程中产生的等待时间就是思考时间。

平均响应时间

每分钟的请求数

四,规划你的网络配置

1、设置出去的数据流量带宽:
为每一个访问server的客户端设计一个合理的带宽上限,可以有效的防止client对server产生的恶意攻击。
server通常应该有公网接口(外网)和私有网络接口(内网),我们根据接口提供的应用对象的不同,以及安全级别的不同和最大带宽限制的不同而定制不同的带宽流量上限策略,从而保障server的网络安全。

2、估算带宽需求环境:
通常我们可以观察生产环境服务器某一时间段的运营数据的峰值,例如在一天中峰值最高的一个小时,或者一周中峰值最高的某一天,或者一个月中峰值最高的某几天的数据流量,来统计出峰值负载的持续时间,
从而计算出某一时间段负载的百分比。另外还要估算出有多少个用户在第一次访问之后,然后又再次访问server从而产生的负载情况。从而确定服务器有多大的负载是由新用户访问产生的,有多大的负载是由老用户访问产生的,根据这些数据可以合理的来规划和部署服务器。

3、计算带宽请求:
带宽的计算是根据生产环境出口线路的实际带宽来计算的,这个时候你需要统计出你server的最大出口带宽,以及client访问每个html页面的平均大小才能进行估算。

例如:一条T1级的线路带宽是1.54Mbps,如果我们的server使用了4条T1级的线路,那么总带宽大概就有6Mbps(1.54*4),而client访问glassfish web server的html网页需要30KByte,那么这个网络环境大概支持的同时访问用户数为:
6Mbit per sec/8bits=750KByte 即每秒750KB的带宽
750KB/30KB=25 即大致可以可以支持到每秒25个用户同时访问glassfish web server
那么系统在一个小时内可以提供2160000(25*3600秒)次页面访问的能力。从而也可以计算出一天的最大处理能力。

4、估算峰值负载:
给出从某一时间段的平均负载数据,你需要从数据里面获取负载峰值将会在什么时候发生,最后一次发生持续了多长时间,峰值负载占总负载的百分比。

例如:最后一次负载峰值数据是在最近的两小时内页面访问负载达到了30%以上,即2160000(25*3600秒)次页面访问能力的30%=648000页

根据2小时648000页 的负载能力,我们可以算出每秒90页。

由于之前已经说了T1的线路每秒可以处理25页,那么是需要4条T1线路来满足负载峰值的需求的,如果要降低这个瓶颈,要么扩大线路带宽(例如T3),要么增加T1线路的数量,具体要看你想将30%这个负载降低到一个什么值是可以接受的,然后采用以上这两种方法。

5、网卡的选择:
现在一般都是1Gbit以上的网卡了,有的好网卡可以达到4G以上了,或者使用多网卡汇聚来提供更高的带宽或线路冗余,这个根据实际需求来做就好了,不需要更多的解释。

五、规划可用性

1、对可用性要有一个合理的安排:
例如生产环境中只能对部分关键业务进行高可用性的部署,那么你就要考虑哪一部分才是最关键的,到底是客户访问的服务和应用重要,还是内部事务处理的服务和应用重要?这个需要有一个舍取。

再例如用两台服务器做高可用部署,当其中一台故障时,另外一台服务器的负载能力只能支撑一部分服务和应用,这个该如何规划部署和取舍。

2、使用集群来提高可用行:

给系统添加冗余:

A、定义失效的类别

B、规划当失效发生后的负载能力

C、

3、添加冗余的系统

六、规划 消息队列代理(MessageQueue Broker) 的部署:
消息队列(Message Queue):
消息队列就是一个特定的类得规范,它具有类的成员、字段、函数、方法、属性、时间等特性。sun定制的一个java消息队列类具有其自己的特性,和微软定制的消息队列类有细微的不同之处,具体规范细节请参考官方文档。
适合于在分布式企业应用之中实现可靠的异步消息通信。JMS是基于JAVA的实现消息通信的开放标准,是用JAVA实现的“消息中间件”。
 
Sun公司Java系统的消息队列:
提供功能全面的消息服务,符合 “java消息规范”(Java Messaging Specification) (JMS) 1.1 规范的的可靠、异步的消息传送功能。此外,消息队列 还提供 JMS 规范之外的许多功能,以满足大型企业部署的需要。目前最新的版本是Sun Java? System Message Queue 3 2005Q4 (3.6 SP3),支持Solaris,Linux和Windows平台。SUN消息队列 可以免费的下载和使用。
 
消息队列集群:
在大型企业部署的应用中下,系统必须提供高可用性和可扩展性。这往往是通过服务器的集群实现。Sun“消息队列”支持“代理集群”,即使用一组代理,作为一个逻辑的整体,给客户提供消息传送服务。集群通过在多个代理之间均衡分布来自客户端的连接,从而达到负载均衡的目的。在系统需要处理大量的消息,有可能超过单个代理的负荷时,消息队列集群将是很好的选择。

1、使用多个代理的集群

2、传统集群中的主代理和副代理的同步

3、使用 “消息队列代理”(MessageQueue Brokers) 需要对Glassfish server进行相关的配置

Java消息服务的类型: java消息服务有以下三种类型模式

内嵌模式java消息服务(Embedded Java Message Service):
如果类型的属性是内嵌模式,那么GlassFish Server 和 “java消息队列代理”都汇集在相同的虚拟机中,JMS服务将启动“传入进程”并且来维护Glassfish server。内嵌模式是不支持增加代理的集群。
在内嵌模式中,要使用 Start Arguments attribute 来定义“消息队列代理”的启动参数。
如果使用内嵌模式,必须要确保在每一个相同的虚拟机上开辟的java内存堆的尺寸有足够的大,这样才能容纳全部消息队列。

本地模式java消息服务(Local JavaMessage Service):
如果类型的属性是本地模式,那么glassfish server可以启动和停止“消息队列代理”,当glassfish server启动后,他将在定义好的默认的JMS主机上启动“消息队列代理”,同样的当glassfish server的实例关闭后,它也将关闭“消息队列代理”。在需要增大代理集群的时候最适合使用本地模式这种类型。而其他的方案用于管理员来分割java虚拟机。
在本地模式中,要使用 Start Arguments attribute 来定义“消息队列代理”的启动参数。

远程模式java消息服务(Remote JavaMessage Service)
如果类型的属性是远程模式,glassfish server使用额外的配置代理或代理集群。在这种方案中,你必须在每个glassfish server上分别的启动和停止“消息队列代理”,并且使用“消息代理”工具来配置和调整代理或代理集群。远程模式这种类型最适合用于一个服务实例运行在不同的多个机器上或多个不同的代理编号上(例如对该实例使用了多台机器配置了多个代理来做了负载均衡或高可用)。
在远程模式中,要使用 消息队列工具 来定义“消息队列代理”的启动参数。而Start Arguments attribute 的设置将被忽略掉。

使用管理控制台来维护JMS
在管理控制台里,每一个Java消息队列节点 都可以独立配置其JMS属性。例如每个结点重新连接的时间间隔和重新连接的请求等等,都可以为每个节点单独设置一个不同的值。

使用asadmin来维护JMS

默认的JMS主机

Example Deployment Scenarios
Default Deployment
Using a MessageQueue Broker Cluster with aGlassFish Server Cluster
Specifying an Application-Specific MessageQueue Broker Cluster
Application Clients

原创文章,转载请注明: 转载自红防联盟www.rednat.com

本文链接地址: 中间件第五季:glassfish部署计划指南

|2|right
0 条评论

暂时没有评论!

发表评论

电子邮件地址不会被公开。 必填项已用 * 标注

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>