远程访问redis。

时间:2018-06-11 17:11:25

标签: bash redis debian remote-access

我正在尝试远程访问我的小Debian服务器上托管的redis数据库,但我无法让它工作。希望有人可以帮我解决这个问题。

以下是我采取的步骤。

我根据this教程设置了我的redis。 使用提供的安装shell脚本,我得到了以下日志,显示了所有创建的目录/文件:

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

我在StackOverflow上的许多线程中看到了Connection Refused错误,但没有关注连接超时的事情。

我真的不知道为什么我会得到这个Timeout。希望你们中的一个人更了解它。

提前致谢!

2 个答案:

答案 0 :(得分:0)

我的朋友。

警告:无法强制执行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

答案 1 :(得分:0)

Connection timed out表示您的本地计算机无法访问redis计算机的6379端口。检查防火墙规则(如果您使用AWS,则为security groups,如果您使用GCP,则为Firewall rules),并为您的源计算机允许6379端口的redis计算机。