Вот некоторые вещи, которые я обнаружил с помощью соединений и Cassandra (и, кстати, я считаю, что Cassandra имеет одну из лучших конфигураций HA в любой базе данных, с которой я работал за последние 25 лет).
1) Убедитесь, что у вас есть все компоненты, указанные в вашем соединении. Вот пример некоторых компонентов подключения, но есть и другие (возможно, вы уже сделали это):
cluster = Cluster.builder()
.addContactPoints(nodes.split(","))
.withCredentials(username, password)
.withPoolingOptions(poolingOptions)
.withLoadBalancingPolicy(
new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder()
.withLocalDc("MYLOCALDC")
.withUsedHostsPerRemoteDc(1)
.allowRemoteDCsForLocalConsistencyLevel()
.build()
)
).build();
2) Если не работает весь DC, в котором вы работаете, вы можете получить ошибки. Кассандра не переключается на альтернативные DC, если каждый узел не находится в DC. Если не все узлы не работают и ваш клиент не может удовлетворить настройки CL клиента, вы получите ошибки. Я действительно надеялся, что, когда я некоторое время назад проводил тестирование, что если вы не смогли достичь клиентского CL в ЛОКАЛЬНОМ DC (даже если некоторые узлы в текущем DC работали) и альтернативных DC, это могло бы произойти автоматически, но это не так (так как я в последний раз проверял).
Может, это поможет?
-Джит