Я работаю над приложением Spring-MVC, которое развернуто на двух экземплярах Tomcat. Балансировка нагрузки и аварийное переключение выполняются экземпляром Apache впереди с использованием mod_jk
. Сейчас все работает хорошо, кроме нашей технологии PUSH.
Используемая нами технология PUSH основана на Cometd (спецификации API Bayeux), и если я вхожу в систему, то я вхожу на один сервер, но я не вижу пользователей, которые вошли на второй сервер онлайн. Я уже использую sticky sessions
. Я думал, что они несут ответственность за управление этим.
Конфигурация апача:
рабочие.свойства:
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 имеет только одно изменение, то есть jvmRoute. Если надо, могу добавить. Пожалуйста, дайте мне знать, почему это может происходить и как это исправить. Большое спасибо. :-)
Сервер TomcatFirst.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>
Сервер TomcatSecond.xml:
<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 как распространяемый. Поможет ли это? Для опробования требуется 2 развертывания, поэтому я подумал, что могу спросить.