#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-адресе, и моя проблема была решена.