Na platformie UniCloud bardzo łatwo zmienia się zasoby środowiska poprzez automatyczne skalowanie pionowe (zmiana ilości RAM i CPU). Można też skonfigurować automatyczne skalowanie poziome (kolejne serwery o takiej samej zawartości). To drugie rozwiązanie – w przypadku niektórych aplikacji (WordPress, Drupal, Jumla,Liferay, Redmine itd.) może wymagać dodatkowej synchronizacji. Na przykład WordPress – oprócz danych przechowywanych w bazie danych – zapisuje również pliki na lokalnym serwerze. Standardowo pliki te nie zostaną skopiowane na inne węzły i po jakimś czasie okaże się, że zamiast kilku identycznych węzłów mamy węzły z zupełnie inną zawartością lokalnych plików. Rozwiązaniem problemu jest synchronizacja plików pomiędzy wszystkimi węzłami klastra. W tym artykule opiszemy jak zbudować klaster WordPress, w którym lokalne pliki będą synchronizowane pomiędzy wszystkimi serwerami.

Zaczynamy od instalacji WordPressa. Można to zrobić wybierając WordPress z Listy gotowych aplikacji albo ręcznie. Ten drugi sposób pozwoli na instalację najaktualniejszej wersji WordPressa. Tworzymy najpierw środowisko składające się z jednego serwera Apache, jednego serwera MySQL i opcjonalnie serwera Memcached:
wpcluster1

Memcached nie jest tu niezbędny ale jego zastosowanie ma dwie duże zalety – przyspiesza on odpowiedzi serwera WWW oraz zapewnia podtrzymanie sesji w przypadku niedostępności któregoś z węzłów Apache.

Jeżeli zdecydowaliśmy się na zastosowanie serwera Memcached (możemy go dodać w dowolnym momencie, równiez po uruchomieniu WordPressa) to musimy jeszcze włączyć odpowiednie opcje na serwerze Apache w pliku php.ini. W tym celu musimy najpierw zanotować otrzymany adres serwera Memcached:

wpcluster5

A następnie wybieramy przycisk „konfiguruj” przy serwerze Apache:
wpcluster4

Odszukujemy plik php.ini, wpisujemy adres IP serwera Memcached (pozostawiamy port 11211) i usuwamy znaki komentarza (średniki) na początku trzech zaznaczonych linii:

wpcluster6

Zapisujemy zmiany po czym restartujemy węzeł Apache.

Memcached już mamy, teraz skonfigurujemy bazę. Uruchamiamy phpMyAdmin:

wpcluster8

Wpisujemy użytkownika i hasło jakie dostaliśmy mailem i tworzymy nową bazę danych:
wpcluster9Zaznaczony link do serwera MySQL, nazwa bazy danych oraz identyfikator i hasło będą nam jeszcze potrzebne przy konfigurowaniu WordPressa. 

Kolejny krok – instalacja WordPressa. Za pomocą Menedżera wysyłania wskazujemy lokalny plik instalacyjny lub wklejamy link do pliku instalacyjnego ze strony wordpress.org:

wpcluster2

I instalujemy w naszym środowisku:

wpcluster3

Po chwili WordPress będzie zainstalowany – czas na konfigurację. Uruchamiamy nasze środowisko:

wpcluster7

Podajemy nazwę bazy danych, użytkownika serwera baz danych, jego hasło oraz adres serwera (koniecznie bez „https://”):

wpcluster10

 

I uruchamiamy instalację. Po chwili nasz WordPress jest gotowy do pracy ale ciągle jest to tylko jeden serwer. Teraz błyskawicznie dodamy drugi węzeł (a nawet kolejne, jeżeli jest taka potrzeba):

klaster

Mamy już dwa serwery WordPressa. Przy dodaniu drugiego węzła automatycznie dodawany jest również węzeł Nginx, który pełni rolę load balancera.
UWAGA:Ten element środowiska jest niezbędny, ponieważ bez niego cały ruch zawsze będzie kierowany tylko do pierwszego węzła WordPress. Nie wymaga on konfiguracji – działa natychmiast po utworzeniu.

Teraz uruchomimy synchronizację plików z folderu „wp-content”. Przeciągnij poniższy poniższy link do paska zakładek swojej przeglądarki.

Synchronizacja

Następnie przejdź do swojego panelu na app.unicloud.pl i naciśnij zapisaną wcześniej zakładkę. Spowoduje to uruchomienie skryptu do konfiguracji synchronizacji. Wskaż odpowiednie środowisko i synchronizowany folder:

synchro

 

UWAGA: Po każdej modyfikacji topologii środowiska w górę (dodaniu kolejnego węzła WordPress) koniecznie trzeba ponownie uruchomić skrypt „Synchronizacja” i ponownie wskazać folder zawierający dane do synchronizacji. W przeciwnym wypadku pliki na nowym węźle nie będą synchronizowane z pozostałymi węzłami.

Po uruchomieniu synchronizacji tworzony jest dodatkowy katalog lsyncd. Działanie synchronizacji można sprawdzić przez proste dodanie obrazka do biblioteki mediów WordPressa – powoduje ono zapisanie pliku na jednym węźle i natychmaistową synchronizację z pozostałymi węzłami WordPressa. W efekcie mamy identyczną zawartość na wszystkich węzłach:

wpcluster16
Dla innych aplikacji synchronizacji wymagają foldery:

Drupal: webroot/ROOT/sites
Joomla: webroot/ROOT/images
Liferay: webroot/home/liferay/data

 

Więcej informacji o synchronizacji folderów znajdziesz w dokumentacji Jelastic:

button-jelastic