Создание кластера Redis не может подключиться к серверу, что не так?

У меня есть 3 разных сервера, развернутых на Aliyun, на каждом из них запущено 2 экземпляра Redis с портами 6379 и 6380.

Я пытался построить кластер Redis с этими 6 узлами (Redis версии 3.2.0). Но он не удался и сказал: «Извините, не могу подключиться к узлу 10.161.94.215:6379» (10.161.94.215 - это IP-адрес моего первого сервера).

Хотя, очевидно, серверы работали достаточно хорошо, и я мог получить это с помощью redis-cli.

Gem установлен.

Requirepass заблокирован, авторизация не требуется.

Нет привязки по IP

Также нет защищенного режима.

изображение ошибки

Все параметры конфигурации кластера хорошо настроены.

Что в этом плохого?


person rancho wang    schedule 14.05.2016    source источник


Ответы (4)


Думаю, теперь я знаю почему.

Используйте IP-адрес локального хоста.

src/redis-trib.rb create 127.0.0.1:6379 127.0.0.1:6380 h2:p1 h2:p2 h3:p1 h3:p2
person rancho wang    schedule 15.05.2016

Я думаю, вы создаете кластер из другой подсети. Это может быть проблемой.

person Subrat Srivastwa    schedule 09.06.2016

Похоже, что защищенный режим - это новая функция безопасности в Redis 3.2. Краткая версия: если вы явно не привязываетесь к IP-адресу, он разрешит доступ только к localhost.

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

Из файла redis.conf:

# Protected mode is a layer of security protection, in order to avoid    that
# Redis instances left open on the internet are accessed and exploited.
#
# When protected mode is on and if:
#
# 1) The server is not binding explicitly to a set of addresses using the
#    "bind" directive.
# 2) No password is configured.

# The server only accepts connections from clients connecting from the
# IPv4 and IPv6 loopback addresses 127.0.0.1 and ::1, and from Unix domain
# sockets.
#
# By default protected mode is enabled. You should disable it only if
# you are sure you want clients from other hosts to connect to Redis
# even if no authentication is configured, nor a specific set of interfaces
# are explicitly listed using the "bind" directive.
protected-mode yes

Есть инструкции, как исправить это, если вы попытаетесь подключиться к нему, используя что-то помимо интерфейса обратной петли:

ОТКАЗАНО Redis работает в защищенном режиме, потому что защищенный режим включен, адрес привязки не указан, у клиентов не запрашивается пароль аутентификации. В этом режиме соединения принимаются только через интерфейс обратной петли. Если вы хотите подключиться к Redis с внешних компьютеров, вы можете принять одно из следующих решений: 1) Просто отключите защищенный режим, отправив команду «CONFIG SET protected-mode no» из интерфейса обратной петли, подключившись к Redis с того же хоста, что и сервер. работает, однако УБЕДИТЕСЬ, что Redis не является общедоступным из Интернета, если вы это сделаете. Используйте CONFIG REWRITE, чтобы сделать это изменение постоянным. 2) В качестве альтернативы вы можете просто отключить защищенный режим, отредактировав файл конфигурации Redis и установив для параметра защищенного режима значение «нет», а затем перезапустив сервер. 3) Если вы запустили сервер вручную только для тестирования, перезапустите его с параметром --protected-mode no. 4) Установите адрес привязки или пароль аутентификации. ПРИМЕЧАНИЕ. Вам нужно сделать только одно из вышеперечисленных действий, чтобы сервер начал принимать подключения извне.

Вывод redis-trib.rb довольно краток (вероятно, уместно).

person Ishgorilla    schedule 21.07.2016

судо нано /etc/redis/6379.conf

Replace #bind 127.0.0.1 or bind 127.0.0.1 with bind 0.0.0.0   

sudo service redis_6379 restart

Разрешить доступ к Redis где угодно.

person Ashish Gupta    schedule 04.12.2016