Назад | Перейти на главную страницу

Как вы можете связать узлы в кластере Redis через имя хоста вместо ip?

Кластер Redis требует, чтобы все узлы могли видеть друг друга для общения; для некоторых тривиальных ситуаций (например, докер со всеми открытыми узлами) доступны некоторые дополнительные параметры конфигурации:

cluster-announce-ip 10.1.1.5
cluster-announce-port 6379
cluster-announce-bus-port 6380

(видеть http://download.redis.io/redis-stable/redis.conf для единственной доступной документации по этим параметрам)

Обратите внимание, что эти значения жестко запрограммированы в файле конфигурации. Это крайне неудобно.

Можно ли как-то настроить Redis для использования имя хоста вместо IP для конечной точки? Есть ли обходной путь для этого?

В качестве наглядного примера того, почему это необходимо, рассмотрим попытку настроить тестовый кластер Redis в образе докера с несколькими экземплярами Redis в одном контейнере через Dockerfile:

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

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

Нет, он еще не поддерживается, но есть нерешенная проблема: https://github.com/antirez/redis/issues/2186