RedisClusterException с phpredis при подключении к кластеру Redis, который не является локальным

Я использую phpredis (построен 25.02.2016 с сайта https://github.com/phpredis/phpredis. ) с 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. Но когда мы выполняем код на другом веб-сервере, мы получаем из кластера следующие мастера:

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 с сообщением «Не удается связаться ни с одним узлом в кластере».

Я не уверен, ошибка ли это в библиотеке или я неправильно использую библиотеку. код такой же, как в документации. Я думаю, что одна проблема заключается в том, что мы получаем мастеров с локальным IP-адресом, а не с удаленным IP-адресом.

ценю всю вашу помощь.


person Community    schedule 24.02.2016    source источник


Ответы (1)


наконец-то узнал, в чем проблема. в клиентской библиотеке ничего нет, просто ошибка в конфигурации кластера.

для создания был использован следующий фрагмент из документации:

./redis-trib.rb create --replicas 1 127.0.0.1:7000 127.0.0.1:7001 \
127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005

конечно, правильной командой будет:

./redis-trib.rb create --replicas 1 192.168.127.203:7000 192.168.127.203:7001 \
192.168.127.203:7002 192.168.127.203:7003 192.168.127.203:7004 192.168.127.203:7005

просто для информации, если у кого-то есть похожая проблема.

person Community    schedule 24.02.2016
comment
Спасибо за это, я использую Predis, но столкнулся с той же проблемой! - person dwjv; 29.02.2016