天天看点

J2EE 应用服务器集群

在Web上企业正在选择Java2, Enterprise Edition (J2EE)产生他们关键性任务的应用.在J2EE框架里,集群提供了保证最少下载时间和最大伸缩性的关键性任务服务.集群是在一组应用服务器显式运行你的J2EE应用,就象一个实体一样,对于伸缩来说,你以后会在集群里引入额外的机器.确定集群的每个组件都是冗余的,来保证最少的下载时间.

J2EE应用服务器提供商给集群下了定义,一个集群就是一组在一起工作,显式提供企业服务(支持JNDI,EJB,JSP, HttpSession和组件失败转移等等)的机器群.他们特意给出了含糊不清的定义,因为每个提供商实现群集是有差异的.有些提供商把一个分发器放到一组独立的机器前面,在集群里这些机器彼此之间互不了解.在这个方案里,分发器从用户那里收到一个初始的请求,然后由集群里具体的成员服务器通过HTTP把头重定向到客户端应答.另一些提供商实现了一个紧密的,完整的机器联盟,每个机器都随着那些机器上的对象知道它周围的其他机器.

除了机器外,集群可以包括冗余和失败转移的能力.

·负载均衡器(Load balancers):

进入集群和通行指示器到单个Web或应用服务器的唯一入口点

·Webservers

·网关路由器(Gateway routers)在内网外的的出口点.

·多层交换器(Multilayer switches)

包和帧过滤确保在集群里的每个机器仅仅收到相关机器的信息.

·防火墙(Firewalls)

集群保护器通过端口过滤防止Hackers访问集群和内网

·存储区域网络交换器(SAN---Storage Area Networking switches)

连接应用服务器,web服务器,和数据库到一个后端存储媒介;

管理写数据到物理硬盘;还有失败转移.

·数据库(Databases)

不管他们是如何实现的,所有的集群都提供两个好处:可伸缩性(scalability)和高可用性(high availability---HA) 

可伸缩性(scalability)

伸缩性支持用户增长时保证应用服务质量的能力.集群允许你依靠增加额外的服务器提供额外的容量,因而保证伸缩性.

高可用性(highavailability---HA) 

HA能被一个词概括:冗余.集群使用许多的机器处理服务请求.因此,如果在集群里的任何机器失败,另外一台机器会直接接管.

集群仅仅在应用服务器层提供HA.对于一个要展示真正HA的Web系统,一定象诺亚方舟一样至少包括Web服务器,网关路由器,交换基础设施,等等中的两种.(关于HA的更多内容,看这个HA Checklist.)

集群类型

J2EE集群通常流行两种风格:非共享和共享磁盘.在非共享集群里,每个应用服务器都有的它自己的文件系统,和这个集群里运行的应用程序自己的拷贝相一致.应用的更新和增加需要更新集群里的每个节点.当代码增加和更新发布时进行配置,大的集群有恶梦般的维护.

相反,磁盘共享集群使用一个所有的应用服务器都用的存储设备来获取在集群里运行的应用.更新和增加出现在一个文件系统里,集群里的所有的机器可以访问这些变化.直到最近才发现,单点失败是这种方法的不利方面.然而,SAN给出了一个单独的逻辑接口,通过这个接口可以进入到一个提供失败转移,反馈,和伸缩性的冗余存储中介.(关于SAN更多的内容,看Storage Infrastructure)

当比较J2EE应用服务器的集群实现时,重要考虑:

·集群实现

·集群和组件失败转移服务

·HttpSession失败转移

·集群拓扑里的单点失败

·柔性拓扑规划

·维护

继续阅读