Подключиться к Cassandra в Kubernetes с помощью java-драйвера
Мы запускаем кластер Cassandra, используя диаграмму управления k8ssandra, он предоставляет несколько сервисов, наши клиентские приложения используют Java-драйвер datastax и работают в том же кластере k8s, что и кластер Cassandra (это этап тестирования).
CqlSessionBuilder builder = CqlSession.builder();
Каков рекомендуемый способ подключения приложения (через Драйвер) к Cassandra?
Добавить все узлы?
for (String node :nodes) {
builder.addContactPoint(new InetSocketAddress(node, 9042));
}
Добавить только адрес службы?
builder.addContactPoint(new InetSocketAddress(service-dns-name , 9042))
Добавление адреса службы как неразрешенного? (это вообще сработает?)
builder.addContactPoint(InetSocketAddress.createUnresolved(service-dns-name , 9042))
2 ответа
Чарт k8ssandra Helm развертывает объект CassandraDatacenter и оператор cass в дополнение к ряду других ресурсов. cass-operator отвечает за управление CassandraDatacenter. Он создает StatefulSet(s) и создает несколько автономных сервисов, включая:
- служба центра обработки данных
- сервис семян
- все службы стручков
Служба семян разрешает только пакеты, которые являются семенами. Его имя имеет вид
Служба всех модулей разрешает доступ ко всем модулям Cassandra независимо от того, находятся ли они в состоянии готовности. Его имя имеет вид
Служба центра обработки данных преобразуется в готовые модули. Его имя имеет вид
Добавить все узлы?
Вам определенно не нужно добавлять все узлы в качестве точек контакта. Даже в ванильной Cassandra можно добавить только несколько, так как водитель будет сплетничать и найдет остальные.
Добавить только адрес службы?
Ваш второй вариант привязки к сервисному адресу — это все, что вам нужно сделать. Хорошая вещь в адресе службы заключается в том, что он будет учитывать изменение/удаление IP-адресов в кластере.