Cassandra 错误: "Unable to complete request: one or more nodes were unavailable."

标签 cassandra theory distributed-database

我是 Cassandra 的新手,只是设置并使用它并使用 cqlsh 测试不同的场景。

我目前在 2 个数据中心有 4 个节点,如下所示(当然具有正确的 IP):

a.b.c.d=DC1:RACK1 a.b.c.d=DC1:RACK1 a.b.c.d=DC2:RACK1 a.b.c.d=DC2:RACK1

默认=DCX:RACKX

到目前为止,一切似乎都有意义,除了我故意关闭一个节点只是为了查看结果行为,并且我注意到我无法再在其余节点上查询/插入数据,因为它会导致“无法完成请求” :一个或多个节点不可用。”

我知道某个节点不可用(我是故意这样做的),但是分布式数据库的要点之一不是即使某些节点出现故障也能继续支持功能吗?为什么关闭一个节点会导致一切完全停止?

我错过了什么?

任何帮助将不胜感激!!

最佳答案

您的假设是正确的,一个节点关闭后仍然允许您查询集群,但有一些事情需要考虑。

我假设“nodetool status”返回该 DC 的预期结果(即“UN”表示 UP 节点,“DN”表示 DOWNed 节点)

检查以下内容:

  • 连接的一致性级别(默认为 ONE)
  • 键空间复制策略和因素(默认为“简单”,机架/直流不知道)
    • 在 cqlsh 中,“描述键空间”

请注意,如果您一直在使用复制因子,则需要在节点上运行“nodetool 修复”。

更多阅读here

关于 Cassandra 错误: "Unable to complete request: one or more nodes were unavailable.",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30469594/

相关文章:

theory - 最难的编程解释

encoding - 理论: "Lexical Encoding"

sql-delete - 如何从 DFS 表中删除所有记录但保留其架构?

linux - Linux 上的分布式事务

java - php、java、python、node.js 中 Cassandra 驱动程序的拓扑感知

cassandra - 如何确保一致性哈希有效?

database - Cassandra frozen 关键字含义

cassandra - InvalidQueryException 尽管有二级索引?

unit-testing - 为什么单元测试不应该使用数据库?

mysql - 网络爬虫使用哪个数据库,如何在分布式环境中使用 MySQL?