小编典典

Redis-连接到远程服务器

redis

我已经使用Ubuntu
10.10服务器上http://redis.io/topics/quickstart上的快速入门指南中的说明成功安装了Redis
。我将服务作为dameon运行(因此可以通过init.d运行)

该服务器是具有内部和外部IP的Rackspace Cluster的一部分。主机在端口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));

一旦执行此操作-
我总是会拒绝连接。在我的redis.conf文件中,我注释掉了本地绑定命令,因此它应该侦听的不仅仅是本地IP。我可以连接到本地计算机上的数据库,而不能连接到另一台服务器上。我尝试过外部和内部IP都没有运气。

有什么建议让它起作用吗?


阅读 276

收藏
2020-06-20

共1个答案

小编典典

首先,我要检查一下它是否正在侦听您期望的IP:

netstat -nlpt | grep 6379

根据您启动/停止的方式,您可能实际上没有以您认为的实际方式重新启动实例。netstat会告诉您是否正在侦听您认为的位置。如果不是,请重新启动它并确保它重新启动。如果重新启动但仍未在您期望的位置进行侦听,请检查配置文件以确保。

建立后,它正在从应该具有访问权限的远程节点上监听您期望的位置:

redis-cli -h REMOTE.HOST ping

您也可以从本地主机尝试该操作,但是使用您希望其监听的IP地址而不是主机名或本地主机。在两种情况下,您都应该看到它是PONG。

如果没有,则您的防火墙正在阻止您。这可能是本地IPTable,也可能是节点之间的防火墙。您可以将日志记录语句添加到IPtables配置中,以记录6379上的连接以查看发生了什么。同样,尝试从本地和非本地重新映射到同一IP应该是说明性的。如果它在本地响应而不是在远程响应,则我倾向于使用介入式防火墙,具体取决于您的节点上IP表规则的复杂性。

2020-06-20