在腾讯云上搭建Redis集群访问的问题 20C

求各位大佬帮忙,弄了一天了。我是刚学习redis集群的搭建。按照网上的步骤,然用ruby后来搭建redis集群。一开始遇到的一个坑是在配置文件中添加bind (腾讯云的外网ip)之后 启动redis没反应 删掉这一段就可以启动。 图片说明
然后是在启动集群的时候输入外网ip就有下面的提示 用127.0.0.1:7000就可以正常启动。 图片说明

在服务器上是可以正常存取数据的(用xshell链接),
图片说明

但是在项目上连接使用就会报错。

Caused by: redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectException: Connection refused: connect
    at redis.clients.jedis.Connection.connect(Connection.java:207)
    at redis.clients.jedis.BinaryClient.connect(BinaryClient.java:93)
    at redis.clients.jedis.BinaryJedis.connect(BinaryJedis.java:1767)
    at redis.clients.jedis.JedisFactory.makeObject(JedisFactory.java:106)
    at org.apache.commons.pool2.impl.GenericObjectPool.create(GenericObjectPool.java:888)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:432)
    at org.apache.commons.pool2.impl.GenericObjectPool.borrowObject(GenericObjectPool.java:361)
    at redis.clients.util.Pool.getResource(Pool.java:49)
    ... 66 common frames omitted
Caused by: java.net.ConnectException: Connection refused: connect

我又在网上查 说是redis服务没开。但是我也不知道怎么解决。 求各位大手子帮忙解决一下。

我在网上看的用cluster nodes查看 cluster的状态,发现它的ip是127.0.0.1的 ,我想问下是不是这个原因。但是我用外网ip启动和内网ip启动都报错啊,只有用127.0.0.1启动的时候才成功。求解求解图片说明

5个回答

127.0.0.1是本机地址 。项目要访问的话地址也必须配置127.0.0.1。如果是配置外网地址 ,就是内网回路ip,你现在的外网ip是互联网外网IP,这个ip的端口必须配置安全策略,关闭防火墙。很麻烦,而且不安全。

qq_42305159
X-T--Q 回复爱上1237: 11111遇到了和你一样的问题,现在解决了吗?
大约一年之前 回复
ainiburuqusi
ainiburuqusi 回复acax22277111: 那你直接用内网IP就行。将来分开也肯定是同在腾讯云,不可能跨外网。
一年多之前 回复
acax22277111
爱上1237 我现在也是刚入门,有点懵懵的。那在java中用JedisCluster调用redis是属于开放接口访问的还是外网直接访问的呢
一年多之前 回复
ainiburuqusi
ainiburuqusi 回复acax22277111: 集群配置网上多的是,最好不要外网直接访问redis,你可以开放接口,通过接口调用redis,如果直接访问redis,比如说我注入一个flushall命令,那你数据全没了。
一年多之前 回复
acax22277111
爱上1237 回复ainiburuqusi: 是的 大概问题就是这样。我在网上看到一篇用阿里云搭建的,遇到跟我一样的问题,但他只是把redis端口放开,就正常了。我现在的问题就是在bind(公网ip)后redis启动不了。我试试在腾讯云建个工单问一下。谢谢你的回答了
一年多之前 回复
ainiburuqusi
ainiburuqusi 本地端口127.0.0.1肯定不能用,这样没意义,如果用内网端口的话应该不用什么策略。如果你指的是互联网访问的话最好还是去腾讯云的官方论坛,或者建个工单问下客服,一般来说都有类似的解决方案。
一年多之前 回复
acax22277111
爱上1237 那我应该怎么做,正常的集群配置是怎样做到又安全又能让外网访问得到的呢
一年多之前 回复

这种问题别问csdn,回复慢,直接下工单问腾讯云,他们如果客服搞不定你可以试着直接问他们技术联系方式,直接问他们搞定
腾讯云的内外网ip什么的,还有各种连接策略,你不写明了,也不知道你踩到哪个坑了。

1、去掉redis.conf中bind那一行
2、添加protected-mode no
3、在远程机器上通过telnet命令测试端口是否允许访问
4、集群构建时,./redis-cli --cluster create 公网IP:6001 公网IP:6002 公网IP:6003 公网IP:6004 公网IP:6005 公网IP:6006 --cluster-replicas 1

看一下防火墙关没关。再看看服务状态

feng_zhi_zi510
feng_zhi_zi510 回复爱上1237: 哥们解决没?解决掉了的话是咋解决的。我也有这样的问题
12 个月之前 回复
acax22277111
爱上1237 我在腾讯云上的安全组那里都开放端口了,在网上查的关闭防火墙的命令也摁了一遍。还是不行。
一年多之前 回复

find / -name 'client.rb'
vim /usr/local/rvm/gems/ruby-2.3.3/gems/redis-4.0.0/lib/redis/client.rb
找下对应文件把你的密码设置进去
你这个方式部署集群不支持带密码的
class Client
DEFAULTS = {
:url => lambda { ENV["REDIS_URL"] },
:scheme => "redis",
:host => "127.0.0.1",
:port => 6379,
:path => nil,
:timeout => 5.0,
:password => "你的密码写在这里",
:db => 0,
:driver => nil,
:id => nil,
:tcp_keepalive => 0,
:reconnect_attempts => 1,
:inherit_socket => false
}

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问