首页 > 解决方案 > 集群中的生菜故障转移

问题描述

在旧的失败后,我试图让生菜连接到新提升的主人(前奴隶)。但是所有的写入都停止了。失败的主机重新连接后继续写入,现在作为从机。它继续写入新的主设备(前从设备)。

我尝试设置定期拓扑刷新,以及所有事件的自适应刷新,但它没有帮助。我必须使用其他设置吗?

这就是我配置客户端的方式:

final List<RedisURI> redisURIs = buildRedisURIs(redisServerSettings.getNodes());
final RedisClusterClient client = RedisClusterClient.create(clientResources, redisURIs);
final ClusterTopologyRefreshOptions refreshOptions =
        ClusterTopologyRefreshOptions.builder()
                                     .enableAllAdaptiveRefreshTriggers()
                                     .adaptiveRefreshTriggersTimeout(Duration.ofMinutes(2))
                                     .refreshTriggersReconnectAttempts(2)
                                     .enablePeriodicRefresh(Duration.ofMinutes(10))
                                     .build();
client.setOptions(ClusterClientOptions.builder().topologyRefreshOptions(refreshOptions).build());

标签: javaredislettuce

解决方案


我解决了这个问题。

因为 lettuce 通常没有超时,所以它永远等待服务器的响应。设置超时导致一些事务失败,但在失败的事务之后,读取和写入继续。


推荐阅读