2016-11-14 9 views
0

Я хочу выполнить кластеризацию и балансировку нагрузки для моих приложений, работающих в tomcat. Я использую ubuntu, apache версии 2.4.18 и два экземпляра tomcat 8.5. Я пробовал с mod_jk для этого, но он не работает для меня.Кластеризация и балансировка Apache с помощью tomcat 8 в ubuntu

Ниже моя конфигурация Apache и Tomcat

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

в 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 

и в обоих котом Server.xml

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

я не вносил никаких изменений в apache2.conf, или у меня нет httpd.conf в домашнем каталоге apache. Я развернул одно и то же приложение i и tomcat-серверов, и он работает при использовании http://localhost:8080/clusterjsp и http://localhost:7070/clusterjsp, но когда я ввожу http://localhost/clusterjsp в мой браузер, он дает мне ошибку 404, но http://localhost показывает страницу по умолчанию apache.

Не могли бы вы дать мне знать, что мне не хватает или что не так в моей конфигурации.

ответ

0

Возможно, это связано с тем, что вы перенаправляете все входящие запросы, соответствующие /clusterjsp/*, для балансировки нагрузки, но вы не заботитесь о запросах, которые не имеют ничего после контекстного пути. Вы можете попробовать просто добавить эту строку в jk.conf:

JkMount /clusterjsp loadbalancer 

Есть другие aproaches тоже, но, вероятно, это easyest один, чтобы проверить.