redis.clients.jedis.exceptions.JedisConnectionException: не удалось получить ресурс из пула при подключении к кластеру redis - PullRequest
0 голосов
/ 25 октября 2018

Я пытаюсь подключиться к кластеру redis, используя java JedisCluster клиент.

Сначала я создал Redis Cluster, используя этот образ докера

grokzen / redis-cluster

Создано 6 узлов (3 master && 3 slave)

Использование докер-машины в Windows Я запустил redis cluster с помощью этой команды

docker run -p 7000:7000 -p 7001:7001 -p 7002:7002 -p 7003:7003 -p 7004:7004 -p 7005:7005 -p 7006:7006 -p 7007:7007 dockerImageId

Redis Cluster, начиная с короткого пути Журнал:

Использование 3 мастеров:

172.17.0.2: 7000

172.17.0.2: 7001

172.17.0.2: 7002

Добавление реплики 172.17.0.2:7004 к 172.17.0.2:7000 Добавление реплики 172.17.0.2:7005

к 172.17.0.2:7001 Добавлениереплика

172.17.0.2: от 7003 до 172.17.0.2:7002

Клиент Java для кластера Redis:

Set<HostAndPort> jedisClusterNodes = new HashSet<HostAndPort>();
        jedisClusterNodes.add(new HostAndPort("192.168.99.100", 7000));
        JedisCluster jc = new JedisCluster(jedisClusterNodes);
        jc.set("key", "Redis-Val");
        String value = jc.get("key");
        System.out.println("key is : "+value);

После выполнения этого кода я получил это исключение

Исключение в потоке "main" redis.clients.jedis.exceptions.JedisConnectionException: Не удалось получить ресурс fиз пула по адресу redis.clients.util.Pool.getResource (Pool.java:53) по адресу redis.clients.jedis.JedisPool.getResource (JedisPool.java:226) по адресу redis.clients.jedis.JedisSlotBasedConlotHedConФракция по связямjava: 66) в redis.clients.jedis.JedisClusterCommand.runWithRetries (JedisClusterCommand.java:116) в redis.clients.jedis.JedisClusterCommand.runWithRetries (JedisClusterCommand.jithisCluster.JedisCj.java: 141) по адресу redis.clients.jedis.JedisClusterCommand.runWithRetries (JedisClusterCommand.java:141) по адресу redis.clients.jedis.JedisClusterCommand.runWithRetries (JedisClusterCommand.jisisisisCluster.jedisisJedisClusterCommand.java:31) в redis.clients.jedis.JedisCluster.set (JedisCluster.java:103) в redis.redis_example.App.main (App.java:20) Вызывается: redis.clients.jedis.exceptions.JedisConneception.JedisConneception: java.net.SocketTimeoutException: истекло время ожидания соединения

Я проверил, что redis работает на любом узле кластера с помощью команды telnet:

telnet 192.168.99.100 7000

успешно подключен

1 Ответ

0 голосов
/ 03 июля 2019

Я решил это, установив переменную IP env при запуске контейнера:

docker run -d -p 7000-7005:7000-7005 -e "IP=0.0.0.0" grokzen/redis-cluster:latest
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...