У меня есть Java-клиент, подключающийся к Cassandra Cluster, который имеет 2 центра данных.Топология - это топология ньюторка.Нужно сбить 1 DC за один раз, чтобы выполнить некоторые действия по обслуживанию Кассандры.Протестировано на 1 DC.Возможность подключения к Cassandra, когда удаленный DC отключен, но не с локальным DC.Использование LOCAL_Quorum для чтения.
Проверено на 1 DC.Возможность подключения к Cassandra, когда удаленный DC отключен, но не с локальным DC.Использование LOCAL_Quorum для чтения.
Cluster cluster = null;
Builder builder;
try {
builder = Cluster.builder().addContactPoints(clusterURL.getPrimaryClusterCollection())
.withoutMetrics()
.withoutJMXReporting()
.withRetryPolicy(DowngradingConsistencyRetryPolicy.INSTANCE)
.withPort(9042)
.withLoadBalancingPolicy(new TokenAwarePolicy(DCAwareRoundRobinPolicy.builder().build()))
.withCredentials(new String(user.getUser()), new String(user.getPassword()));
// clusterURL.getPrimaryClusterCollection () выводит список имен хостов Cassandra, которые находятся в локальном DC.
Когда локальный DC отключен, я хочуприложение должно иметь возможность подключения к удаленному DC.Но это не удалось после попытки подключения к именам хостов, перечисленным в clusterURL.getPrimaryClusterCollection ().
Если я жестко закодирую имена хостов из обоих DC в addContactPoints, я могу подключиться к Cassandra, сохранив локальный DCdown.
builder = Cluster.builder (). addContactPoints ("local-DC-host1.homedepot.com", "local-DC-host2.homedepot.com", "remote-DC-host1.homedepot.com», "remote-DC-host2.homedepot.com")
Вопрос в том, как убедиться, что я смогу подключиться к удаленному DC, если мой локальный DC не работает, не сохраняя оба имени хоста DC Cassandra в addContactPoints.Есть ли дополнительная опция, которую мне нужно использовать?Я думаю, что хранить имена хостов обоих DC в точках addcontact не очень хорошая идея.