【问题标题】:How does Cassandra driver update contactPoints if all pods are restarted in Kubernetes without restarting the client application?如果在 Kubernetes 中重新启动所有 pod,而不重新启动客户端应用程序,Cassandra 驱动程序如何更新 contactPoints?
【发布时间】:2020-11-26 08:35:04
【问题描述】:

我们创建了有状态集和无头服务。我们可以通过两种方式在应用程序中定义对等 ip:

  1. 在 contactPoints 中使用“cassandra-headless-service-name”
  2. 从 headless-service 获取对等 ip 并将对等 ip 外部化并在初始化连接时读取这些 ip。 到目前为止,一切都很好。 如果一个/一些 pod 重新启动,以上将起作用,而不是全部。在这种情况下,驱动程序会自动更新新的 ips。

但是,如果完全中断,这将如何工作?如果所有的 pod 都宕机了,当它们回来时,如果所有 pod 的 ip 都改变了(在 Kubernetes 中 IP 可以改变),应用程序将如何连接到 Cassandra?

【问题讨论】:

    标签: kubernetes cassandra datastax-java-driver spring-data-cassandra kubernetes-statefulset


    【解决方案1】:

    在完全中断时,您是对的,应用程序将没有任何有效的集群端点。在应用连接到 Cassandra 之前,需要刷新这些内容(并重新启动应用)。

    我们实际上编写了一个 RESTful API,我们可以使用集群查询当前有效的端点。这样,应用程序团队可以随时找到其集群的当前 IP。我建议做类似的事情。

    【讨论】:

      猜你喜欢
      • 2011-03-08
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-04
      相关资源
      最近更新 更多