2016-01-19 2 views
1

Я работаю над приложением Spring-MVC, которое развертывается на 2 экземплярах Tomcat. Балансировка нагрузки и сбой выполняются с помощью экземпляра Apache с использованием mod_jk. Сейчас все работает хорошо, кроме нашей технологии PUSH.Apache, Tomcat: балансировка нагрузки, не использующая общие идентификаторы сеанса

Технология PUSH, которую мы используем, основана на Cometd (спецификации API Bayeux), и если я вхожу в систему, то я зарегистрирован на одном сервере, но я не могу видеть пользователей, которые вошли во второй сервер онлайн. Я уже использую sticky sessions. Я думал, что они несут ответственность за управление этим. Конфигурация

Apache:

workers.properties:

worker.list=loadbalancer 
worker.list=jk-status 
worker.jk-status.type=status 
worker.jk-status.read_only=true 

worker.list=jk-manager 
worker.jk-manager.type=status 

worker.server1.port=8010 
worker.server1.host=localhost 
worker.server1.lbfactor=1 
worker.server1.type=ajp13 


worker.server2.port=8011 
worker.server2.host=localhost 
worker.server2.type=ajp13 
worker.server2.lbfactor=1 

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

worker.loadbalancer.sticky_session=true 
worker.myworker.sticky_session_force=True 

сайты с поддержкой/000-умолчанию

Listen 443 
<VirtualHost _default_:443> 
ServerName www.domain.com 
ServerAlias *.domain.com domain.com 
JkMount /* loadbalancer 
SSLEngine on 
SSLCertificateFile /home/path/to/.crt 
SSLCertificateKeyFile /home//path/to/.key 
SSLCertificateChainFile /home/path/to/.ca-bundle 
</VirtualHost> 

apache2.conf:

LoadModule jk_module modules/mod_jk.so 
JkWorkersFile /etc/apache2/workers.properties 
JkLogFile /etc/apache2/mod_jk.log 
JkMount /* loadbalancer 

Tomcat только имеет один ч ange, т. е. jvmRoute. При необходимости я могу добавить это. Пожалуйста, дайте мне знать, почему это может произойти и как это исправить. Большое спасибо. :-)

TomcatFirst»server.xml:

<Server port="8005" shutdown="SHUTDOWN"> 
<Connector port="8443" enableLookups="true" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="200" 
compression="off" sslProtocols="TLS" sslEnabledProtocols="TLSv1+TLSv1.1+TLSv1.2" 
ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, 
TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, 
TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA" 
compressionMinSize="1024" scheme="https" secure="true" clientAuth="false" 
keystoreFile="/path/to/.keystore" keystorePass="PASSWORD" URIEncoding="utf-8"/> 
<Connector port="8010" protocol="AJP/1.3" redirectPort="8443" 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="server1"> 
<Host name="www.domain.com" appBase="webapps" 
      unpackWARs="true" autoDeploy="true"> 

     <Alias>domain.com</Alias> 
</Engine> 

server.xml TomcatSecond в:

<Server port="8006" shutdown="SHUTDOWN"> 
    <Connector port="8444" enableLookups="true" protocol="org.apache.coyote.http11.Http11NioProtocol" SSLEnabled="true" maxThreads="200" 
    compression="off" sslProtocols="TLS" sslEnabledProtocols="TLSv1+TLSv1.1+TLSv1.2" 
    ciphers="TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256, TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA,TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384, 
    TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,TLS_ECDHE_RSA_WITH_RC4_128_SHA, TLS_RSA_WITH_AES_128_CBC_SHA256, 
    TLS_RSA_WITH_AES_128_CBC_SHA,TLS_RSA_WITH_AES_256_CBC_SHA256, TLS_RSA_WITH_AES_256_CBC_SHA,SSL_RSA_WITH_RC4_128_SHA" 
    compressionMinSize="1024" scheme="https" secure="true" clientAuth="false" 
    keystoreFile="/path/to/.keystore" keystorePass="PASSWORD" URIEncoding="utf-8"/> 
    <Connector port="8011" protocol="AJP/1.3" redirectPort="8444" 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="server2"> 
    <Host name="www.domain.com" appBase="webapps" 
       unpackWARs="true" autoDeploy="true"> 

      <Alias>domain.com</Alias> 
    </Engine> 

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

Просто открыл новый элемент для добавления в web.xml как distributable. Это поможет? Попытка принимает 2 развертывания, поэтому я и подумал, что могу спросить.

+0

@stefan: добавлена ​​server.xml. Пожалуйста, посмотрите .. :-) –

+0

Да, вам нужен флаг «distributable» в web.xml, а также элемент кластера в server.xml. – Stefan

ответ

1

Можете вы изменить рабочий файл следующим образом?

worker.list=loadbalancer,jk-status 

worker.jk-status.type=status 
worker.jk-status.read_only=true 

worker.server1.port=8010 
worker.server1.host=localhost 
worker.server1.lbfactor=1 
worker.server1.type=ajp13 

worker.server2.port=8011 
worker.server2.host=localhost 
worker.server2.type=ajp13 
worker.server2.lbfactor=1 

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

JvmRoute установлен правильно, но я не могу найти кластера элемент в ваших Server.xml файлов (двигатель или на уровне хоста)?

<Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/> 

Вы можете отключить разъемы Ssl в Tomcats и включить его в вашем веб-сервере?

отображение должно выглядеть следующим образом:

JkMount /appName  loadbalancer 
JkMount /appName/* loadbalancer 

JkMount /jkStatus jk-status 

Проверьте http://example.com/jkstatus, чтобы увидеть его узлы нашли друг друга.

После того, как кластер создан и DeltaManager (распространение ваших сессий) работает, сессия Идентификаторы будет иметь имя узла в качестве суффикса: ANYSESSIONID.server1

+0

Что здесь представляет параметр appName? У меня есть jkmount/* loadbalancer. Это не режет? –

+0

Должен работать тоже, я думаю. – Stefan

+0

Обновление: после того, как я снова их перезапустил, теперь это работает. Я проверил с 4 коллегами.Я увижу снова сегодня, если есть какая-то проблема, если нет, я приму свой ответ. Спасибо .. :-) –

 Смежные вопросы

  • Нет связанных вопросов^_^