Konfiguracja węzłów Liferay w architekturze klastra umożliwia zrealizowanie wymagań dla wysokiej dostępności (HA – High Availability) jak również równoważenia obciążenia (LB – Load Balancing) serwerów Portalu Liferay. Poniżej wskazane zostały elementy, które należy zapewnić i skonfigurować bezpośrednio w ekosystemie Portalu Liferay dla uzyskania konfiguracji wielowęzłowego klastra. Ze względu na mnogość rozwiązań zarówno sprzętowych jak i programowych dla równoważenia ruchu, elementy te nie zostały uwzględnione w podstawowej konfiguracji klastra węzłów Liferay.
Minimalne wymagania jakie musi spełniać konfiguracja klastra serwerów Liferay:
- Wszystkie węzły muszą wskazywać na tę samą bazę danych lub klaster bazy danych.
- Repozytoria Documents and Media muszą być skonfigurowane tak samo oraz być osiągalne ze wszystkich węzłów Liferay znajdujących się w klastrze.
- Silnik wyszukiwania i indeksowania powinien być postawiony w osobnym środowisku, które opcjonalnie może być również sklastrowane. Instalację i konfigurację silnika indeksującego ElasticSearch należy przeprowadzić zgodnie z wytycznymi Elasticsearch.
- Cluster Link musi być włączony, tak aby możliwa była replikacja cache pomiędzy wszystkimi węzłami.
- Hot deploy aplikacji musi zostać wykonany osobno dla każdego węzła.
Krok 1: Należy zbudować z kodów źródłowych portal Liferay 7 CE z obsługą klastrowania.
Krok 2: Konfiguracja ElasticSearch
Należy skonfigurować po stronie portalu wskazanie na skonfigurowany i działający silnik indeksowania (ElasticSearch).
Krok 3: Konfiguracja klastra Portalu Liferay
Po zrealizowaniu opisanych kroków, można rozpocząć konfigurację Liferay’a. W tym celu:
1. Dla każdego z węzłów należy zdefiniować połączenie do wspólnej bazy danych Portalu Liferay. W tym celu należy dodać następujące parametry w pliku portal-ext.properties:
jdbc.default.driverClassName=nazwa_sterownika
jdbc.default.url=adres_bazy
jdbc.default.username=login
jdbc.default.password=haslo
2. Dla każdego z węzłów należy uruchomić replikację cache pomiędzy węzłami. W tym celu należy dodać następujący parametr w pliku portal-ext.properties:
cluster.link.enabled=true
3. Dla każdego z node’ów należy skonfigurować miejsce przechowywania repozytorium Documents and Media. Konfiguracja musi być taka sama dla każdego z węzłów. W naszym przypadku, jako repozytorium posłużyła baza danych. W tym celu należy dodać następując parametr w pliku portal-ext.properties:
dl.store.impl=com.liferay.portal.store.db.DBStore
4. Uruchomić Liferay’a i zalogować się na konto administratora.
5. Wejść w Control Panel → Configuration → System Settings → Foundation → Elasticsearch
6. Ustaw następujące parametry i zapisz zmiany
- Cluster name: zgodny z tym co zostało podane w pliku elasticsearch.yml
- Operation mode: REMOTE
- Transport addresses: adres, na którym nasłuchuje Elasticsearch (domyślnie localhost:9300, ale zmienić localhost na adres podany jako wartość parametru network.host w pliku elasticsearch.yml).
Jeżeli Elasticsearch działa w klastrze, należy podać adres każdego node’a (należy skorzystać z ikonki + znajdującej się po prawej stronie wypełnianego pola).
7. Wejść w Control Panel → Configuration → Server Administration i wywołać akcję Reindex all search indexes.
Krok 4: Hot Deploy
Ze względu na wykorzystanie OSGi nie powinno się polegać na dystrybucji artefaktów przez serwer aplikacyjny. Należy wykorzystać (np. napisać własny skrypt), który prześle, przy użyciu np. sftp, aplikacje na każdy z węzłów w danym klastrze, do folderu deploy.
Skrypt należy umieścić na serwerze w następującej strukturze katalogów:
- apache-tomcat
- cluster_deploy
- deploy
- deploy2all.sh
W folderze cluster_deploy/deploy należy umieścić aplikacje, które mają zostać wgrane na Portal Liferay a następnie należy wykonać z poziomu konsoli ww. skrypt.
W przypadku udanego przesłania pliku zostanie on usunięty z folderu deploy. Jeżeli przesłanie jakiegoś pliku się nie powiedzie zostanie wyświetlony komunikat o tym, a plik nie zostanie usunięty.