关于Tomact我们都知道它是一种嵌入的脚本软件,基本上我们在Linux下来来完成负载均衡。那么针对负载均衡和Tomact我们来进行一个具体的说明吧。之后再对他们的设定过程给出具体的内容。
◆Tomcat的集群
在Tomcat先前的版本中(4.1)可以通过第三方的jar文件来实现集群。在一个集群内安装和配置多个Tomcat实例不是一件容易的事情。将集群的能力增加到开放源的servlet容器(Tomcat)和应用服务(JBoss)中,JavaGroups是一个不错的选择。在最新版本的Tomcat,集群已经成为主要安装包的一部分。将第三方的集群实现对Tomcat服务器的影响减少到最低。
在典型的集群环境中,为了让成员之间相互协作和复制状态,它们之间需要互相通信。
组的通信可以使用point-to-pointRMI(TCP-IP)或者IP多播两种方式。
大部分的J2EE应用服务器(如JBoss、Oracle、WebLogic和Borland)都是使用IP多播让集群成员进行通信,在集群内发送state/update/heartbeat数据给其他成员。
Tomcat集群成员的通信是如下进行的:所有的集群成员用多播ping消息来对话。每一个Tomcat实例将发送一个消息,广播其IP地址和TCP监听端口(为sessionreplication)。如果在给定的时间帧内,某个实例没有接收到这些信息,那么该实例就会被认为是当机。
另一个比较流行的概念是farming,提供集群范围内的Web应用的热部署。在服务器farm内,一个Web应用通过拷贝war文件到集群内的一个节点上进行部署,farming将会把这个Web应用部署到整个集群中。类似的,从一个集群节点上删除war文件,farming将会在集群内所有的节点上反部署这个Web应用。Tomcat的集群文档中讲到在接下来的版本中将会支持farming能力。
◆负载均衡
一种机制,能将服务器的负载被分发到集群的不同节点上。基于负载均衡策略,应用不再在单一的服务器上执行,而是在动态选择的服务器上。当客户请求服务,一个或多个协作服务器处理这个请求。负载均衡为集群提供单一的入口,就如直接和独立的Web或者应用服务器交互一样,这对客户来说是透明的。
两种比较流行的负载均衡方法分别是DNS轮循和硬件负载均衡。DNS轮循提供单个逻辑名称,返回集群内某台机器的ip地址。这种方式是廉价、简单并且容易配置,但它并没有提供服务器之间的联系和高可靠性的能力。相对来说,硬件负载均衡通过虚拟ip地址来解决DNS轮循存在的问题。负载均衡器有一个单独的ip地址,映射到集群内的每一个节点上。负载均衡器接收到请求,然后重写头部来指向集群内的其他机器。如果我们从集群内移出一些机器,那么这个改变马上生效。硬件负载均衡的好处是服务器的联系性和高效。缺点是昂贵并且设置复杂。(作者在这里没有提到这种硬件的负载均衡方式可以用软件实现,这种方式称为VitrualServer)。
对于负载的分发有多种算法,下面是一些较为常用的算法:
round-robin轮循
random随机
weight-based权重
minimumload最小负载
lastaccesstime最后访问时间
programmaticparameter-based负载均衡器根据方法中的参数来选择服务器
负载均衡算法涉及统计上的差异,速度和简单性。举个例子,weight-based算法比其他的算法需要更长的计算时间。想得到对负载均衡的更详细的解释,参考ONJava的文章“LoadBalancingWebApplications"