0

我正在尝试使用 jedis(在连接到同一网络的本地计算机上)连接到我的 redis 集群(在远程服务器上)。

我的redis集群是由以下ip组成的:

10.xxx:6380

10.xxx:6382

10.xxx:6385

我的 redis 实例 10.xxx:6380 的配置文件是:

port 6380
cluster-enabled yes
cluster-config-file nodes-6380.conf
cluster-node-timeout 5000
appendonly yes
protected-mode yes
#daemonize yes
bind 127.0.0.1 10.x.x.x(machine ip)

但是问题是,当我尝试运行我的 redis 服务器实例时,出现以下异常:

[admin@dn2 6380]$ redis-server  redis.conf 
10965:M 21 Jul 02:58:04.100 # Creating Server TCP listening socket (local machine ip):6380: bind: Cannot assign requested address

有人可以告诉我我在这里做错了什么吗???提前致谢。

我的绝地计划是:

        Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
        //Jedis Cluster will attempt to discover cluster nodes automatically
        jedisClusterNodes.add(new HostAndPort("10.x.x.x", 6380));
        jedisClusterNodes.add(new HostAndPort("10.x.x.x", 6382));
        jedisClusterNodes.add(new HostAndPort("10.x.x.x", 6385));
        JedisCluster jc = new JedisCluster(jedisClusterNodes);
        jc.set("foo", "bar");
        String value;
        System.out.println(value = jc.get("foo"));
4

1 回答 1

0

哎呀。从我的角度来看,这是一个愚蠢的错误。

bind从redis.conf中的标签中删除机器 ip 和 127.0.0.1并指定正确的主机 ip(即,在我的情况下为 10.xxx)。

也放入protected-moderedis.confno

此外,在使用主机 ips 创建集群时./redis-trib.rb,应以正确的格式(10.xxx)提及,即使所有 redis 实例都在同一台服务器上运行,也不要放入 localhost(即,不是 127.0.0.1)。

于 2017-07-21T08:46:51.623 回答