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-адреса без успеха.
любые предложения по заставить это работать?
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.
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