【发布时间】:2014-03-19 20:27:16
【问题描述】:
我有以下 DSE 集群设置:
DC 卡桑德拉
- Cassandra 节点 1
直流太阳能
- Solr 节点 1
- Solr 节点 2
- Solr 节点 3
- Solr 节点 4
每个 DC 的复制因子为 1
我的问题:
- 为了执行搜索,我将 Solr SELECT 查询发送到特定节点。这引入了单点故障。如果节点关闭,则查询失败。有没有办法“查询集群/DC”而不是查询特定节点?
- 为了使结果集完整,我需要通过“shards”参数手动指定其他节点。这是预期的行为还是我配置错误?我的期望是这应该是自动的。我不想每次将节点添加到集群时都必须编辑应用程序的源代码
- 从问题 #1 和 2 开始,如果任何其他节点(除了我发送 Solr 查询的特定节点之外)出现故障,大多数情况下,我都会收到类似“范围分片不可用... ”或“服务器连接在...被拒绝”。同样,这破坏了容错能力。是否可以让集群返回部分结果?(即仅来自可用节点的数据)
总的来说,我的目标是:
- 使应用尽可能容错 - 如果任何节点出现故障,应用仍应显示来自剩余节点的部分结果
- 使底层 DSE 拓扑对应用程序透明。每次添加或删除节点时,我都不需要编辑应用程序的源代码/配置
【问题讨论】: