Доступ к Redis удаленно. - PullRequest
0 голосов
/ 11 июня 2018

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

Вот шаги, которые я предпринял.

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

Port : 6379
Config file : /etc/redis/6379.conf
Log file : /var/log/redis_6379.log
Data dir : /var/lib/redis/6379
Executable : /usr/local/bin/redis-server
Cli Executable : /usr/local/bin/redis-cli

Теперь я могу запускать / останавливать / перезапускать с service redis_6379 start/stop/restart.На данный момент я могу подключиться к своему redis локально .

root@smg:/home/local: redis-cli ping
PONG

Это вывод моего журнала.

12505:M 11 Jun 16:18:48.248 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
12505:M 11 Jun 16:18:48.248 # Server initialized
12505:M 11 Jun 16:18:48.248 # WARNING overcommit_memory is set to 0! Background save may fail under low memory condition. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
12505:M 11 Jun 16:18:48.249 * DB loaded from disk: 0.000 seconds
12505:M 11 Jun 16:18:48.249 * Ready to accept connections

Я пошел дальше иизменил настройку привязки в redis/6379.conf в разделе «Сетевые подключения», чтобы привязать к bind 0.0.0.0, что должно позволить всем IP-адресам подключаться к моему серверу через порт 6379. Также я установил правило входящей почты для iptables, которое выглядит следующим образом -A INPUT -p tcp -m tcp --dport 6379 -j ACCEPT.При необходимости я могу предоставить полный журнал iptables.

Я перезагрузил свой redis.Проверка с помощью ps aux | grep redis Я подтверждаю, что мой сервер работает.

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND    
root     12505  0.0  0.1  43216  4008 ?        Ssl  16:18   0:08 /usr/local/bin/redis-server *:6379

Теперь я проверяю, действительно ли мой redis действительно прослушивает все порты.Поэтому я проверяю с netstat -nlpt | grep 6379 и получаю следующий вывод.Я думаю, что вывод подтверждает, что Redis прослушивает все внешние IP-адреса, но я не совсем уверен.

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 0.0.0.0:6379            0.0.0.0:*               LISTEN      12505/redis-server

В основном все настроено сейчас для удаленных подключений, но если я пытаюсь подключиться с моего сервераЯ получаю тайм-аут соединения.

root@smg:/home/local: redis-cli -h [serverIP]
Could not connect to Redis at [serverIP]:6379: Connection timed out

Я видел ошибку Connection Refused во многих потоках здесь, в StackOverflow, но ничего, что беспокоит тайм-аут соединения.

У меня действительно нетИдея, почему я получаю этот тайм-аут.Надеюсь, один из вас знает об этом больше.

Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 12 июня 2018

Connection timed out означает, что ваш локальный компьютер не может получить доступ к порту 6379 вашего устройства Redis.Проверьте правила брандмауэра (security groups, если вы используете AWS или Firewall rules, если вы используете GCP) для своей машины Redis и разрешите порт 6379 машины Redis для вашей исходной машины.

0 голосов
/ 11 июня 2018

мой друг.

ПРЕДУПРЕЖДЕНИЕ. Настройка невыполненного TCP-протокола 511 не может быть применена, поскольку для / proc / sys / net / core / somaxconn установлено меньшее значение 128.

Изменить/ proc / sys / net / core / somaxconn

sysctl -w net.core.somaxconn=65535

В файле /etc/sysctl.conf укажите vm.overcommit_memory = 1

...