我刚刚使用在我的Ubuntu 10.10服务器
http://redis.io/topics/quickstart的快速入门指南上的说明成功地安装Redis。我运行的服务作为dameon(所以它可以运行init.d)
服务器是具有内部和外部IP的Rackspace群集的一部分。主机运行在端口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文件中,我有本地绑定命令注释掉,因此它应该监听的比localhost IP多。我可以连接到本地机器上的数据库,而不是在另一台服务器上。我试过外部和内部IPs没有运气。
任何建议,使这工作?
首先,我检查,以验证它正在侦听您希望它的IP:
原文链接:https://www.f2er.com/ubuntu/352486.htmlnetstat -nlpt | grep 6379
根据你如何启动/停止你可能没有实际重新启动实例,当你以为你有。 netstat会告诉你是否正在听你认为它在哪里。如果没有,请重新启动它,并确保它重新启动。
如果它重新启动,仍然不在你期望的地方,检查你的配置文件只是为了确保。
建立后,它正在侦听你期望它,从一个应该有访问的远程节点尝试:
redis-cli -h REMOTE.HOST ping
您也可以尝试从本地主机,但使用您期望它正在侦听的IP,而不是主机名或本地主机。你应该看到它在这两种情况下的响应。
如果没有,你的防火墙阻止你。这将是本地IPTables或可能是节点之间的防火墙。您可以向IPtables配置添加日志语句以记录6379上的连接,以查看正在发生的情况。此外,尝试他从本地和非本地重新ping到相同的IP应该是说明性的。如果它是本地响应但不是远程响应,我会倾向于一个干预防火墙,这取决于您的节点IP表规则的复杂性。