无法从初始 URI [RedisURI [host='127.0.0.1', port=7001]] 检索初始集群分区
Cannot retrieve initial cluster partitions from initial URIs [RedisURI [host='127.0.0.1', port=7001]]
我正在处理 Lettuce 集群 Java 客户端。它在 bolt
拓扑结构 (Apache Strom) 中设置。 spout
正在从 kafka
读取数据并将其传递给 bolt
。但是,当我开始我的拓扑时,我收到以下错误消息并且程序终止。我错过了什么吗?是什么原因造成的?
堆栈跟踪
29502 [Thread-17-RecommendationLettuceBolt-executor[2 2]] ERROR o.a.s.util - Async loop died!
io.lettuce.core.RedisException: Cannot retrieve initial cluster partitions from initial URIs [RedisURI [host='127.0.0.1', port=7001]]
at io.lettuce.core.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:865) ~[lettuce-core-5.1.7.RELEASE.jar:?]
at io.lettuce.core.cluster.RedisClusterClient.initializePartitions(RedisClusterClient.java:819) ~[lettuce-core-5.1.7.RELEASE.jar:?]
at io.lettuce.core.cluster.RedisClusterClient.connect(RedisClusterClient.java:345) ~[lettuce-core-5.1.7.RELEASE.jar:?]
at com.projectName.indexer.lettuce.LettuceClusterClientProvider.getConnection(LettuceClusterClientProvider.java:72) ~[classes/:?]
at com.projectName.indexer.lettuce.LettuceCacheRepopulationHandler.openLettuceConnection(LettuceCacheRepopulationHandler.java:42) ~[classes/:?]
at com.projectName.indexer.bolts.RecommendationLettuceBolt.prepare(RecommendationLettuceBolt.java:35) ~[classes/:?]
at org.apache.storm.daemon.executor$fn__8058$fn__8071.invoke(executor.clj:795) ~[storm-core-1.0.2.jar:1.0.2]
at org.apache.storm.util$async_loop$fn__624.invoke(util.clj:482) [storm-core-1.0.2.jar:1.0.2]
at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?]
at java.base/java.lang.Thread.run(Thread.java:844) [?:?]
Caused by: io.lettuce.core.RedisConnectionException: Unable to establish a connection to Redis Cluster at [RedisURI [host='127.0.0.1', port=7001]]
at io.lettuce.core.cluster.topology.AsyncConnections.get(AsyncConnections.java:89) ~[lettuce-core-5.1.7.RELEASE.jar:?]
at io.lettuce.core.cluster.topology.ClusterTopologyRefresh.loadViews(ClusterTopologyRefresh.java:73) ~[lettuce-core-5.1.7.RELEASE.jar:?]
at io.lettuce.core.cluster.RedisClusterClient.doLoadPartitions(RedisClusterClient.java:871) ~[lettuce-core-5.1.7.RELEASE.jar:?]
at io.lettuce.core.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:844) ~[lettuce-core-5.1.7.RELEASE.jar:?]
... 9 more
输入密码
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'
出现错误是因为我没有在我的机器上本地安装 redis 集群。
我使用这些步骤解决了问题
https://redis.io/download and run below commands Installation
$ 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
我正在处理 Lettuce 集群 Java 客户端。它在 bolt
拓扑结构 (Apache Strom) 中设置。 spout
正在从 kafka
读取数据并将其传递给 bolt
。但是,当我开始我的拓扑时,我收到以下错误消息并且程序终止。我错过了什么吗?是什么原因造成的?
堆栈跟踪
29502 [Thread-17-RecommendationLettuceBolt-executor[2 2]] ERROR o.a.s.util - Async loop died! io.lettuce.core.RedisException: Cannot retrieve initial cluster partitions from initial URIs [RedisURI [host='127.0.0.1', port=7001]] at io.lettuce.core.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:865) ~[lettuce-core-5.1.7.RELEASE.jar:?] at io.lettuce.core.cluster.RedisClusterClient.initializePartitions(RedisClusterClient.java:819) ~[lettuce-core-5.1.7.RELEASE.jar:?] at io.lettuce.core.cluster.RedisClusterClient.connect(RedisClusterClient.java:345) ~[lettuce-core-5.1.7.RELEASE.jar:?] at com.projectName.indexer.lettuce.LettuceClusterClientProvider.getConnection(LettuceClusterClientProvider.java:72) ~[classes/:?] at com.projectName.indexer.lettuce.LettuceCacheRepopulationHandler.openLettuceConnection(LettuceCacheRepopulationHandler.java:42) ~[classes/:?] at com.projectName.indexer.bolts.RecommendationLettuceBolt.prepare(RecommendationLettuceBolt.java:35) ~[classes/:?] at org.apache.storm.daemon.executor$fn__8058$fn__8071.invoke(executor.clj:795) ~[storm-core-1.0.2.jar:1.0.2] at org.apache.storm.util$async_loop$fn__624.invoke(util.clj:482) [storm-core-1.0.2.jar:1.0.2] at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?] at java.base/java.lang.Thread.run(Thread.java:844) [?:?] Caused by: io.lettuce.core.RedisConnectionException: Unable to establish a connection to Redis Cluster at [RedisURI [host='127.0.0.1', port=7001]] at io.lettuce.core.cluster.topology.AsyncConnections.get(AsyncConnections.java:89) ~[lettuce-core-5.1.7.RELEASE.jar:?] at io.lettuce.core.cluster.topology.ClusterTopologyRefresh.loadViews(ClusterTopologyRefresh.java:73) ~[lettuce-core-5.1.7.RELEASE.jar:?] at io.lettuce.core.cluster.RedisClusterClient.doLoadPartitions(RedisClusterClient.java:871) ~[lettuce-core-5.1.7.RELEASE.jar:?] at io.lettuce.core.cluster.RedisClusterClient.loadPartitions(RedisClusterClient.java:844) ~[lettuce-core-5.1.7.RELEASE.jar:?] ... 9 more
输入密码
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'
出现错误是因为我没有在我的机器上本地安装 redis 集群。
我使用这些步骤解决了问题
https://redis.io/download and run below commands Installation
$ 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