Конфигурация кластеризации Tomcat

#tomcat #tomcat7 #replication #session-replication

#tomcat #tomcat7 #репликация #сеанс-репликация

Вопрос:

Я настраиваю Liferay на Tomcat 7 для кластеризации. Я искал в Интернете и нашел несколько инструкций. Чтение всех из них вызвало у меня некоторые вопросы. Я был бы признателен, если кто-нибудь мне поможет.

A. Я знаю, что, вставив следующую строку в server.xml в «${CATALINA_HOME}/conf» он настраивает Tomcat со значениями по умолчанию, как описано в документации Tomcat (ссылка):

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

Вот некоторые из важных значений по умолчанию:

1- Адрес многоадресной рассылки равен 228.0.0.4
2- Порт многоадресной рассылки равен 45564 (порт и адрес вместе определяют принадлежность к кластеру.
3- Транслируемый IP-адрес равен java.net .InetAddress.getLocalHost().getHostAddress() (убедитесь, что вы не передаете 127.0.0.1, это распространенная ошибка)
4- Порт TCP, прослушивающий сообщения репликации, является первым доступным серверным сокетом в диапазоне 4000-4100
5- Настроены два прослушивателя ClusterSessionListener
6- Настроены два перехватчика TcpFailureDetector и MessageDispatch15Interceptor

Поскольку моя кластерная среда невелика (два экземпляра Tomcat), я думаю, что конфигурации по умолчанию были бы достаточно хорошими.

Q#A. Я хотел бы знать, что именно означает пункт # 3. Как я могу допустить эту ошибку?

B. Исходя из вышесказанного, конфигурация по умолчанию использует динамическую кластеризацию на IP-адресе 228.0.0.4. Я предполагаю, что это широковещательный адрес (поправьте меня, если я ошибаюсь). Если это так, в этой ссылке говорится:

В среде Linux большая часть системного ядра способна обрабатывать адреса групповой рассылки. но нам нужно добавить запись маршрута в таблицу маршрутизации ядра.

 sudo route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0
  

Вопрос #B. Что это значит? Как я могу узнать, следует ли мне это или нет?

C. В качестве следующего шага для кластеризации мне нужно добавить элемент «<распространяемый />» в мой web.xml файл веб-приложения. Там один web.xml для каждого веб-приложения в папке «${CATALINA_HOME}/webapps» на сервере. Я понимаю, что все они должны иметь этот элемент для включения в репликацию сеанса (поправьте меня, если я ошибаюсь).

Вопрос#C1. Я нашел другой «web.xml » файл с «liferay-» в качестве префикса для каждого веб-приложения. Следует ли их рассматривать как другой web.xml и есть ли этот элемент?

Вопрос#C2. Есть ли какой-либо способ добавить элемент «<распространяемый />» в одном месте и применить его ко всем веб-приложениям? Какой-то родительский / глобальный «web.xml «файл?

D. В некоторых инструкциях говорится, что атрибут «distributable=’true'» должен быть добавлен к элементу «<Context>» в «${CATALINA_HOME}/conf/context.xml «файл. И некоторые не инструктируют об этом.

Вопрос #D. Является ли эта конфигурация обязательной? Каковы последствия наличия этого атрибута и его отсутствия?

Заранее спасибо.

Ответ №1:

A.) IP-адрес, передаваемый на плате, является IP-адресом узлов кластера, а не адресом групповой рассылки. Пакеты udp будут содержать этот ip, чтобы сообщить получателю, который отправил этот пакет; ip отправителей. Если было установлено значение localhost/127.0.0.1, получатели не смогут позвонить отправителю, потому что они будут звонить сами.

B.) Мне никогда не приходилось добавлять такой маршрут. Извините, не могу сказать. Я бы попробовал без этого.

C.) Флаг распространяемого нужен только «основному» приложению Liferay, поскольку оно будет обрабатывать сеанс.

D.) Добавление флага в web.xml делает то же самое. В элементе context вы можете перезаписать это свойство для определенного сервера. Если флаг установлен, приложение будет участвовать в репликации сеанса, т.Е. если для флага sticky session в балансировщике установлено значение false, клиенты будут перенаправляться непрерывно, создавая новые сеансы на каждом узле. Если задано, они тоже будут перенаправлены, но сохранят свой первый сеанс.