Redis - подключение к удаленному серверу - PullRequest
108 голосов
/ 16 декабря 2011

Я только что успешно установил Redis, используя инструкции из Руководства по быстрому запуску http://redis.io/topics/quickstart на моем сервере Ubuntu 10.10. Я запускаю службу как dameon (так что ее можно запустить с помощью init.d)

Сервер является частью Rackspace Cluster с внутренним и внешним IP-адресами. Хост работает на порту 6379 (стандарт для Redis)

Я добавил строку в iptables, чтобы разрешить входящие соединения через порт 6379, как показано ниже:

 ACCEPT     tcp  --  anywhere             anywhere            tcp dpt:6379 

В моем PHP-коде на другом сервере я пытаюсь подключиться к новому серверу Redis здесь:

$this->load->helper("iredis");

$hostname = "IP ADDRESS HERE";

$redis = new iRedis(array('hostname' => $hostname, 'port' => 6379));

Как только я это делаю - я всегда получаю отказ в соединении. В моем файле redis.conf закомментирована команда local bind, поэтому она должна прослушивать больше, чем IP-адрес localhost. Я могу подключиться к базе данных на локальной машине, но не на другом сервере. Я попробовал внешние и внутренние IP-адреса без удачи.

Есть какие-нибудь предложения, как заставить это работать?

Ответы [ 6 ]

306 голосов
/ 18 декабря 2012

Я застрял с той же проблемой, и предыдущий ответ мне не помог (хотя и хорошо написано).

Решение здесь: проверьте ваш /etc/redis/redis.conf и обязательно измените значение по умолчанию

bind 127.0.0.1

до

bind 0.0.0.0

Затем перезапустите службу (service redis-server restart)

Теперь вы можете проверить, что Redis прослушивает нелокальный интерфейс с помощью

redis-cli -h 192.168.x.x ping

(замените 192.168.x.x на свой IP-адрес)

Важное замечание: как заявили несколько пользователей, небезопасно устанавливать это на сервере, который подключен к Интернету. Вы должны быть уверены, что ваш Redis защищен любыми средствами, которые соответствуют вашим потребностям.

119 голосов
/ 10 февраля 2012

Сначала я бы проверил, прослушивает ли тот IP-адрес, который вы ожидаете:

netstat -nlpt | grep 6379

В зависимости от того, как вы запускаете / останавливаете, вы, возможно, фактически не перезапускали экземпляр, когда думали, чтоимел.Netstat скажет вам, если он слушает, где вы думаете, это.Если нет, перезапустите его и убедитесь, что он перезапускается.Если он перезапускается и все еще не прослушивает, где вы ожидаете, проверьте ваш конфигурационный файл просто для уверенности.

После установления, что он прослушивает, где вы ожидаете, с удаленного узла, который должен иметь доступ, попробуйте:

redis-cli -h REMOTE.HOST ping

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

Если нет, ваш брандмауэр (-ы) блокирует вас.Это могут быть локальные IPTables или, возможно, межсетевой экран между узлами.Вы можете добавить оператор регистрации в вашу конфигурацию IPtables, чтобы регистрировать соединения через 6379, чтобы увидеть, что происходит.Также, попытка переадресации с локального и нелокального на один и тот же IP-адрес должна быть иллюстративной.Если он отвечает локально, но не удаленно, я бы склонялся к промежуточному межсетевому экрану в зависимости от сложности ваших правил IP-таблиц на узле.

11 голосов
/ 26 июля 2016

В дополнение к превосходному ответу Орабыга:

Я решил эту проблему, полностью удалив раздел bind и установив protected-mode в no.

#bind 127.0.0.1
protected-mode no

Никогда не используйте этот метод на общедоступных серверах.

3 голосов
/ 25 сентября 2017

Орабиг правильный.

Вы можете связать 10.0.2.15 в Ubuntu (VirtualBox) , затем перенаправить порт с хоста на гостевую Ubuntu.

в /etc/redis/redis.conf

bind 10.0.2.15

затем перезапустите redis:

sudo systemctl restart redis

Это должно работать!

2 голосов
/ 17 мая 2017
  • если вы скачали redis самостоятельно (не apt-get install redis-server), а затем отредактировали redis.conf с помощью Приведенные выше предложения, убедитесь, что ваш старт Redis с конфигурации вот так: ./src/redis-server redis.conf

    • также примечание, что я включаю снимок экрана настройки виртуальной коробки в подключиться к redis, если вы используете windows и подключаетесь к виртуальной коробке vm.

enter image description here

0 голосов
/ 16 июня 2016

Настройка tcp-keepalive на 60 (он был установлен на 0) в конфигурации redis сервера помог мне решить эту проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...