最近做一个网站项目,需要考虑 tomcat负载均衡问题,以下是我的总结
1 环境 Tomcat6(4个) Apache2
2 mod_jk-1
30-httpd-2
so 2 原理简述 Apache是http服务器,负责接收http请求
如何将请求分发给后台 tomcat 呢,这就需要 mod_jk了,mod_jk是Apache用来链接tomcat的模块
它需要配置在 Apache中
下面描述的是他们各自的分工情况 Apache要做的:Apache默认处理接收到的所有 http请求,但可通过配置将请求转发给某个模块处理,并将模块处理结果返回,在这里我们将所有请求都转发给 mod_jk去处理
Mod_jk要做的: a) 登记所有的 tomcat服务器,并针对不同功能划分的 tomcat做不同的配置
b) 将从 Apache接收到的请求按策略分配给 tomcat
分配策略如下: i
对于新的会话按配置比例分发给tomcat ii
对于已有会话(http中包含session信息)的请求会发送给创建该会话的tomcat iii
当创建会话的tomcat无法响应时,发送给该tomcat指定的备份tomcat
如果没有指定,则视为新会话处 理
Tomcat要做的:处理 mod_jk发送过来的请求并返回结果
之前提到如果某一 tomcat无法响应转由其他 tomcat处理时,原有的session信息将会丢失
为解决此问题,于是就有了 session同步的概念,即多个服务器 之间共享 session,当某一服务器不同提供服务时不会导致用户 session丢失
Tomcat的session共享是基于ip组播协议实现的
(http://blog
net/wu_jietian/archive/2010/04/13/5480010
aspx )这里只需要知道 s