Кластеризация Liferay / EHCache

Я пытаюсь кластеризовать свой портал liferay 6.1.1 CE на двух серверах в Rackspace. Серверы - это Windows 2008 R2, облачные серверы нового поколения. Я упоминаю об этом, потому что для работы многоадресной рассылки мне нужно включить облачную сеть в стойке и подключить ее только к серверам следующего поколения.

Каждый сервер имеет три сетевых интерфейса: общедоступный, в стойке дата-центра, локальный частный (облачная сеть).

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

Конфигурация apache / tomcat для репликации сеанса работает нормально. Он также использует многоадресную рассылку.

Я включил следующие строки в файле свойств портала:

cluster.link.enabled = true

cluster.link.autodetect.address =: ---- Я добавил это, потому что похоже, что он пытается привязаться к общедоступному интерфейсу, если я не устанавливаю здесь локальный адрес ...

lucene.replicate.write = true

Еще одна вещь здесь заключается в том, что у нас есть эта точная настройка, отлично работающая в нашей среде песочницы. Единственное отличие в том, что песочница находится не в стойке, а здесь, в нашем офисе ...

Пожалуйста помоги!

Спасибо Вессель

Таким образом, многоадресная передача в стойке действительно работает, если у вас есть серверы следующего поколения с подключенной частной облачной сетью. Однако для того, чтобы эта кластеризация liferay работала, вы должны использовать jgroups вместо RMI.

Приведенные ниже строки - это то, что необходимо в файле свойств вашего портала, чтобы репликация кэша jgroups работала на серверах Windows в стойке. Репликация RMI по умолчанию не работает:

cluster.link.enabled = true

cluster.link.autodetect.address = [IP-адрес локальной сети]: [порт]

ehcache.bootstrap.cache.loader.factory = com.liferay.portal.cache.ehcache.JGroupsBootstrapCacheLoaderFactory

ehcache.cache.event.listener.factory = net.sf.ehcache.distribution.jgroups.JGroupsCacheReplicatorFactory

ehcache.cache.manager.peer.provider.factory = net.sf.ehcache.distribution.jgroups.JGroupsCacheManagerPeerProviderFactory

lucene.replicate.write = true

Также добавьте следующую строку в setenv.bat как часть параметров запуска JVM:

-Djgroups.bind_addr = [IP-адрес локальной сети]


person Wessel Oosthuizen    schedule 31.10.2013    source источник
comment
Я собираюсь запустить несколько серверов для тестирования.   -  person JRP    schedule 01.11.2013
comment
Вы их раскручиваете в Rackspace?   -  person Wessel Oosthuizen    schedule 01.11.2013
comment
да. Я работаю в Rackspace инженером службы поддержки разработчиков. В настоящее время я копирую вашу настройку Liferay. Подведем итог: оба ваших сервера находятся в одном центре обработки данных, верно? А IP-адрес, который вы установили для cluster.link.autodetect.address, принадлежит сети, которую вы создали и подключили к двум серверам?   -  person JRP    schedule 01.11.2013
comment
Да сэр. Оба находятся в центре обработки данных ORD. И да, адрес для локальной облачной сети   -  person Wessel Oosthuizen    schedule 01.11.2013
comment
Также следует отметить, что у меня также есть портлет внутри Liferay, который также использует EHCache с репликацией RMI с многоадресной рассылкой. Это то же самое, что и кеш Liferay, где он почему-то просто не реплицируется ...   -  person Wessel Oosthuizen    schedule 01.11.2013
comment
Привет, JRP, возможно, удалось добиться в этом прогресса? У меня также есть билет, открытый в стойке, который был передан сетевым инженерам, если вы хотите его посмотреть ...   -  person Wessel Oosthuizen    schedule 02.11.2013
comment
Я все еще над этим работаю. Есть довольно много специфических для предметной области знаний, которые я пытаюсь изучить, чтобы убедиться, что все настроено правильно. Я буду работать над этим до конца дня (и завтра, если потребуется). Я также просмотрел ваш тикет в Rackspace и отслеживаю его на предмет каких-либо изменений.   -  person JRP    schedule 03.11.2013
comment
Привет, JRP, тебе повезло с этим?   -  person Wessel Oosthuizen    schedule 04.11.2013
comment
Мне удалось создать кластер из 3 серверов Ubuntu и запустить репликацию ehcache. Я создал облачную сеть, аналогичную вашей, и использовал сетевой IP-адрес сервера с моим экземпляром MySQL в качестве параметра cluster.link.autodetect.address (а именно, cluster.link.autodetect.address = 192.168.3.3: 22). Итак, я могу подтвердить, что многоадресная рассылка работает. Можете ли вы подтвердить, что многоадресные пакеты достигают ваших серверов? Кроме того, каков ваш путь установки tomcat?   -  person JRP    schedule 04.11.2013
comment
Не уверен, связана ли разница с Ubuntu и Windows, так как у меня есть серверы Windows. Я изменил свой путь установки tomcat, чтобы не было пробелов, и я предполагаю, что это то, к чему относится ваш вопрос, но это не сработало. Однако если вы настроите репликацию с помощью JGroups, она действительно сработает, что я только что понял несколько минут назад. Конфигурация репликации RMI по умолчанию, похоже, не работает в Rackspace на серверах Windows, но JGroups работает ....   -  person Wessel Oosthuizen    schedule 04.11.2013
comment
Знаете ли вы, какая разница в функциональности между RMI и JGroups может быть причиной этого?   -  person Wessel Oosthuizen    schedule 04.11.2013
comment
Вы правы. Это может быть проблема Windows или Linux. Для начала я просто пытался выяснить, была ли это проблема с многоадресной рассылкой Cloud Networks или нет, но, похоже, это не так. Я недостаточно знаю о RMI или JGroups, чтобы говорить об их различиях, но похоже, что версия для Linux по умолчанию использует JGroups. Вот 3 соответствующие строки из моего файла журнала: [Автоматическое определение исходящего IP-адреса и интерфейса JGroups для 192.168.3.3:22], [Установка исходящего IP-адреса JGroups на 192.168.3.4 и интерфейса на eth2], [Принятый вид (liferay1-24795) (liferay1-24795, liferay3-21205, liferay2-7240)]   -  person JRP    schedule 04.11.2013
comment
После краткого поиска похоже, что RMI использует tcp (тогда как JGroups использует UDP). javacodegeeks.com/2012/06/   -  person JRP    schedule 04.11.2013


Ответы (1)


Если вы специально не «познакомите» узлы друг с другом, они будут пытаться обнаружить друг друга посредством многоадресной рассылки. Я уверен, что Rackspace не маршрутизирует многоадресные запросы. Взгляните на конфигурацию JGroups, где вы можете настроить обмен данными между машинами кластера через одноадресную рассылку, и она должна работать при правильном подключении (сначала попробуйте выполнить ping)

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

person Olaf Kock    schedule 31.10.2013
comment
Спасибо Олаф. На самом деле Rackspace утверждает, что многоадресная рассылка должна работать с облачной сетью. По сути, он создает программную сеть уровня 2, изолированную от других сетей. Они реализовали это, помимо прочего, для целей многоадресной рассылки. Любые мысли о том, почему репликация сеанса tomcat отлично работает с многоадресной рассылкой, но не с репликацией кеша liferay? - person Wessel Oosthuizen; 01.11.2013
comment
В ответ я вижу низко висящий фрукт, который почти всегда решает проблему. Если в вашем случае это не поможет, провести дистанционную диагностику будет сложно. Вы ведь установили адрес автоопределения clusterlink, верно? (потому что в ваших настройках выше он пуст). Также проверьте, что содержит файл журнала - он должен дать вам подсказки, если что-то обнаружит. - person Olaf Kock; 01.11.2013
comment
Да, сэр, я установил этот адрес как местный. Извините, я оставил поле пустым. Я установил следующую запись в файл log4j.properties. - person Wessel Oosthuizen; 01.11.2013
comment
log4j.logger.net.sf.ehcache = ИНФОРМАЦИЯ log4j.logger.net.sf.ehcache.config = ОТЛАДКА log4j.logger.net.sf.ehcache.distribution = ОТЛАДКА - person Wessel Oosthuizen; 01.11.2013
comment
Это создает огромное количество журналов, и их трудно отфильтровать. Но из того, что я вижу, похоже, что многоадресная передача осуществляется. Но все равно кеши не реплицируются ... - person Wessel Oosthuizen; 01.11.2013
comment
Я наконец попробовал JGroups, и, похоже, это сработало. Репликация RMI по умолчанию не работает на серверах Windows в стойке. Следующие элементы - это то, что требуется в файле свойств портала для включения jgroups: - person Wessel Oosthuizen; 04.11.2013
comment
На самом деле я обновлю свой исходный вопрос с конфигурацией jgroups - person Wessel Oosthuizen; 04.11.2013