Stiamo passando da un'impostazione di 1 server Web a un'installazione di due server Web e devo iniziare a condividere sessioni PHP tra le due macchine con bilanciamento del carico. Abbiamo già installato memcached ( e avviato ) e quindi sono stato piacevolmente sorpreso di poter realizzare sessioni di condivisione tra i nuovi server modificando solo 3 righe nel php.ini
file ( session.save_handler e session.save_path ):
Ho sostituito:
session.save_handler = files
con:
session.save_handler = memcache
Quindi sul server web principale ho impostato il session.save_path
puntare a localhost:
session.save_path="tcp://localhost:11211"
e sul server web slave ho impostato il session.save_path
puntamento al master:
session.save_path="tcp://192.168.0.1:11211"
Lavoro fatto, l'ho provato e funziona. Ma...
Ovviamente l'uso di memcache significa che le sessioni sono nella RAM e andranno perse se una macchina viene riavviata o il daemon memcache si arresta in modo anomalo - Sono un po 'preoccupato per questo, ma sono un po' più preoccupato per il traffico di rete tra i due server web (soprattutto come scaliamo) perché ogni volta che qualcuno è bilanciato in base al carico sul server web slave, le loro sessioni verranno recuperate attraverso la rete dal server web principale. Mi chiedevo se potevo definirne due in save_paths
modo che le macchine guardassero nella propria memoria di sessione prima di usare la rete. Per esempio:
Maestro:
session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211"
Schiavo:
session.save_path="tcp://localhost:11211, tcp://192.168.0.1:11211"
Condividerebbe con successo le sessioni tra i server e aiuterebbe le prestazioni? vale a dire risparmiare il traffico di rete il 50% delle volte. O questa tecnica è solo per i failover (ad es. Quando un demone memcache non è raggiungibile)?
Nota : non sto davvero chiedendo in particolare la replica di memcache - più se il client memcache di PHP può raggiungere il picco all'interno di ciascun demone memcache in un pool, restituire una sessione se ne trova una e creare una nuova sessione solo se non ne trova una in tutti i negozi. Mentre scrivo, sto pensando di chiedere un po 'di più a PHP, lol ...
Supponiamo : nessuna sessione appiccicosa, bilanciamento del carico round robin, server LAMP.