在多服务器环境中以高可用性/高性能方式存储会话的最佳方式

我有一个具有抽象会话存储层的应用程序(Magento)。 我试图想象存储会话的最佳方式。

mysql数据库? 我想一个非常大的innodb_buffer_pool_size的专用数据库,所以它基本上像磁盘备份的RAMcaching。 我正在考虑为会话分配一个单独的数据库,并把其他数据库的东西放在一个单独的数据库/数据库服务器上。

内存caching? 这是伟大的,但我有点担心如果服务器崩溃会发生什么? 我会失去与崩溃的会话分区,因为从我所了解的Memcache不distrubuted。 我可以使它distrubuted? (我刚才告诉我可以使用pecl memcache module> = 3

tmpfs内存文件存储? 这工作,但我将不得不同步写入会话与所有其他服务器使用rsync或东西,检测到在该文件夹中发生写入。 我确信这个东西已经存在了。

其他解决scheme,我没有想到? 会喜欢想法。

谢谢!

内存caching? 这是伟大的,但我有点担心如果服务器崩溃会发生什么? 我会失去与崩溃的会话分区,因为从我所了解的Memcache不distrubuted。 我可以使它distrubuted? (我刚才告诉我可以使用pecl memcache module> = 3

我正在使用repcached 。 它开始如下:

  • 在服务器1上:

    memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached.pid -x <server2_ip>

  • 在服务器2上:

    memcached -d -p 11211 -u memcached -m 64 -c 1024 -P /var/run/memcached.pid -x <server1_ip>

PHP Memcache扩展的configuration:

 extension=memcache.so memcache.allow_failover = 1 memcache.redundancy = 1 memcache.session_redundancy=2 memcache.hash_strategy = consistent 

php.ini的会话处理程序:

 session.save_handler = memcache session.save_path="tcp://ip1:11211, tcp://ip2:11211"