知识大全 Tomcat集群与负载均衡

Posted

篇首语:笛里谁知壮士心,沙头空照征人骨。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 Tomcat集群与负载均衡相关的知识,希望对你有一定的参考价值。

Tomcat集群与负载均衡  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

  在单一的服务器上执行WEB应用程序有一些重大的问题 当网站成功建成并开始接受大量请求时 单一服务器终究无法满足需要处理的负荷量 所以就有点显得有点力不从心了

  

  另外一个常见的问题是会产生单点故障 如果该服务器坏掉 那么网站就立刻无法运作了 不论是因为要有较佳的扩充性还是容错能力 我们都会想在一台以上的服务器计算机上执行WEB应用程序 所以 这时候我们就需要用到集群这一门技术了

  

  在进入集群系统架构探讨之前 先定义一些专门术语

   集群(Cluster) 是一组独立的计算机系统构成一个松耦合的多处理器系统 它们之间通过网络实现进程间的通信 应用程序可以通过网络共享内存进行消息传送 实现分布式计算机

   负载均衡(Load Balance) 先得从集群讲起 集群就是一组连在一起的计算机 从外部看它是一个系统 各节点可以是不同的操作系统或不同硬件构成的计算机 如一个提供Web服务的集群 对外界来看是一个大Web服务器 不过集群的节点也可以单独提供服务

   特点 在现有网络结构之上 负载均衡提供了一种廉价有效的方法扩展服务器带宽和增加吞吐量 加强网络数据处理能力 提高网络的灵活性和可用性 集群系统(Cluster)主要解决下面几个问题

  高可靠性(HA) 利用集群管理软件 当主服务器故障时 备份服务器能够自动接管主服务器的工作 并及时切换过去 以实现对用户的不间断服务

  高性能计算(HP) 即充分利用集群中的每一台计算机的资源 实现复杂运算的并行处理 通常用于科学计算领域 比如基因分析 化学分析等

  负载平衡 即把负载压力根据某种算法合理分配到集群中的每一台计算机上 以减轻主服务器的压力 降低对主服务器的硬件和软件要求

  

  目前比较常用的负载均衡技术主要有

   基于DNS的负载均衡

  通过DNS服务中的随机名字解析来实现负载均衡 在DNS服务器中 可以为多个不同的地址配置同一个名字 而最终查询这个名字的客户机将在解析这个名字时得到其中一个地址 因此 对于同一个名字 不同的客户机会得到不同的地址 他们也就访问不同地址上的Web服务器 从而达到负载均衡的目的

   反向代理负载均衡 (如Apache+JK +Tomcat这种组合)

  使用代理服务器可以将请求转发给内部的Web服务器 让代理服务器将请求均匀地转发给多台内部Web服务器之一上 从而达到负载均衡的目的 这种代理方式与普通的代理方式有所不同 标准代理方式是客户使用代理访问多个外部Web服务器 而这种代理方式是多个客户使用它访问内部Web服务器 因此也被称为反向代理模式

   基于NAT(Neork Address Translation)的负载均衡技术 (如Linux Virtual Server 简称LVS)

  网络地址转换为在内部地址和外部地址之间进行转换 以便具备内部地址的计算机能访问外部网络 而当外部网络中的计算机访问地址转换网关拥有的某一外部地址时 地址转换网关能将其转发到一个映射的内部地址上 因此如果地址转换网关能将每个连接均匀转换为不同的内部服务器地址 此后外部网络中的计算机就各自与自己转换得到的地址上服务器进行通信 从而达到负载分担的目的

  

  

  介绍完上面的集群技术之后 下面就基于Tomcat的集群架构方案进行说明

  

  上面是采用了Apache d作为web服务器的 即作为Tomcat的前端处理器 根据具体情况而定 有些情况下是不需要Apache d作为 web 服务器的 如系统展现没有静态页面那就不需要Apache d 那时可以直接使用Tomcat作为web 服务器来使用 使用Apache d主要是它在处理静态页面方面的能力比Tomcat强多了

   用户的网页浏览器做完本地 DNS和企业授权的DNS之的请求/响应后 这时候企业授权的DNS(即 cn BOSS DNS)会给用户本地的DNS服务器提供一个NAT请求分配器(即网关)IP

  

   NAT分配器 它会根据特定的分配算法 来决定要将连接交给哪一台内部 Apache d来处理请求 大多数的NAT请求分配器提供了容错能力 根据侦测各种WEB服务器的失效状况 停止将请求分配给已经宕掉的服务器 并且有些分配器还可以监测到WEB服务器机器的负载情况 并将请求分配给负载最轻的服务器等等 Linux Virtual Server是一个基于Linux操作系统上执行的VS NAT开源软件套件 而且它有丰富的功能和良好的说明文件 商业硬件解决方案 Foundry Neorks的ServerIron是目前业界公认最佳的请求分配器之一

  

   Apache d + Mod_JK 在这里是作为负载均衡器 那为什么要做集群呢?如果集群系统要具备容错能力 以便在任何单一的硬件或软件组件失效时还能 %可用 那么集群系统必须没有单点故障之忧 所以 不能只架设一台有mod_jk 的Apache d 因为如果 d或mod_jk 失效了 将不会再有请求被会送交到任何一个Tomcat 实例 这种情况下 Apache d就是瓶劲 特别在访问量大的网站

  

   Mod_JK 负载均衡与故障复原 决定把Apache d当成web服务器 而且使用mod_jk 将请求传送给Tomcat 则可以使用mod_jk 的负载均衡与容错功能 在集群系统中 带有mod_jk 的Apache d可以做的事情包括

  A 将请求分配至一或多个Tomcat实例上

  你可以在mod_jk 的workers properties文件中 设定许多Tomcat实例 并赋于每个实例一个lb_factor值 以作为请求分配的加权因子

  

  B 侦测Tomcat实例是否失败

  当Tomcat实例的连接器服务不再响应时 mod_jk 会及时侦测到 并停止将请求送给它 其他的Tomcat实例则会接受失效实例的负载

  

  C 侦测Tomcat实例在失效后的何时恢复

  因连接器服务失效 而停止将请求分配给Tomcat实例之后 mod_jk 会周期性地检查是否已恢复使用性 并自动将其加入现行的Tomcat实例池中

  

   Tomcat中的集群原理是通过组播的方式进行节点的查找并使用TCP连接进行会话的复制 这里提示一下就是 对每个请求的处理 Tomcat都会进行会话复制 复制后的会话将会慢慢变得庞大

  

   Mod_jk 同时支持会话亲和和会话复制 在tomcat 中如何实现会话亲和和会话复制?把server xml中的 标签去掉就实现会话亲和 把 标签加上就实现会话复制

  

   会话亲和 就是表示来自同会话的所有请求都由相同的Tomcat 实例来处理 这种情况下 如果Tomcat实例或所执行的服务器机器失效 也会丧失Servlet的会话数据 即使在集群系统中执行更多的Tomcat实例 也永远不会复制会话数据 这样是提高集群性能的一种方案 但不具备有容错能力了

  

cha138/Article/program/Java/ky/201311/27887

相关参考

知识大全 实例讲解配置之——TOMCAT集群配置

实例讲解配置之——TOMCAT集群配置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  我的运行环

知识大全 MC4J远程监测Tomcat集群-JMX助Tomcat2(图)

MC4J远程监测Tomcat集群-JMX助Tomcat2(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 MC4J远程监测Tomcat集群-JMX助Tomcat1(图)

MC4J远程监测Tomcat集群-JMX助Tomcat1(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来

知识大全 Tomcat 5集群中的SESSION复制一(图)

Tomcat5集群中的SESSION复制一(图)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  

知识大全 apache+Tomcat负载平衡设置详解

apache+Tomcat负载平衡设置详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  一简介

知识大全 Nginx负载均衡配置实例详解

Nginx负载均衡配置实例详解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!负载均衡是我们大流量网

知识大全 Nginx反向代理实现负载均衡配置图解

Nginx反向代理实现负载均衡配置图解  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!负载均衡配置是

知识大全 Oracle] RAC 之 - 负载均衡深入解析

Oracle]RAC之-负载均衡深入解析  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!负载均衡是指

知识大全 PHP负载均衡指南

PHP负载均衡指南  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!过去当运行一个大的web应用时候意

知识大全 Java程序性能优化-负载均衡(1)

Java程序性能优化-负载均衡(1)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!