2016-06-03 27 views
7

Projekt, nad którym pracuję, jest oparty na wielu serwerach, które korzystają z systemu równoważenia obciążenia. Problem polega na tym, że nie mogę utrzymywać sesji PHP na wszystkich serwerach. Jaki jest najlepszy sposób zarządzania sesją za pomocą Load Balancera ...?Jak utrzymać sesję przez load balancer?

Odpowiedz

9

Potrafię myśleć o tych dwóch metodach w tym celu.

  1. Użyj klastrowego serwera aplikacji WWW, gdzie sesja są dostępne dla wszystkich serwerów
  2. informacja poziom
  3. Zastosowanie IP, aby utrzymać powinowactwo między użytkownikiem a serwerem
+0

Dzięki muzammil, jej pomocne, .. Myślę, że możemy również udostępniać informacje sesji użytkownika w bazie danych lub systemie plików na serwerach aplikacji. –

+0

miło mi pomóc :) –

0

Dig drogę do przechowywania sesji wewnątrz DB, który utrzymuje wszystkie twoje serwery. Serwery zawsze mają ten sam numer _PHPSESSID, ponieważ zostały zapisane jako pliki cookie domeny.

Więc jeśli znasz identyfikator sesji - wiesz, na co zapytać z DB obsługującego sesje.

6

Działający SSL & Load Balancer, często umieszcza się SSL na serwerze równoważenia obciążenia, ale nie na serwerach zaplecza. Potrzebujesz tylko jednego certyfikatu na jednym serwerze. Moduł równoważący obciążenia następnie komunikuje się z serwerami zaplecza za pomocą zwykłego protokołu HTTP. To oczywiście wymaga, aby serwery zaplecza nie były bezpośrednio dostępne z Internetu. Ten moduł równoważenia obciążenia jest odpowiedzialny za odszyfrowanie żądania, będzie również mógł sprawdzić żądanie jsessionid.

+0

Co łączy się z tym pytaniem? Jak to się stało, że 4 przegrywają? – ceejayoz

+0

Lepkie sesje działają dobrze z "Apache" jako load balancer. Powinieneś sprawdzić "mod_proxy" Apache i "mod_proxy_balancer". –

+0

To świetnie, ale twoja odpowiedź nie mówi nic o lepkich sesjach. – ceejayoz

Powiązane problemy