Lettuce 在集群中进行故障转移
Lettuce fail over in cluster
我正在尝试让 Lettuce 在旧主机失败后连接到新晋升的主机(前从机)。但是所有写入都停止了。故障主机重新连接后,写入继续,现在作为从属主机。并且它继续写入新的主人(以前的奴隶)。
我尝试设置定期拓扑刷新,以及针对所有事件的自适应刷新,但没有帮助。我必须使用其他设置吗?
这是我配置客户端的方式:
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());
我解决了问题。
因为生菜通常没有超时,它永远等待服务器的响应。设置超时导致一些交易失败,但在交易失败后,读写继续。
我正在尝试让 Lettuce 在旧主机失败后连接到新晋升的主机(前从机)。但是所有写入都停止了。故障主机重新连接后,写入继续,现在作为从属主机。并且它继续写入新的主人(以前的奴隶)。
我尝试设置定期拓扑刷新,以及针对所有事件的自适应刷新,但没有帮助。我必须使用其他设置吗?
这是我配置客户端的方式:
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());
我解决了问题。
因为生菜通常没有超时,它永远等待服务器的响应。设置超时导致一些交易失败,但在交易失败后,读写继续。