Redis-подключение к удаленному серверу



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



сервер является частью кластера Rackspace с внутренними и внешними 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));


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



любые предложения по заставить это работать?

853   6  

6 ответов:

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

netstat -nlpt | grep 6379

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

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

redis-cli -h REMOTE.HOST ping

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

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

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

решение здесь : проверьте ваш /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 защищен любыми средствами, которые соответствуют вашим потребностям.

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

Я решил эту проблему путем удаления bind раздел целиком и задание protected-mode до no.

#bind 127.0.0.1
protected-mode no

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

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

    • также боковое примечание Я включаю скриншот настройки виртуального окна, чтобы подключитесь к redis, если вы находитесь в windows и подключаетесь к виртуальной машине virtualbox.

enter image description here

Orabig является правильным.

вы можете привязать 10.0.2.15 в Ubuntu (VirtualBox) затем переадресация портов от хоста к гостю Ubuntu.

in/etc/redis / redis.conf

bind 10.0.2.15

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

sudo systemctl restart redis

Он должен работать!

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

Comments

    Ничего не найдено.