简体   繁体   中英

Load balancing and session management in yii

How can i manage sessions between 2 or more web servers are using to manage Load balancing ?

The points that i found are

  1. Use database session CDbHttpSession
  2. Use cache session CCacheHttpSession
  3. Use Security manager CSecurityManager

As Yii project Lead Qiang said , There is only one thing you need to be careful, that is the validationKey of CSecurityManager. By default, this key is automatically/randomly generated the first time and is stored under runtime directory. In multiple server environment, you should explicitly configure this property so that all servers share the same key. This key is used widely to generate hash keys for various security-related measures.

You have a couple of options:

1) If your load balancer supports it, you can enable session persistence so that the user always is sent to the same server as the one they originally hit. The benefit of this is that it's easy to setup if you don't want to change any code. The downside is that if one of your servers goes down you lose all your sessions on that node.

2) Setup a shared memcache (not memcached) session between node1 and node2. The relevant settings being.

php.ini

session.save_handler memcache
session.save_path tcp://<ip1>, tcp://<ip2>
memcache.ini

memcache.allow_failover 1
memcache.default_port   11211
memcache.hash_strategy  standard
memcache.max_failover_attempts  20

It's a little tricky to setup, but once you get it working you have full redundancy between both servers if one were to go down.

3) Setup a third node to manage sessions and configure php session.save_path to be that server's ip. The benefit of this is that sessions are now managed by a third server. The downside being you lose redundancy, if that server goes down you lose sessions.

this is the best answer that i got . But I cant Use APC !!

Is there any other methods ?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM