`
猫不吃的鱼
  • 浏览: 159069 次
  • 性别: Icon_minigender_1
  • 来自: 芜湖市
社区版块
存档分类
最新评论

apache-tomat负载均衡和集成

 
阅读更多
apache_2.2.4+tomcat6 集群和负载均衡

名词解释:
Apache:apache是web服务器,tomcat是应用服务器,是一个servlet容器,是apache的扩展。Apache和tomcat都可以作为独立的web服务器运行,但是apache不能运行java程序。Apache是普通的服务器,本身只支持html静态页面。但是可以通过插件支持php,还可以与tomcat连通,既单向apache连接tomcat,通过apache访问tomcat资源。Apache和tomcat是独立的,但是可以集成。 当两者整合使用的时候,如果客户端请求的是静态页面,则只需要apache服务器响应请求,如果客户端请求动态页面,则apache服务器响应请求。

Mod_jk:也叫JK,是apache用来连接后台tomcat的模块,支持集群和负载均衡。

Ajp:是定向包协议。采用二进制格式来传输可读性文本。Web服务器(apache)通过tcp连接和servlet容器(tomcat)连接。为了减少生成的socket开销,web服务器和servlet容器之间尝试保持持久性tcp连接,即多个请求回复重用一个连接,这些请求完成之前,其他请求不能使用该连接

配置软件
Apache 2.2.4  1个
Tomcat6  2个
mod_jk-1.2.26-httpd-2.2.4.so  用来连接apache和tomcat的

安装 apache 2.2.4

配置 tomcat (tomcat1,tomcat2)

打开tomcat/conf/server.xml
1、
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcatX">
Engine 节点增加节点标示 jvmRoute,参与的负载均衡的tomcat的此处jvmRoute设置不可以相同。


<Host name="localhost"  appBase="webapps"
            unpackWARs="true" autoDeploy="true"
            xmlValidation="false" xmlNamespaceAware="false">

参与负载均衡的 tomcat,此处HostName值必须相同。

tomcat 的session复用

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="8">
  <Manager className="org.apache.catalina.ha.session.DeltaManager"
                   expireSessionsOnShutdown="false"

                   notifyListenersOnReplication="true"/> 
          <Channel className="org.apache.catalina.tribes.group.GroupChannel"> 
            <Membership className="org.apache.catalina.tribes.membership.McastService"
                        address="228.0.0.4"
                        port="45564"
                        frequency="500"
                        dropTime="3000"/> 
            <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
                      address="auto"
                      port="4000"
                      autoBind="100"
                      selectorTimeout="5000"
                      maxThreads="6"/> 
            <!-- timeout="60000"--> 
            <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
              <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender" /> 
            </Sender> 
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/> 
            <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/> 
          </Channel>
          <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
                 filter=""/> 
          <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> 
          <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
                    tempDir="/tmp/war-temp/"
                    deployDir="/tmp/war-deploy/"
                    watchDir="/tmp/war-listen/"
                    watchEnabled="false"/> 
<ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/> 
<ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
</Cluster>       

<Valve className="org.apache.catalina.valves.RequestDumperValve"/>

这两处的注释去除。

端口设置

<Server port="8005" shutdown="SHUTDOWN">

<Connector port="8888" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

三处的port,参与集群的tomcat不能设置相同。需要分别设置不同。其中<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />  的port 在后面apache的请求分发配置中需要用到。

配置apache
将mod_jk-1.2.26-httpd-2.2.4.so 放入 apache/modules

修改httpd.conf文件
找到

<IfModule dir_module>
    DirectoryIndex login.html
</IfModule>

此处修改默认目录文件,你可以根据需要修改

在httpd.conf末尾 增加如下内容

LoadModule jk_module modules/mod_jk-1.2.26-httpd-2.2.4.so
JkWorkersFile conf/workers.properties
JkMount /* lbcontroller   

这些是tomcat集群,负载均衡配置部分 JkMount /* lbcontroller  是指定分配给tomcat的请求。

Conf中创建workers.properties文件 此文件用于配置apache和tomcat的集成要用到的tomcat实例和负载均衡分发控制器。
比如

#分发控制器,lbcontroller值对应conf/httpd.conf中的JkMount /* lbcontroller
worker.list=lbcontroller

######Tomcat1实例配置#####
#tomcat1,对应tomcat的server.xml 中<Engine name="tomcat1" defaultHost="localhost" jvmRoute="tomcat1">的jvmRoute值
#host值对应server.xml中的<Host name="localhost" appBase="webapps">以及hosts文件中的值
worker.tomcat1.host=localhost
#port值对应server.xml中的节点<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" />
worker.tomcat1.port=8009
worker.tomcat1.type=ajp13
#分发权重,值越大负载越大
worker.tomcat1.lbfactor=1

#Tomcat2实例配置
worker.tomcat2.host=localhost
worker.tomcat2.port=9009
worker.tomcat2.type=ajp13

worker.tomcat2.lbfactor=1
#负载均衡分发控制器
worker.lbcontroller.type=lb
worker.lbcontroller.balance_workers=tomcat1,tomcat2
worker.lbcontroller.sticky_session=false
#worker.lbcontroller.sticky_session的值
#为false时候,一个客户端连接请求,会发向不同tomcat,不同tomcat之间复用session
#为1时,则一个客户端请求只会发向一个tomcat.

四、session复制 应用程序的配置

<web-app xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd" version="2.4">       <display-name>TomcatDemo</display-name>       <distributable/></web-app>

Web.xml中 添加 <distributable/>

测试 session复用:
Index.jsp

name:<%=session.getAttribute("name")%>

Writer.jsp
    <%
    session.setAttribute("name","yuyong");
     %>

第一次 http://localhost:8888/clutom/index.jsp 打印name:null
执行 http://locahost:9090/clustom/writer.jsp 再次执行http://localhost:8888/clutom/index.jsp 打印 name:yuyong 。测试成功,实现了session复用

测试tomcat负载均衡

Index.jsp
<%
System.out.println("request....")
%>

浏览器http://localhost/clutom/
Tomcat1的控制台打印了一句request.... 再次刷新 tomcat2打印了request....
再次刷新又是tomcat1打印了。。如此。。。说明每次请求,分别请求了不同的tomcat。




1
1
分享到:
评论

相关推荐

    最新版linux apache-tomcat-9.0.52.tar.gz

    9. **集成Apache HTTP服务器**:通过mod_proxy_ajp模块,Apache HTTP Server可以作为前端代理,将请求转发给Tomcat处理,提供负载均衡和更好的性能。 10. **版本升级**:保持Tomcat版本的更新对于确保安全性和利用...

    apache-tomcat-6.0.18

    在实际应用中,Tomcat常与其他软件集成,如Apache HTTP Server(通常称为Apache,非此处的标签“阿帕奇”)进行负载均衡和反向代理,提供更高的性能和安全性。Apache HTTP Server是一个流行的HTTP服务器,负责处理...

    apache-TOMCAT-5.5.25

    - **集群和负载均衡**:虽然Tomcat 5.5.25不是设计为大规模集群环境的,但它支持基本的session复制,可以在简单的负载均衡环境中使用。 - **扩展性**:Tomcat 5.5.25可以与其他开源项目如Spring、Hibernate等集成,...

    apache-tomcat-8.0.30 linux 64位

    4. 使用`mod_proxy_ajp`或`mod_jk`与Apache HTTP Server集成,实现负载均衡和反向代理。 最后,定期更新Tomcat到最新版本以获取安全补丁和新特性。监控日志文件可以帮助诊断和解决问题,`logs/catalina.out`是主要...

    apache-tomcat-8.5.90-windows-x64.zip

    此外,通过使用Clustering和Load Balancing,Tomcat可以扩展到多台服务器,以支持高可用性和负载均衡。 总的来说,Apache Tomcat 8.5.90是一个强大且灵活的Java Web服务器,为开发者提供了运行和部署Java应用的平台...

    apache-tomcat-8.5.47-windows-x64.zip

    对于需要更高级功能,如负载均衡、SSL处理和静态内容服务的场景,可以将Tomcat与Apache HTTP Server通过mod_jk或mod_proxy模块进行集成,Apache作为前端服务器接收请求,并将动态请求转发给后端的Tomcat处理。...

    apache-tomcat-9.0.65-windows-x64.zip

    4. **Cluster**:如果配置了集群功能,Tomcat可以实现负载均衡和故障转移,以提高可用性和可扩展性。 5. **Manager**:这是一个Web应用程序管理工具,允许用户通过浏览器界面来部署、卸载或更新应用程序。 6. **...

    apache-tomcat-9.0.43-windows-x64.zip

    - 可以与Apache HTTP Server通过mod_jk或mod_proxy_ajp模块实现负载均衡和反向代理。 10. **故障排查**: - 查看`logs/catalina.out`和特定应用的日志文件以定位问题。 - 使用`jstack`或`jconsole`等工具查看JVM...

    apache-tomcat-8.5.73

    4. **部署灵活性**:Tomcat可以作为独立服务器运行,也可以与Apache HTTP Server或其他Web服务器集成,通过mod_proxy_ajp模块实现负载均衡和更好的性能。 5. **易于管理**:提供了一个管理控制台,用户可以通过Web...

    apache-tomcat-6.0.44

    8. **集群与负载均衡**:Tomcat 6.0支持集群配置,通过复制会话数据实现多台服务器间的会话持久性,但这个版本的集群功能相对较弱。 9. **性能优化**:可以通过调整JVM参数,启用线程池,限制并发连接数,以及调整...

    apache-tomcat-8.5.71.tar.gz

    此外,还可以通过集成其他服务器,如Apache HTTP Server,实现负载均衡和静态资源服务。 总的来说,Apache Tomcat是一个轻量级且高效的Web服务器和Servlet容器,广泛应用于小型到大型的Java Web应用。正确安装和...

    apache-tomcat-8.5.31.zip

    例如,`server.xml`中的`Connector`元素可以配置连接器以支持负载均衡,通过设置`proxyName`和`proxyPort`属性来指定反向代理服务器的地址和端口,或者使用`&lt;Engine&gt;`元素内的`Host`和`Valve`标签来实现更复杂的路由...

    apache-tomcat-7.0.82-windows-x86

    13. **多实例配置**:在同一个机器上运行多个Tomcat实例,每个实例都有自己的配置、日志和工作目录,可以实现负载均衡或隔离不同应用。 14. **集成其他服务器**:Tomcat可以与其他应用服务器如Apache HTTP Server...

    apache-tomcat-8.0.21

    9. **集群与负载均衡**:对于高可用性和负载均衡的需求,Tomcat支持集群配置,通过复制会话和共享应用状态来实现。 10. **监控与管理**:Tomcat自带了一个管理应用程序,可以通过浏览器访问`...

    apache-tomcat-7.0.62

    10. **集成其他应用服务器**: 虽然Tomcat本身是一个轻量级的服务器,但可以通过像Apache HTTP Server这样的反向代理服务器与之集成,以实现更高的负载均衡和更复杂的安全配置。 总之,Apache Tomcat 7.0.62 是一个...

    最新版windows apache-tomcat-10.0.10-windows-x64.zip

    Apache Tomcat是一款开源的Java Servlet容器,...而在生产环境中,为了提高可用性和可靠性,通常会采用集群、负载均衡等高级配置。理解并熟练掌握Tomcat的使用和管理,对于任何Java Web开发者来说都是至关重要的技能。

    apache-tomcat-9.0.44.tar.gz

    5. Cluster:支持集群部署,实现负载均衡和故障转移。 在实际应用中,Tomcat经常与Spring Boot、Hibernate等框架结合使用,构建高效的企业级Web应用。同时,由于其轻量级和易于管理的特性,Tomcat也常作为开发和...

    最新版linux apache-tomcat-9.0.36.tar.gz

    - 它还可以与Apache HTTP Server通过mod_jk或mod_proxy模块进行反向代理,提升性能和负载均衡能力。 总结来说,Apache Tomcat 9.0.36是Linux环境中部署和运行Java Web应用的强大工具,它的灵活性、稳定性以及社区...

    apache-tomcat-8.0.52 版本 免安装

    6. **与其他服务的整合**:Tomcat可以与数据库、缓存系统、负载均衡器等其他服务集成,以构建复杂的分布式应用程序。 总结来说,Apache Tomcat 8.0.52提供了一个简单易用且功能强大的平台,用于开发和部署Java Web...

    最新版linux apache-tomcat-8.5.56.tar.gz

    - **使用mod_proxy**:通过Apache的`mod_proxy`模块,可以将HTTP请求转发到Tomcat,实现负载均衡和反向代理。 - **配置虚拟主机**:在Apache的配置文件中添加虚拟主机配置,指定Tomcat的应用路径。 4. **部署Web...

Global site tag (gtag.js) - Google Analytics