【问题标题】:Cassandra Kubernetes Statefulset NoHostAvailableExceptionCassandra Kubernetes Statefulset NoHostAvailableException
【发布时间】:2021-02-07 00:53:57
【问题描述】:

我在 kubernetes 中部署了一个应用程序,它由 cassandra、一个 go 客户端和一个 java 客户端(以及其他一些东西,但它们与本次讨论无关)组成。 我们使用 helm 进行部署。 我们正在为 cassandra 使用有状态集和无头服务。 我们已将客户端配置为使用无头服务 dns 作为集群创建的联系点。

一切都很好。 直到所有节点都宕机,或者其他一些邪恶的节点组合宕机,我通过在所有 cassandra 节点上连续使用 kubectl delete 删除所有 Pod 来模拟它。

当我这样做时,客户端会抛出 NoHostAvailableException 在java中它的

    "java.util.concurrent.ExecutionException: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (tried: /10.200.23.151:9042 (com.datastax.driver.core.exceptions.UnavailableException: Not enough replicas available for query at consistency LOCAL_QUORUM (1 required but only 0 alive)), /10.200.152.130:9042 (com.datastax.driver.core.exceptions.UnavailableException: Not enough replicas available for query at consistency ONE (1 required but only 0 alive)))"
    which eventually becomes
    "java.util.concurrent.ExecutionException: com.datastax.driver.core.exceptions.NoHostAvailableException: All host(s) tried for query failed (no host was tried)"
in go its
   "gocql: no hosts available in the pool"

我可以使用 cqlsh 查询 cassandra,使用 nodetool status 似乎节点很好,所有新的 ips 都在那里 我使用的图像没有 netstat,所以我还没有确认它在预期的端口上侦听。

通过在两个客户端 pod 上执行 bash,我可以看到使用 nslookup 的 dns 是有意义的,但是...... netstat 没有显示任何已建立的与 cassandra 的连接(它们在我关闭节点之前就已经存在)

如果我重新启动客户端,一切正常。

我用谷歌搜索了很多(我的意思是很多),我发现的大部分内容都与从未有过有效的连接有关,最相关的事情似乎很老了(比如 2014 年、2016 年)。

所以一个节点宕机是非常基本的,我希望一切都能正常工作,cassandra 集群自行管理,在新节点上线时发现它们,平衡负载等等。

如果我将我所有的 cassandra 节点慢慢放下,一次一个,一切正常(我还没有确认负载是否适当地分配到了正确的节点,但至少可以正常工作)

那么,是否存在这种行为是预期的?即,我已将所有内容都删除,在第一个集群的最后一个被删除之前没有任何东西启动和运行。这是预期的行为吗?

对我来说,这似乎应该是一个容易解决的问题,不确定缺少/不正确的地方,我很惊讶两个客户端都表现出相同的症状,这让我觉得我们的 statefulset 和服务没有发生任何事情

【问题讨论】:

    标签: kubernetes cassandra statefulset


    【解决方案1】:

    我认为问题可能在于无头 DNS 服务。如果所有节点都完全关闭,并且在替换 pod 之前根本没有可用的节点通过服务提供,则可能会导致驱动程序挂起。

    我注意到您已使用 Helm 进行部署,但您可能对 cass-operator 的作者在 Kubernetes 中连接到 Cassandra 集群的 this document 感兴趣。。 p>

    我将联系一些作者并让他们在这里回复。干杯!

    【讨论】:

    • 谢谢,我们正在考虑转移到那里的一位运营商,现在才刚刚开始调查他们
    猜你喜欢
    • 1970-01-01
    • 2018-01-18
    • 2015-04-16
    • 2015-05-18
    • 1970-01-01
    • 2015-10-22
    • 2015-08-23
    • 2017-04-16
    • 2013-09-14
    相关资源
    最近更新 更多