使用 java-driver 连接到 Kubernetes 上的 Cassandra
Connect to Cassandra on Kubernetes using java-driver
我们正在建立一个 Cassandra 集群,使用 k8ssandra helm chart,它公开了几个服务,我们的客户端应用程序正在使用 datastax Java-驱动程序和 运行 在与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))
Adding all nodes?
您绝对不需要将所有节点都添加为接触点。即使在香草 Cassandra 中,只添加一些也可以,因为驱动程序会八卦并找到其余部分。
Adding just the service address?
您需要做的就是绑定服务地址的第二个选项。服务地址的好处在于它将占集群中 IP 的 changing/removing。
k8ssandra Helm 图表部署了 CassandraDatacenter 对象和 cass-operator 以及许多其他资源。 cass-operator 负责管理 CassandraDatacenter。它创建 StatefulSet(s) 并创建几个无头服务,包括:
- 数据中心服务
- 种子服务
- 全部pods服务
种子服务仅解析为 pods 的种子。其名称的格式为 <cluster-name>-seed-service
。由于 pods 的短暂性质,cass 运算符可能会将不同的 C* 节点指定为种子节点。不要使用种子服务连接客户端应用程序。
所有 pods 服务解析为所有 Cassandra pods,无论它们是否就绪。其名称的格式为 <cluster-name>-<dc-name>-all-pods-service
。该服务旨在促进监控。不要使用所有 pods 服务来连接客户端应用程序。
数据中心服务解析为就绪 pods。其名称的格式为 <cluster-name>-<dc-name>-service
这是您应该用于连接客户端应用程序的服务。不要直接使用 Pod IP,因为它们会随时间变化。
我们正在建立一个 Cassandra 集群,使用 k8ssandra helm chart,它公开了几个服务,我们的客户端应用程序正在使用 datastax Java-驱动程序和 运行 在与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))
Adding all nodes?
您绝对不需要将所有节点都添加为接触点。即使在香草 Cassandra 中,只添加一些也可以,因为驱动程序会八卦并找到其余部分。
Adding just the service address?
您需要做的就是绑定服务地址的第二个选项。服务地址的好处在于它将占集群中 IP 的 changing/removing。
k8ssandra Helm 图表部署了 CassandraDatacenter 对象和 cass-operator 以及许多其他资源。 cass-operator 负责管理 CassandraDatacenter。它创建 StatefulSet(s) 并创建几个无头服务,包括:
- 数据中心服务
- 种子服务
- 全部pods服务
种子服务仅解析为 pods 的种子。其名称的格式为 <cluster-name>-seed-service
。由于 pods 的短暂性质,cass 运算符可能会将不同的 C* 节点指定为种子节点。不要使用种子服务连接客户端应用程序。
所有 pods 服务解析为所有 Cassandra pods,无论它们是否就绪。其名称的格式为 <cluster-name>-<dc-name>-all-pods-service
。该服务旨在促进监控。不要使用所有 pods 服务来连接客户端应用程序。
数据中心服务解析为就绪 pods。其名称的格式为 <cluster-name>-<dc-name>-service
这是您应该用于连接客户端应用程序的服务。不要直接使用 Pod IP,因为它们会随时间变化。