Блоги

Вся правда о кластеризации в Liferay 7 CE
Вся правда о кластеризации в Liferay 7 CE

Сегодня мы поговорим про кластеризацию Liferay 7 CE - причем про самый интересный и сложный аспект - синхронизацию кешей и scheduler job-ов).  Остальные моменты либо не менялись совсем (типа общей базы данных или общего репозитория файлов), либо решаются относительно легко (как например использование внешнего ElasticSearch).

Итак, как мы помним, изначально в Liferay 7 CE поддержку кластеризации (именно кеша и execution job-ов) убрали. Мол если вам нужен кластер - то используйте Liferay DXP. Потом в Liferay одумались - и сказали что вернут кластеризацию - и в Liferay 7.0.4 GA5 сообщили что они ее вернули. Если погуглить на тему "Liferay 7 Clustering" то мы получим страницу с официальной документацией, где четко говорится (переводя на русский) -

"Кластеризация в Liferay CE доступна начиная с версии GA5".

Ура! У меня наконец дошли руки проверить что и как, и могу сказать что "не все так однозначно...".

Если верить документации - то для синхронизации кешей вам достаточно прописать 1 строчку в portal-ext.properties ( включить cluster link) - и вуаля - все начнет синхронизироваться. Но если вы скачаете Liferay 7.0.4 GA5, запустите две ноды (например на одной машине, разнеся их по портам), сделаете все остальные приседания (общий репозиторий файлов, общая база данный, общий Elastic Search) и включите cluster link - то вы обнаружите что все работает - но кеши между нодами не синхронизируются...

Почему?

Более глубокое исследование открыло "очевидную" вещь:

"Доступна" не значит "Включена в дистрибутив"

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

  • Взять исходники Liferay из github
  • Собрать их
  • Собрать дополнительные три модуля, которые собственно реализуют кластеризацию
  • Убрать модули "без кластеризации"
  • Положить модули с кластеризацией

И все - у вас Liferay 7 CE с поддержкой кластеризации - как и было обещано.

В целом проверил - все почти так (ну ессно требуется еще поработать напильником) - но в целом - несколько часов - и действительно кеши в между нодами портала начинают синхронизироваться.

В целом решение Liferay хоть и немного странное - но вполне объяснимое. Они обещали сообществу вернуть кластеризацию - они ее вернули. Для сообщества. То есть для тех, у кого есть голова, руки, а в руках напильник. Конечным пользователям по прежнему рекомендуется брать Liferay DXP где это все есть "из коробки".

Кластеризация: RMI против JGroups

Если у вас все-таки нашлась голова, руки и напильник, и вы смогли настроить себе кластеризацию в Liferay 7 CE - вам может быть интересно и вот это обсуждение. Тут обсуждается что кроме "штатной" кластеризации, основанной на RMI, есть и более продвинутая - основанная на JGroups.

Как это работает - еще не проверял - постараюсь проверить в ближайшее время и отписаться тут.

 

13.12.2017