设为首页 收藏本站
查看: 773|回复: 0

[经验分享] Apache负载均衡 Tomcat6的集群和session的复制

[复制链接]

尚未签到

发表于 2017-1-9 07:15:20 | 显示全部楼层 |阅读模式
系统环境:Windows XP SP3 ,jdk1.5.0_05
软件版本:apache_2.2.11-win32-x86-openssl-0.9.8i.msi  apache-tomcat-6.0.16  apache-tomcat-6.0.18
备注:tomcat可以下载压缩包直接解压就可以,另外也下载整合了APR(Apache Tomcat Native library 1.1.16)
Apache和Tomcat的整合个人推荐使用AJP的方式,配置简单,而且现在tomcat官方鼓励采用这种方式呢!如果想体验mod_JK的方式,下面也有介绍。
我是在同一台机器上作的测试,因为我完成了apache的负载均衡以及tomcat6的集群和session的复制,所以需要修改到的地方可能比较多,先将配置列出如下:
一、AJP方式的配置:
1、修改apache的httpd.conf
首先要load所需要的so文件,需要列表如下:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
LoadModule proxy_http_module modules/mod_proxy_http.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so

ProxyPass /images !
ProxyPass /css !
ProxyPass /js !

<Proxy balancer://cluster/>
BalancerMember ajp://localhost:8009/ route=tomcat1 loadfactor=50
BalancerMember ajp://localhost:9009/ route=tomcat2 loadfactor=50
</Proxy>

开启虚拟主机
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

httpd-vhosts.conf:
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin winsky_2008@163.com
    DocumentRoot "D:\www\webapps"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/localhost-error.log"
    CustomLog "logs/localhost-access.log" common
    ProxyRequests Off
    ProxyPass / balancer://cluster/ stickysession=JSESSIONID nofailover=On
    ProxyPassReverse / balancer://cluster/
    #ProxyPassReverse /test balancer://cluster/ test
</VirtualHost>
二、mod_jk方式的配置
1、修改apache的httpd.conf
LoadModule  jk_module modules/mod_jk.so
JkWorkersFile "conf\workers.properties"
JkMountFile  "conf\uriworkermap.properties"

JkLogFile "logs\mod_jk2.log"
JkShmFile "logs\jk.shm"
JkLogLevel info

workers.properties:
workers.java_home=D:\ jdk1.5.0_05
ps=\
worker.list= status,LBCONTROLLER


# localhost server 1
# ------------------------
worker.s1.port=8009
worker.s1.host=localhost
worker.s1.type=ajp13

# localhost server 2
# ------------------------
worker.s2.port=9009
worker.s2.host=localhost
worker.s2.type=ajp13

worker.LBCONTROLLER.type=lb
worker.retries=3
worker.LBCONTROLLER.balanced_workers=s1,s2
worker.LBCONTROLLER.sticky_session=true

worker.status.type=status

uriworkermap.properties:
/*= LBCONTROLLER
#/*.jsp= LBCONTROLLER
#/*.do= LBCONTROLLER
#/*.action= LBCONTROLLER
#/servlet/*= LBCONTROLLER

/jkstatus=status

!/*.gif= LBCONTROLLER
!/*.jpg= LBCONTROLLER
!/*.png= LBCONTROLLER
!/*.css= LBCONTROLLER
!/*.js= LBCONTROLLER
!/*.htm=DLOG4J
!/*.html=DLOG4J
开启虚拟主机
# Virtual hosts
Include conf/extra/httpd-vhosts.conf

httpd-vhosts.conf:
NameVirtualHost *:80
<VirtualHost *:80>
    ServerAdmin winsky_2008@163.com
    DocumentRoot "D:\www\webapps"
    ServerName localhost
    ServerAlias localhost
    ErrorLog "logs/localhost-error.log"
CustomLog "logs/localhost-access.log" common
JkMountCopy On
</VirtualHost>

三、修改%TOMCAT_HOME%/conf/server.xml(跟使用AJP和JK方式没有关系,皆通用)
添加集群的配置:
      <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster" channelSendOptions="6">
       <!--  
        <Manager className="org.apache.catalina.ha.session.BackupManager"
                 expireSessionsOnShutdown="false"
                 notifyListenersOnReplication="true"
                 mapSendOptions="6"/>
         -->
        <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="5001"
                      selectorTimeout="100"
                      maxThreads="6"/>
            <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=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>
       <!--
        <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>
四、实现session复制
第一步:
Tomcat 6.0.16
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat1">
<!--   
    <Engine name="Catalina" defaultHost="localhost">
-->
Tomcat 6.0.18
<Engine name="Standalone" defaultHost="localhost" jvmRoute="tomcat2">
<!--   
    <Engine name="Catalina" defaultHost="localhost">
-->

  第二步:
Webapps目录下的应用程序的web.xm中必须添加
<distributable/> 此应用将与群集服务器复制Session

因为是在同一台机器上启动多个tomcat,所以修改监听的端口是必不可少的,这里将我的配置列出如下:
Tomcat 6.0.16
<Connector port="8080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" acceptCount="5000" maxThreads="2000"/>
<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Tomcat 6.0.18
<Connector port="9080" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="9443" acceptCount="5000" maxThreads="2000"/>
<Connector port="9009" protocol="AJP/1.3" redirectPort="9443" />
配置完成,先启动所有tomcat服务器,最后启动apache2.2服务器
以上为个人使用过程的总结,具体的性能没有做测试,所以没法做比较,如有疑问,可以联系QQ:735014642,进行沟通,欢迎指正~~

附件提供文档下载:关于windows下整合Apache和Tomcat的个人经验.rar

参考连接:http://lamp.linux.gov.cn/Apache/ApacheMenu/mod/mod_proxy.html
          http://tomcat.apache.org/tomcat-6.0-doc/config/cluster.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-325678-1-1.html 上篇帖子: [Jakarta Commons笔记] org.apache.commons.lang.math 下篇帖子: 安装iis与apache,同时使用80端口
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表