Назад | Перейти на главную страницу

Apache httpd, Tomcat: балансировка нагрузки, похоже, работает между двумя tomcat, но один останавливается, и служба умирает

Я работаю над задачей, в которой мне нужно сбалансировать нагрузку двух экземпляров tomcat, чтобы они использовали общий сеанс также между собой, и когда один из них выходит из строя, другой может справиться с задачей.

Кажется, что первая задача работает, так как, когда обе версии Tomcat подключены к сети, проблем не возникает.

Я не знаю, как определить, какой пользователь от какого кота, поэтому я могу видеть, находится ли пользователь из другого кота в чате, тогда идентификатор сеанса правильно используется.

Вторая проблема, с которой я сталкиваюсь, заключается в том, что если один tomcat выйдет из строя, другой экземпляр tomcat должен продолжать работать и обслуживать сделанные запросы, но этого не происходит. Как только любой из экземпляров Apache tomcat выходит из строя, я получаю сообщение 503, служба недоступна. Пожалуйста, дайте мне знать, как я могу решить эту проблему и проверить, какой пользователь от какого экземпляра tomcat. Внесенные изменения: sites-enabled / 000-default:

<Proxy balancer://mycluster>
    BalancerMember ajp://localhost:8010 route=jvmroute-first connectiontimeout=10
    BalancerMember ajp://localhost:8011 route=jvmroute-second connectiontimeout=10

   ProxySet stickysession=JSESSIONID

   Order Deny,Allow
   Deny from none
   Allow from all

</Proxy>

<VirtualHost *:80>
ProxyPass / balancer://mycluster/
ProxyPassReverse / balancer://mycluster/
</VirtualHost>

Первый tomcat server.xml:

<Connector port="8080" proxyPort="80" protocol="HTTP/1.1" compression="force" compressionMinSize="1024" 
               connectionTimeout="20000"
               redirectPort="443" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"/>


<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="200" compression="force"
              compressionMinSize="1024" scheme="https" secure="true" clientAuth="false"  sslProtocol="TLS"
                keystoreFile="keystore" keystorePass="password" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
/>

 <Connector port="8010" protocol="AJP/1.3" redirectPort="443" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
/>
    <Engine name="Catalina" defaultHost="localhost" jvmRoute="jvmroute-first">
// No modifications within Engine
</Engine>

Второй экземпляр кота:

<Connector port="8081" proxyPort="80" protocol="HTTP/1.1" compression="force" compressionMinSize="1024" 
               connectionTimeout="20000"
               redirectPort="443" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"/>


<Connector port="443" protocol="HTTP/1.1" SSLEnabled="true" maxThreads="200" compression="force"
              compressionMinSize="1024" scheme="https" secure="true" clientAuth="false"  sslProtocol="TLS"
                keystoreFile="keystore.jks" keystorePass="password" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
/>
<Connector port="8011" protocol="AJP/1.3" redirectPort="443" URIEncoding="utf-8"
 compressableMimeType="text/html,text/xml,text/plain,text/css,text/ javascript,application/x-javascript,application/javascript"
/>

Почему это происходит. Любые идеи, подсказки. Большое спасибо. :-)

редактировать

Кажется, что-то не так с балансировщиком нагрузки, так как через некоторое время я получаю Err, проверьте снимок экрана

Это может происходить из-за того, что на стороне Tomcat не включена репликация сеанса. Поскольку липкий сеанс включен в Apache, запросы всегда маршрутизируются на основе проверки JSESSIONID.

Реализуйте кластеризацию в экземплярах Tomcat с переключением при отказе, чтобы любой неудачный запрос после сбоя перенаправлялся на второй сервер Tomcat.