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:
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:
A następnie wybieramy przycisk „konfiguruj” przy serwerze Apache:
Odszukujemy plik php.ini, wpisujemy adres IP serwera Memcached (pozostawiamy port 11211) i usuwamy znaki komentarza (średniki) na początku trzech zaznaczonych linii:
Zapisujemy zmiany po czym restartujemy węzeł Apache.
Memcached już mamy, teraz skonfigurujemy bazę. Uruchamiamy phpMyAdmin:
Wpisujemy użytkownika i hasło jakie dostaliśmy mailem i tworzymy nową bazę danych:
Zaznaczony 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:
I instalujemy w naszym środowisku:
Po chwili WordPress będzie zainstalowany – czas na konfigurację. Uruchamiamy nasze środowisko:
Podajemy nazwę bazy danych, użytkownika serwera baz danych, jego hasło oraz adres serwera (koniecznie bez „https://”):
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):
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:
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:
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: