Snc_redis ошибочно перенаправляет на 127.0.0.1

#php #symfony #redis-cluster #predis

#php #symfony #redis-кластер #predis

Вопрос:

Я хочу подключиться к кластеру redis через HA. Моя конфигурация такая:

 snc_redis:
    clients:
        cluster_test_ha:
            type: predis
            alias: cluster_test_ha
            dsn: "%redis_cluster_ha_address%"
            options:
                replication: false
                cluster: 'redis'
                connection_timeout: 10
                read_write_timeout: 10
 

И я использую это так:

 $redisClient = $this->getContainer()->get('snc_redis.cluster_test_ha');
try {
       $key="test125412";
       $redisClient->set($key, 12);
} catch (Throwable $e) {
    dump($e->getMessage());
}
 

Это нормально, когда я подключен к узлу, на котором $key будет сохраняться. Но когда redis отправляет перенаправление на другой узел, он пытается подключиться к 127.0.0.1 вместо IP-адреса сервера redis, поэтому я получаю это исключение:

 Connection refused [tcp://127.0.0.1:7002]
 

Я использую snc_redis версии 2.1.13

P.S: Я попробовал с rediscli, и он перенаправляет правильно, так что, похоже, на стороне redis проблем нет.

Ответ №1:

Я обнаружил, что проблема находится на стороне redis. Узлы знали другие узлы по правильному IP-адресу, но знали себя на 127.0.0.1. Вы можете увидеть это здесь (я замаскировал реальный ip-адрес redis server ip меткой): введите описание изображения здесь

Поэтому я просто подключаюсь к каждому узлу и делаю его meet сам на нужном IP-адресе (нет 127.0.0.1 ). Как вы можете видеть, после этого он оказался на нужном IP-адресе, и моя проблема была решена. введите описание изображения здесь