2016-11-14 10 views
0

tomcat에서 실행중인 응용 프로그램에 대한 클러스터링 및로드 균형 조정을 수행하려고합니다. 우분투, 아파치 버전 2.4.18, 두 개의 tomcat 8.5 인스턴스를 사용하고 있습니다. 나는 이것을 위해 mod_jk를 시도했지만 그것은 나를 위해 일하지 않는다. 다음Apache 클러스터링 및 우분투의 tomcat 8로로드 균형 조정

내 아파치의 구성 및 바람둥이 workers.properies

worker.list=loadbalancer,status 
worker.server1.port=8009 
worker.server1.host=127.0.0.1 
worker.server1.type=ajp13 
worker.server1.connection_pool_size=200 
worker.server1.connection_pool_timeout=600 
worker.server1.socket_keepalive=1 

worker.server2.port=7009 
worker.server2.host=127.0.0.1 
worker.server2.type=ajp13 
worker.server2.connection_pool_size=200 
worker.server2.connection_pool_timeout=600 
worker.server2.socket_keepalive=1 

worker.server1.lbfactor=1 
worker.server2.lbfactor=1 

worker.loadbalancer.type=lb 
worker.loadbalancer.balance_workers=server1,server2 

worker.status.type=status 

에서 jk.conf

<IfModule jk_module> 

JkWorkersFile /etc/apache2/conf/workers.properties 

JkLogFile /etc/apache2/log/mod_jk.log 

JkLogLevel info 

JkShmFile /etc/apache2/log/jk-runtime-status 

JkWatchdogInterval 60 

JkMount /clusterjsp/* loadbalancer 
JkMount /jk-status status 

<Location /jk-status> 
    JkMount jk-status 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.1 
</Location> 

<Location /jk-manager> 
    JkMount jk-manager 
    Order deny,allow 
    Deny from all 
    Allow from 127.0.0.1 
</Location> 
</IfModule> 

에서

하고 모두 바람둥이에

<Engine name="Catalina" defaultHost="localhost" jvmRoute="server1"> <!-- server2 for another instance --> 

    <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"> 

     <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter"> 
     <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/> 
     </Sender> 

     <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver" address="auto" port="4000" autoBind="100" selectorTimeout="5000" maxThreads="50"/> 
     <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/> 
     <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor"/> 
    </Channel> 
    <Valve className="org.apache.catalina.ha.tcp.ReplicationValve" filter=""/> 
    <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/> 
    <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/> 
</Cluster> 

<Realm className="org.apache.catalina.realm.LockOutRealm"> 
    <Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase"/> 
</Realm> 

<Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> 
<Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> 
</Host> 

</Engine> 
을 server.xml의

apache2.conf에서 변경하지 않았거나 apache 홈 디렉토리에 httpd.conf가 없습니다. 나는 동일한 응용 프로그램을 두 개의 Tomcat 서버에 배포했는데 http://localhost:8080/clusterjsphttp://localhost:7070/clusterjsp을 사용할 때 작동하지만 내 브라우저에 http://localhost/clusterjsp을 입력하면 404 오류가 발생하지만 http://localhost은 아파치 기본 페이지를 표시합니다.

내 구성에서 무엇이 잘못되었거나 잘못 되었습니까?

답변

0

아마도 /clusterjsp/*과 일치하는 들어오는 모든 요청을로드 밸런서로 리디렉션하고 있지만 컨텍스트 경로 이후에 요청이없는 요청은 처리하지 않기 때문일 수 있습니다. 다른 aproaches도 있습니다

JkMount /clusterjsp loadbalancer 

, 그러나 아마이 테스트 할 easyest 하나입니다 : 당신은 당신의 jk.conf이 줄을 추가 시도 할 수 있습니다.