Nous passons d'une configuration à un serveur Web à une configuration à deux serveurs Web et je dois commencer à partager des sessions PHP entre les deux machines à charge équilibrée. Nous avons déjà installé ( et commencé ) memcached et j'ai donc été agréablement surpris de pouvoir partager des sessions entre les nouveaux serveurs en changeant seulement 3 lignes dans le fichier ( session.save_handler et session.save_path ):php.ini
J'ai remplacé:
session.save_handler = files
avec:
session.save_handler = memcache
Ensuite, sur le serveur Web principal, j'ai défini le session.save_path
pointeur sur localhost:
session.save_path="tcp://localhost:11211"
et sur le serveur Web esclave, je mets le session.save_path
pointeur vers le maître:
session.save_path="tcp://192.168.0.1:11211"
Travail fait, je l'ai testé et ça marche. Mais...
Évidemment, utiliser memcache signifie que les sessions sont en RAM et seront perdues si une machine est redémarrée ou si le démon memcache se bloque - cela m'inquiète un peu, mais je suis un peu plus inquiet pour le trafic réseau entre les deux serveurs Web (surtout que nous évoluons) car chaque fois que quelqu'un est équilibré en charge sur le serveur Web esclave, ses sessions sont récupérées sur le réseau depuis le serveur Web maître. Je me demandais si je pouvais en définir deux save_paths
pour que les machines regardent dans leur propre stockage de session avant d'utiliser le réseau. Par exemple:
Maîtriser:
session.save_path="tcp://localhost:11211, tcp://192.168.0.2:11211"
Esclave:
session.save_path="tcp://localhost:11211, tcp://192.168.0.1:11211"
Est-ce que cela partagerait avec succès des sessions sur les serveurs ET aiderait les performances? c'est à dire économiser du trafic réseau 50% du temps. Ou cette technique est-elle uniquement destinée aux basculements (par exemple, lorsqu'un démon memcache est inaccessible)?
Remarque : je ne pose pas vraiment de question sur la réplication de memcache - plus sur si le client PHP memcache peut atteindre son pic à l'intérieur de chaque démon memcache dans un pool, retourner une session s'il en trouve une et créer seulement une nouvelle session s'il n'en trouve pas une dans tous les magasins. Alors que j'écris ceci, je pense que je demande un peu trop à PHP, lol ...
Supposons : pas de sessions persistantes, équilibrage de charge à tour de rôle, serveurs LAMP.