通过不同AWS帐户中的网络负载均衡器(AWS)访问Cassandra



我已经在aws帐户中的kubernetes上安装了cassandra(三个节点(。

我想通过aws端点(通过NLB(将相同的cassandra打开到不同的aws帐户,以便我可以访问此cassandra进行读/写。

我正在使用spark(在不同的AWS帐户中(在cassandra中加载数据,但我在加载数据时收到了警告。

WARN ChannelPool: [s0|/10.0.246.140:32034] Error while opening new channel (ConnectionInitException: [s0|connecting...] Protocol initialization request, step 1 (STARTUP {CQL_VERSION=3.0.0, DRIVER_NAME=DataStax Java driver for Apache Cassandra(R), DRIVER_VERSION=4.7.2, CLIENT_ID=b52c9022-561a-48d3-bd98-893c6c17f0c3, APPLICATION_NAME=Spark-Cassandra-Connector-application_1606197155514_0510}): failed to send request (java.nio.channels.NotYetConnectedException))

有人通过NLB打开Cassandra吗?我需要为NLB中的Cassandra中的每个节点制作单独的路由吗?如果是,怎么做?

您需要定义一个K8s服务,并通过Traefik等Ingress控制器将其公开,以便客户端(如Spark应用程序(可以从Kubernetes集群外部连接到您的Cassandra集群。

如果您使用的是DataStax Cassandra Operator(cass Operator(,它会使操作变得更容易,因为它预先配置了一个您可以使用的服务。请参阅我们在从Kubernetes集群外部连接到Cassandra中包含的Ingress示例。

如果您还没有意识到,请查看开源的K8ssandra。它是一个现成的平台,可以在Kubernetes中使用DataStax Cassandra Operator运行Apache Cassandra,但所有工具都捆绑在一起:

  • 用于自动维修的收割者
  • Medusa用于备份和恢复
  • 使用Prometheus+Grafana进行监控的度量收集器
  • k8s集群入口的Traefik模板

由于所有这些组件都是开源的,它们都是免费使用的,不需要许可证或付费订阅,但仍然有强大的社区支持。干杯

最新更新