私はphpredis(https://github.com/phpredis/phpredisから25.02.2016で構築)をphp 5.5.9で使用しています。拡張機能は、単一の redis インスタンス (バージョン 3.0.7) (リモートおよびローカルの redis インスタンス) で正常にテストされています。
これは、構成済みの redis クラスターに接続するためのコードです (センチネルなし、構成のみ)。
$cluster = new \RedisCluster(NULL,
array("192.168.127.203:7000", "192.168.127.203:7001", "192.168.127.203:7002"));
$cluster->setOption(RedisCluster::OPT_SLAVE_FAILOVER, RedisCluster::FAILOVER_ERROR);
var_dump($cluster->_masters());
var_dump($cluster->get('foo1'));
このコードを redis インスタンスと同じサーバーで実行すると、すべてのマスターと foo1 の値が正常に取得されます。しかし、別の Web サーバーでコードを実行すると、クラスターから次のマスターが取得されます。
array (size=3)
0 =>
array (size=2)
0 => string '127.0.0.1' (length=9)
1 => int 7005
1 =>
array (size=2)
0 => string '127.0.0.1' (length=9)
1 => int 7000
2 =>
array (size=2)
0 => string '127.0.0.1' (length=9)
1 => int 7001
値の取得は RedisClusterException で失敗し、「クラスター内のどのノードとも通信できません」というメッセージが表示されます。
それがライブラリのバグなのか、それともライブラリを間違った方法で使用しているのかはわかりません。コードはドキュメントと同じです。1 つの問題は、リモート IP ではなくローカルホスト IP でマスターを取得することだと思います。
あなたの助けに感謝します。