Не удается получить начальные разделы кластера из начальных URI [RedisURI [host = '127.0.0.1', port = 7001]]

Я работаю над клиентом Java кластера салата. Он настроен внутри топологии bolt (Apache Strom). spout читает данные из kafka и передает их bolt. Однако, когда я начинаю свою топологию, я получаю сообщение об ошибке ниже, и программа завершается. Я что-то упускаю? Чем это вызвано?

Трассировки стека

29502 [Тема-17-РекомендацияLettuceBolt-executor [2 2]] ОШИБКА o.a.s.util - Асинхронный цикл завершился! io.lettuce.core.RedisException: не удается получить начальные разделы кластера из начальных URI [RedisURI [host = '127.0.0.1', port = 7001]] в io.lettuce.core.cluster.RedisClusterClient.loadPartitions (RedisClusterClient.java:865 ) ~ [lettuce-core-5.1.7.RELEASE.jar :?] в io.lettuce.core.cluster.RedisClusterClient.initializePartitions (RedisClusterClient.java:819) ~ [lettuce-core-5.1.7.RELEASE.jar: ?] в io.lettuce.core.cluster.RedisClusterClient.connect (RedisClusterClient.java:345) ~ [lettuce-core-5.1.7.RELEASE.jar :?] в com.projectName.indexer.lettuce.LettuceClusterClientProvider.getConnection LettuceClusterClientProvider.java:72) ~ [классы / :?] в com.projectName.indexer.lettuce.LettuceCacheRepopulationHandler.openLettuceConnection (LettuceCacheRepopulationHandler.java:42) ~ [классы /: подготовить (РекомендацияLettuceBolt.java:35) ~ [классы / :?] в org.apache.storm.daemon.executor $ fn__8058 $ fn__8071.inv oke (executor.clj: 795) ~ [storm-core-1.0.2.jar: 1.0.2] в org.apache.storm.util $ async_loop $ fn__624.invoke (util.clj: 482) [storm-core- 1.0.2.jar: 1.0.2] в clojure.lang.AFn.run (AFn.java:22) [clojure-1.7.0.jar :?] в java.base / java.lang.Thread.run (Thread .java: 844) [?:?] Вызвано: io.lettuce.core.RedisConnectionException: невозможно установить соединение с кластером Redis в [RedisURI [host = '127.0.0.1', port = 7001]] в io.lettuce .core.cluster.topology.AsyncConnections.get (AsyncConnections.java:89) ~ [lettuce-core-5.1.7.RELEASE.jar :?] в io.lettuce.core.cluster.topology.ClusterTopologyRefresh.loadViews (ClusterTopologyRefresh. java: 73) ~ [lettuce-core-5.1.7.RELEASE.jar :?] в io.lettuce.core.cluster.RedisClusterClient.doLoadPartitions (RedisClusterClient.java:871) ~ [lettuce-core-5.1.7.RELEASE .jar :?] в io.lettuce.core.cluster.RedisClusterClient.loadPartitions (RedisClusterClient.java:844) ~ [lettuce-core-5.1.7.RELEASE.jar :?] ... еще 9

Входной код

private void init() {
       redisUri = RedisURI.Builder
                .redis(lettuceConfig.getLettuceClusterHost())
                .withPort(lettuceConfig.getLettuceClusterPort())
                .withTimeout(Duration.ofMillis(lettuceConfig.getLettuceClusterTimeout()))
                .build();
}


public StatefulRedisClusterConnection getConnection() {
        if (connection == null || !connection.isOpen()) {
            redisClusterClient = RedisClusterClient.create(redisUri);
            final ClusterTopologyRefreshOptions topologyRefreshOptions = ClusterTopologyRefreshOptions.builder()
                    .enablePeriodicRefresh(Duration.ofMinutes(BoltConstants.Lettuce.PERIODIC_REFRESH_TIME_IN_MIN))
                    .enableAdaptiveRefreshTrigger()
                    .build();
            final ClusterClientOptions clusterClientOptions = ClusterClientOptions.builder()
                    .autoReconnect(true)
                    .topologyRefreshOptions(topologyRefreshOptions)
                    .build();
            redisClusterClient.setOptions(clusterClientOptions);
            connection = redisClusterClient.connect(SnappyCompressor.wrap(new StringCodec()));
            log.info("Connected to Redis client lettuce. lettuce connection is up and running.");
        }
        return connection;
    }

Окружающая обстановка

compile 'io.lettuce:lettuce-core:5.1.7.RELEASE'

person roottraveller    schedule 24.07.2019    source источник
comment
github.com/lettuce-io/lettuce-core/issues/296 рассматривает проблему, но не комментирует решение.   -  person roottraveller    schedule 24.07.2019
comment
# сообщение об ошибке #github github.com/lettuce-io/lettuce-core/issues/ 1088   -  person roottraveller    schedule 25.07.2019


Ответы (1)


Ошибка возникла из-за того, что я не установил redis cluster локально на моем компьютере.

Я решил, используя эти шаги

https://redis.io/download и выполните следующие команды Установка

$ wget http://download.redis.io/releases/redis-5.0.5.tar.gz
$ tar xzf redis-5.0.5.tar.gz
$ cd redis-5.0.5
$ make //The binaries that are now compiled are available in the src directory
$ src/redis-server

Создание кластера Redis с помощью сценария create-cluster

Теперь проверьте каталог redis-5.0.5/utils/create-cluster в дистрибутиве Redis. Внутри есть сценарий с именем create-cluster, это простой сценарий bash. Чтобы запустить кластер из 6 узлов с 3 ведущими и 3 ведомыми, просто введите следующие команды:

$ create-cluster start  // start 
$ create-cluster create // create cluster

$ create-cluster stop // for stoping 
$ create-cluster clean // clean all the cluster

Вы увидите следующий вывод в терминале

$ ps aux |grep redis
300067846        28222   0.6  0.0  4379932   2612   ??  Ss    7:41PM   0:00.73 ../../src/redis-server *:30004 [cluster]                  
300067846        28227   0.5  0.0  4380956   2604   ??  Ss    7:41PM   0:00.71 ../../src/redis-server *:30006 [cluster]                  
300067846        28218   0.4  0.0  4381980   2676   ??  Ss    7:41PM   0:00.73 ../../src/redis-server *:30002 [cluster]                  
300067846        28216   0.4  0.0  4374812   2576   ??  Ss    7:41PM   0:00.50 ../../src/redis-server *:30001 [cluster]                  
300067846        28225   0.4  0.0  4380956   2632   ??  Ss    7:41PM   0:00.68 ../../src/redis-server *:30005 [cluster]                  
300067846        28220   0.3  0.0  4379932   2596   ??  Ss    7:41PM   0:00.52 ../../src/redis-server *:30003 [cluster]                  
300067846        85550   0.0  0.0  4309420   1128   ??  S     3:08PM   0:07.76 redis-server *:6379

увидеть все главные подчиненные узлы

../redis-5.0.5/utils/create-cluster$ cat nodes-3000*.conf

Вы можете обновить конфигурацию кластера Redis. откройте vi create-cluster и обновите следующую конфигурацию по мере необходимости.

// default config are these 
CLUSTER_HOST=127.0.0.1
PORT=30000
TIMEOUT=2000
NODES=6
REPLICAS=1
person roottraveller    schedule 25.07.2019