使用Redis Cluster作为会话处理程序时,它是否可能具有高可用性?

时间:2015-06-19 16:30:50

标签: php session redis

我们正在尝试使用Redis Cluster来存储会话数据,使用最新版本的phpredis,2.2.5,从github存储库下载到2015年的19 Juin,将redis配置为php.ini configuraiton文件中的会话处理程序。

我们有6个实例,3个作为主服务器,3个作为从服务器,我们测试了存储和读取会话数据的工作原理。

但是,如果我们关闭任何主程序,我们的应用程序会显示以下错误:

Fatal error: Uncaught exception 'RedisException' with message 'Connection closed' in /users/ets01/lib/php/DEIN/class.PSASession.php:64 Stack trace: #0 /users/ets01/lib/php/DEIN/class.PSASession.php(64): session_start() #1 /users/ets01/lib/php/DEIN/class.PSAPage.php(102): PSASession->__construct() #2 /users/ets01/web/inc/class.APP2Page.php(11): PSAPage->__construct('b', 11) #3 /users/ets01/web/html/index.php(11): APP2Page->__construct() #4 {main} thrown in /users/ets01/lib/php/DEIN/class.PSASession.php on line 64

Fatal error: Uncaught exception 'RedisException' with message 'Connection closed' in [no active file]:0 Stack trace: #0 {main} thrown in [no active file] on line 0

连接已关闭,群集无法正常运行,我们希望将该连接重做到另一个实例。

phpredis驱动程序是否管理与群集的连接?它是否自动提供从另一个集群实例获取值的机会?

1 个答案:

答案 0 :(得分:0)

我们解决了这些问题: - )

在创建群集时,我们必须使用服务器IP而不是127.0.0.1

redis-trib.rb create --replicas 1 10.68.10.201:7001 10.68.10.201:7002 10.68.10.201:7003 10.68.10.201:7004 10.68.10.201:7005 10.68.10.201:7006

现在,从PHP脚本设置和获取集群中的值是有效的。

另外,对于使用它作为会话处理程序,我们必须使用5.6版本,对于以前的版本,我们有一个“分段错误”错误。