2014-06-20 2 views
0

Я только что установил Redis на удаленном компьютере Ubuntu (конфигурации VM) и использовал переадресацию портов, чтобы иметь возможность получить к нему доступ от удаленного клиента. Redis работает правильно на самой машине: я могу получить ответ на команды «ping», отправленные через redis-клиенты на том же компьютере. Однако, когда я пытаюсь получить доступ к серверу Redis с удаленной машины (используя jedis-клиент для приложения Java), я получаю ошибку тайм-аута сокета.Redis не работает в фоновом режиме

При изучении проблемы немного, я понял, что redis-сервер на удаленной машине не работает как служба. Вывод команды service приведен ниже, который показывает, что служба redis-сервера в настоящее время остановлена ​​(опция [-] перед «redis-server»).

Кроме того, используя команду netstat, я установил, что порт 6379 назначен redis-серверу. Ниже приведен снимок того же самого. enter image description here

Кроме того, в моем файле конфигурации (redis.conf), я раскомментировать строку, которая связывает сервер с 127.0.0.1, а также изменил параметр «демон» на «да». Я запускаю сервер, используя этот файл конфигурации.

Любая помощь в том, как я могу получить доступ к удаленному серверу (или запустить службу в фоновом режиме, так что она активно прослушивает новые подключения) через мое приложение высоко ценится! Спасибо заранее.

+0

Редактировать: Я также изменил привязку с 127.0.0.1 до 0.0.0.0, но он также не работает – BajajG

+0

Вы должны идеально получить следующий ответ: netstat -a | grep 6379 tcp 0 0 *: 6379 *: * LISTEN –

+0

Как вы начинаете свой сервер? Вы должны в идеале начать его с пути к вашему конфигурационному файлу, где вы внесли изменения. Найдите обновленный ответ. –

ответ

0

В фоновом режиме или нет, Redis выполняет только прослушивание localhost по умолчанию. Чтобы заставить его прослушивать все IP-адреса, закомментируйте строку «bind» полностью (префикс с «#»).

Просто помните: публикация Redis общедоступно (например, обнажая ее порт в Интернете) может представлять угрозу безопасности. У Redis нет сложной интегрированной безопасности, так как вы можете установить простой глобальный пароль. Из-за его производительности (50000+ получает в секунду на машине с напитками) этот пароль очень подвержен попыткам грубой проверки. Вместо этого вы можете использовать SSH-туннелирование для доступа к экземпляру redis. Не забудьте в этом случае изменить привязку к 127.0.0.1.

+0

Я пробовал комментировать строку 'bind', но не повезло. В настоящее время я связываю его с 0.0.0.0 для доступа к нему по всему миру. Тем не менее, ничего не работает. – BajajG

+0

Прежде всего, я рад, что вы подключились к своему удаленному подключению. Тем не менее, вы, тем не менее, можете рассмотреть мой подход к безопасному подключению. Я сделал это сам для нескольких приложений C#, и это работает как шарм. Я использую библиотеку C# ssh для подключения к серверу redis работает (на порте 22), туннелирует порт redis с client-localhost на server-localhost. Затем я подключил мой redis-клиент на клиентской машине к localhost и voila: безопасное зашифрованное соединение. Должен быть простой в использовании java lib для ssh (я просто не знаю одного по имени, я не очень разбираюсь в java) ... –

+0

Спасибо за предложение. Я обязательно попробую! :) – BajajG

0

Все, что вам нужно сделать здесь: В вашем redis.conf изменения файла

связывают 127.0.0.1

к

связывают 0.0.0.0

и перезапустить сервер

sudo src/redis-server

Отметьте: Redis - Connect to Remote Server

+0

Я тоже это пробовал, но он не работает. Пожалуйста, проверьте комментарий ниже вопроса. – BajajG

Смежные вопросы