当前位置: 首页 > 知识库问答 >
问题:

无法从初始URI检索初始群集分区[RedisURI[host='127.0.0.1',port=7001]]

孔安福
2023-03-14

我正在研究Lettuce集群Java客户端。它是在bolt拓扑(Apache Strom)中设置的。spout正在从kafka读取数据并将其传递给bolt。然而,当我启动我的拓扑时,我会收到以下错误消息和程序终止。我是不是漏掉了什么?这是什么原因造成的?

29502[Thread-17-RecommendationLetTuceBolt-Executor[2 2]]错误O.A.S.Util-异步循环已死亡!io.lettuce.core.redisException:无法从io.lettuce.core.cluster.redisclusterClient.LoadPartitions(redisclusterClient.java:865)~[lettuce-core-5.1.7.release.jar:?]的初始URI[RedisURI[host='127.0.0.1',port=7001]]检索初始群集分区在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)~[classes/:?]在com.projectname.indexer.lettuce.lettuceCacherePopulationHandler.OpenLettuceConnection(lettuceCacherePopulationHandler.java:42)~[classes/:?]在com.projectName.indexer.bolts.RecommendationLettucebolt.Prepare(RecommendationLettucebolt.java:35)~[classes/:?]在org.apache.storm.daemon.executor$FN__8058$FN__8071.invoke(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:无法建立到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'

共有1个答案

艾浩广
2023-03-14

出现错误是因为我没有在计算机上本地安装redis集群。

我用这些步骤解决了问题

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

使用create-cluster脚本创建Redis集群

现在检查Redis发行版中的redis-5.0.5/utils/create-cluster目录。里面有一个名为create-cluster的脚本,它是一个简单的bash脚本。要启动一个包含3个主服务器和3个从服务器的6节点集群,只需输入以下命令:

$ 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
 类似资料:
  • 我很担心,因为我在启动Hazelcast实例后会得到以下跟踪日志: 使用最新版本的Hazelcast 3.7进行测试,但使用3.6进行测试,并在多播环境中使用默认的Hazelcast配置 到底是什么意思?这是有问题的征兆? 谢谢你

  • 我有一个使用MIP SDK的Azure函数,当调用< code>MIP时,我得到以下错误。CreateMipContext(...): 令人惊讶的是,该错误仅在 Azure 上运行时发生。在本地运行时,一切都很好。 我正在使用MIP SDK v1.8.86和.NET Core 3.1。 知道OneDS是什么或者是什么导致了错误吗?

  • 新CONF:我做了一些改变来配合你所说的。现在我删除了hibernate-cfg.xml并在spring-servlet.xml中做了所有的conf: 它可能来自我的java文件吗? 错误是: Bean 类 [org.springframework.orm.hibernate4.LocalSessionFactoryBean] 的属性 'transaction' 无效:Bean 属性 'trans

  • 我有一个应用程序,我正在扩展它以提供REST API。在主站点中一切正常,但当我尝试访问REST API时,我在异常日志中得到以下内容: 禁用延迟加载将解决此问题,但会导致不可接受的性能(加载时间从 200 毫秒到 22 秒)。我不知道如何处理这个问题。 我刚开始在ColdFusion中Rest,在我看来,CFC正在以一种不寻常的方式被处理。它们似乎没有被初始化(init方法似乎没有运行),现在看

  • 初始化检出 大多数时候,你会使用checkout从版本库取出一个新拷贝开始使用Subversion,这样会在本机创建一个项目的“本地拷贝”,这个拷贝包括了命令行指定版本库中的HEAD(最新的)版本: $ svn checkout http://svn.collab.net/repos/svn/trunk A trunk/Makefile.in A trunk/ac-helpers A

  • 本文介绍如何对 Kubernetes 上的集群进行初始化配置完成初始化账号和密码设置,以及批量自动执行 SQL 语句对数据库进行初始化。 注意: 如果 TiDB 集群创建完以后手动修改过 root 用户的密码,初始化会失败。 以下功能只在 TiDB 集群创建后第一次执行起作用,执行完以后再修改不会生效。 配置 TidbInitializer 请参考 TidbInitializer 示例和 API