Я пытаюсь получить базовый балансировщик нагрузки Apache 2.2, работающий поверх двух установок Tomcat 6. Я читаю всю документацию и у меня возникают проблемы с ее корректной работой. Я вполне уверен, что у меня правильная конфигурация Apache, но я думаю, что в моих настройках Tomcat что-то не хватает, что мешает подключению. Документация Tomcat Connector хороша для того, чтобы изменить Apache, но не упоминает, что нужно изменить в настройках Tomcat.
Вот мои основные настройки. Все 3 установки находятся на одной машине (это всего лишь тестовая установка). Итак, Apache 2.2 установлен в каталоге C: \ apache. Прослушивает порт 80. 2 Tomcat 6 устанавливает, один прослушивает порт 81, другой - порт 82. Apache просто перенаправит все на серверы Tomcat, выступая в качестве балансировщика нагрузки 100%.
Вот ошибки, которые я получаю в своем файле mod_jk.log, когда пытаюсь установить соединение на http://localhost:80/index.jsp. Ошибка 502 Bad Gateway.
[Mon Nov 15 13:05:04.681 2010] [3596:1496] [error] ajp_connection_tcp_get_message::jk_ajp_common.c (1245): wrong message format 0x4854 from 127.0.0.1:81
[Mon Nov 15 13:05:04.681 2010] [3596:1496] [error] ajp_get_reply::jk_ajp_common.c (2058): (tomcat1) Tomcat is down or refused connection. No response has been sent to the client (yet)
[Mon Nov 15 13:05:04.681 2010] [3596:1496] [info] ajp_service::jk_ajp_common.c (2543): (tomcat1) sending request to tomcat failed (recoverable), because of protocol error (attempt=1)
Вот настройки, которые у меня есть в файле httpd.conf моего Apache ...
LoadModule jk_module modules/mod_jk.so
<IfModule jk_module>
JkWorkersFile conf/workers.properties
JkLogFile logs/mod_jk.log
JkLogLevel info
JkMountFile conf/uriworkermap.properties
</IfModule>
Вот файл worker.properties , который у меня есть ...
#
# This file provides minimal jk configuration properties needed to
# connect to Tomcat.
#
# The workers that jk should create and work with
#
worker.list=loadbalancer,jkstatus
#
# Define the servers in our cluster
#
worker.tomcat1.type=ajp13
worker.tomcat1.host=localhost
worker.tomcat1.port=81
worker.tomcat1.lbfactor=2
worker.tomcat2.type=ajp13
worker.tomcat2.host=localhost
worker.tomcat2.port=82
worker.tomcat2.lbfactor=1
#
# Defining a load balancer
#
worker.loadbalancer.type=lb
worker.loadbalancer.balance_workers=tomcat1,tomcat2
worker.loadbalancer.sticky_session=false
#
# Define status worker
#
worker.jkstatus.type=status
Вот uriworkermap.properties У меня есть
#
# This file provides sample mappings for example wlb
# worker defined in workermap.properties.minimal
# The general syntax for this file is:
# [URL]=[Worker name]
/*.*=loadbalancer
Наконец, вот тег двигателя Tomcat в его server.xml file
<Engine name="Catalina" defaultHost="localhost" jvmRoute="tomcat1">
<Realm className="org.apache.catalina.realm.UserDatabaseRealm" resourceName="UserDatabase" />
<Host name="localhost" appBase="webapps" deployOnStartup="true">
<Valve className="org.apache.catalina.valves.AccessLogValve"
directory="logs" prefix="localhost_access_log." suffix=".txt"
pattern="common" resolveHosts="false"/>
</Host>
</Engine>